티스토리 뷰

25번 문제의 초기화면

리눅스 방식으로 파일의 이름과 권한이 나타나있다. 읽기는 누구나 가능하다고 나와있다.

 

 

 

 

 

 

 

hello.txt로 들어가니 초기화면의 회색 텍스트 상자에 출력되었던 hello world가 보인다. 

초기화면에서는 hello.txt가 실행되서 회색 텍스트 상자에 출력되는 것 같다.

 

 

 

 

 

 

 

코드를 확인해 봤으니 별 내용이 없다.

 

 

 

 

 

 

 

초기화면의 URL인데, ?file=hello 부분이 힌트인 것 같다.

GET방식으로 "file"이라는 변수에 "hello"라는 값을 넣어 전송하고 있다.

hello라는 값을 전달했기때문에 hello.txt가 실행된 것으로 보인다.

 

 

 

위와 같은 원리로

password.php를 실행시켜 그 내용이 회색 텍스트 상자에 출력된다면 답을 알아낼 수 있을 것이다.

 

 

 

 

따라서 "file"이라는 변수에 "password"라는 값을 넣어 전송시켜 보았지만 hello.txt가 실행되었다.

 

 

 

 

 

"password.php"를 전송시켜도 hello.txt가 실행된다.

 

초기페이지의 URL에서 ?file=hello인 것을 통해 짐작해보면

서버에서 GET방식으로 file 값을 전달받은 후(클라이언트로 부터)

file=file+".txt" 를 이용해 file == "hello.txt" 로 결합시켜서 hello.txt파일을 실행하는 것으로 보여진다.

 

file == "password.php" 로 만드는 방법은 file뒤에 ".txt"가 결합되지 않도록하는 것이다.

c언어에서는 \0(null character)를 문자열의 끝으로 인식한다. null character를 url로 인코딩 하면 %00인데, "file"의 값으로 "password.php%00"이라는 값을 전달한다면

file=file+".txt"라는 코드가 실행되도 file == password.php가 될 것이다.

 

 

 

 

 

 

?file=password.php%00 을 입력하였더니 진짜로 password.php가 실행되었다.

 

 

 

 

 

클리어

 

 

 

 

 

정답과 관련은 없지만, index.php도 실행되는지 확인해보려고 "index.php%00"을 입력했더니 hello.txt가 실행되었다.

따라서 이 프로그램은

 

if(file.equals("password.php")

password.php실행

else

hello.txt실행

 

과 같이 이루어져 있다고 보여진다.

 

 

 

 

 

 

'hacking > webhacking.kr' 카테고리의 다른 글

<webhacking.kr> - 52번  (0) 2018.02.01
<webhacking.kr> - 42번  (0) 2018.02.01
<webhacking.kr> - 47번  (0) 2018.01.31
<webhacking.kr> - 38번  (0) 2018.01.31
<webhacking.kr> - 26번  (0) 2018.01.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함