Challenge 25 시작!!
첫 페이지는 hello.php 인 듯 하다.
file 에 php 를 제외한 이름을 써주면 해당 php 로 이동되었다.
아무리 봐도 감을 못잡겠다...
결국 구글링을 통해 이번 문제에서 php Wrapper 라는 개념이 필요하다는 것을 알 수 있었다.
wrapper 는 실제 데이터의 앞에서 어떤 틀을 잡아주는 데이터 또는 다른 프로그램이 성공적으로 실행되도록 설정하는 프로그램이다.
PHP Wrapper 의 여러 wrapper 중 이번 문제에서는 filter 를 사용해야 한다.
filter wrapper 를 사용할 때 encode / decode 옵션을 사용하여 서버 안에 존재하는 문서들을 열람할 수 있다.
예를 들어
php://filter/convert.base64-encode/resource=a.php
처럼 a.php 의 소스를 base64 로 인코딩한 것을 출력할 수 있다.
그리고 나서 인코딩하여 출력된 결과를 다시 디코딩하면 원하는 결과를 얻을 수 있게 된다.
이 개념을 이번 문제에 대입해보면
?file=php://filter/convert.base64-encode/resource=flag
와 같다.
그 결과, 위와 같이 base64 로 인코딩된 값이 나오고 이것을 다시 디코딩해보자.
console 에서 atob() 로 디코딩하였다. 그 결과
FLAG{this_is_your_first_flag} 라는 값을 얻어냈다!
성공!!
'WarGame > webhacking.kr' 카테고리의 다른 글
Challenge 27 (0) | 2020.02.28 |
---|---|
Challenge 26 (0) | 2020.02.27 |
Challenge 24 (0) | 2020.02.26 |
Challenge 23 (0) | 2020.02.26 |
Challenge 22 (0) | 2020.02.26 |