it-swarm-korea.com

Java 파일 이름에서 널 바이트 삽입이 가능합니까?

11
AviD

다음 리소스에 따라 :

우리는 자바에서 널 바이트 주입이 가능하다는 결론을 내릴 수 있습니다.

14
anonymous

널 바이트 주입은 문자열 처리 방식의 불일치에 따라 다릅니다.

예 : Java 문자열의 내용과 독립적으로 문자열의 길이를 저장하는 반면, C는 문자열의 시작 부분에서 시작하여 Null Byte를 검사하여 문자열의 끝을 나타냅니다.

결과적으로 Java 코드는 "/etc/shadow%00.jsp"와 같은 문자열에서 "요청한 파일이 .jsp로 끝나는가"와 같은 검사를 수행 할 수 있습니다 (여기서 % 00은 null을 나타냄) 이 문자열을 "new FileInputStream ()"에 전달하면 기본 OS (Windows 및 Linux 모두)에서 "/ etc/shadow"를 열려고합니다.

(Windows에서/etc/shadow를 열려고하는 관련성은 독자의 연습으로 남습니다. :-)

7
Rogan Dawes

파일 이름의 널 바이트 주입은 Java 7 업데이트 40 (2013 년 9 월경에 릴리스 됨)에서 수정되었으므로 최종적으로 수정되었습니다.

5
Dave Wichers