프로젝트/Webhacking.kr

[Webhacking.kr] Challenge(old) 25번 문제

Uggjjini 2021. 7. 8. 11:09

문제 페이지는 해당 페이지와 같다.

 

 

서버에 존재하는 디렉터리와 파일의 속성을 보여주고 하단 회색 박스안에 hello world 라는 문구가 출력되는 것을 확인할 수 있다.

 

 

해당 페이지의 URL을 확인하니 ?file=hello 라고 명시되어 있다. 

 

이를 통해 회색 박스안에 있는 hello world 라는 문구는 hello.php 파일이 실행 된듯 하다.

 

이와 같이 URL의 file 파라미터 값을 변경하여 flag.php 파일을 실행 시킨다.

 

 

flag. php 코드 안에 FLAG가 존재한다고 출력된다.

 

해당 파일의 코드를 확인하기 위해서 LFI 취약점을 이용한 PHP Wrapper 을 활용한다.

 

PHP Wrapper 방법 중 php://filter/를 사용한다.

 

php://filter/는 다양한 I/O 스트림을 다루는 데 사용하는데, 이 wrapper은 encode/decode 형태로 서버 안에 존재하는 문서들을 열람할 수 있다.

 

 

www.[웹사이트 주소]/?file=php://filter/convert.base-64-encode/resource=파일명

 

 

해당 형식으로 base64 인코딩 된 파일의 내용을 확인 할 수 있다.

 

해당 형식을 참고하여 파일명은 flag로 지정해 URL를 입력한다.

 

 

 

디코딩된 flag.php 내용이 출력된다.

 

이를 base64 디코딩을 시켜주는 사이트를 사용하여 디코딩한다.

 

https://www.convertstring.com/ko/EncodeDecode/Base64Decode

 

Base64로 디코딩 - 온라인 Base64로 디코더

당신의 Base64로 여기에 텍스트를 디코딩 복사 파일로 디코딩 Base64로 다운로드 :

www.convertstring.com

 

<?php
  echo "FLAG is in the code";
  $flag = "FLAG{this_is_your_first_flag}";
?>

 

디코딩 결과 Flag 값이 나왔다.

 

이 값을 webhacking.kr 사이트의 auth 로 이동하여 입력하면 해당 문제가 풀리는 것을 확인 할 수 있다.