[문제]
[풀이]
문제에 접속하면 다음과 같은 화면이 나타난다.
List 페이지로 이동하면 플래그가 들어있는 flag.php를 확인할 수 있다.
flag.php를 클릭하면 다음과 같이 권한이 거부되었다는 메시지가 출력된다. 우선 소스 코드를 살펴보자.
view.php를 살펴보면 preg_match 함수를 통해 문자열 flag를 필터링하고 있음을 알 수 있다. 따라서 flag.php를 확인하기 위해서는 해당 필터링을 우회해야한다.
http://host1.dreamhack.games:24563/?page=view&file=../uploads/flag.php
http://host1.dreamhack.games:24563/?page=php://filter/convert.base64-encode/resource=/var/www/uploads/flag
이때, 위에서 사용했던 것처럼 page=view&file=../uploads/flag.php 형식이 아닌 page에 wrapper를 사용해서 곧장 flag.php를 읽는 방식으로 접근한다. 그렇게 되면 view.php에서 문자열 flag를 필터링하는 과정을 거치지 않게 된다.
php wrapper를 이용하여 다음 flag 필터를 우회하였다.
문자열이 잘려서 제대로 나오지 않아 개발자 도구를 열어 확인했다.
해당 문자열은 base64로 encoding 되어 있는 상태이기에 다시 decoding을 진행해준다. decoding을 진행해주면 다음과 같이 플래그를 확인할 수 있다.
'웹 > 드림핵' 카테고리의 다른 글
web-misconf-1 (0) | 2022.05.10 |
---|---|
simple-ssti (0) | 2022.05.10 |
proxy-1 (0) | 2022.05.04 |
pathtraversal (0) | 2022.05.01 |
NoSQL-CouchDB (0) | 2022.05.01 |