본문 바로가기

IT/웹 해킹(Web Hacking)

webhacking.kr [문제 25번]



25번 문제를 풀어보겠다.







해당 문제의 배점은 150point로 확인된다.






해당 페이지를 확인하니


리눅스에서 디렉토리 및 파일을 확인(ls -l)할 때 나오는 화면이다.



조금만 해당 페이지를 분석해보자.






별다른 정보는 찾을 수 없다.



한번 url을 변경하여 해당 페이지에 접속해보자.










해당 파일을 접속해본 결과 


메인 페이지의 인풋박스 안에 보여졌던 hello world라는 문자열을 담고있었다.


그리고 한가지더





해당 url에서


hello라는 문자열을 GET방식으로 전달한 결과 보여졌다.


그러나 hello가 아닌 임의의 다른 문자열을 입력해도 hello.txt.의 내용을 보여줬다.




그렇다면


확장자 .txt고정되어있고, 만약 해당 파일이 없으면


디폴트로 hello.txt 파일을 보여주는 것으로 확인된다.




이를 토대로


index.php의 소스코드를 예상해보자.








다음과 같이 소스코드가 작성되어 있을 것이다.



그렇다면 확장자가(.txt)가 결정 되어있을때 어떻게


.php의 확장자를 전달할까?



문자열을 전달하는 규칙을 생각해보자.







문자열의 마지막에 널 문자(NULL)이 들어가, 문자열의 마지막을 뜻한다.



그렇다면


GET방식으로 해당 문자열을 전달할 때,


NULL문자를 포함하여 입력하면


뒤에 덧 붙혀진 문자열이 무시가 될것이다.



index.php(널).txt(널)




이런식으로 말이다.


한가지 덧붙히자면 .txt란 문자열 뒤에도 널문자가 붙어있다는 것이다.



그렇다면 이를 고려하여 


GET방식으로 전달해보자.









해당 비밀번호가 출력되었다.


이를 Auth에 입력해보자.










리눅스의 기본적인 명령어와 문자열 규칙을 안다면


해결할 수 있는 문제였다.


풀이완료.









'IT > 웹 해킹(Web Hacking)' 카테고리의 다른 글

webhacking.kr [문제 27번]  (3) 2018.04.01
webhacking.kr [문제 26번]  (0) 2018.03.31
webhacking.kr [문제 24번]  (0) 2018.03.31
webhacking.kr [문제 23번]  (0) 2018.03.31
webhacking.kr [문제 22번]  (0) 2018.03.30