Web/Wargame
[Dreamhack] php-1
와븨
2022. 11. 10. 01:05


문제 사이트로 들어가면 다음과 같이 나타난다.

List 페이지에 들어가니 플래그가 있는 flag.php가 있는 것을 확인할 수 있었다.

flag.php 페이지에 들어가니 역시나 플래그는 바로 뜨지 않았다.

문제에서 말했던 /uploads/flag.php 경로가 맞는데 왜 뜨지 않는걸까?

view.php 파일을 확인해보니 /flag가 필터링되어 Permission denied가 뜨는 것을 알 수 있었다.

index.php를 보면 GET['page']를 통해 입력을 받아서 include로 실행한다.
위와 같이 /var/www/uploads/flag의 경로로 실행해봤더니


can you see $flag?라는 글자가 뜨는 것을 확인할 수 있었다.
php에서 flag를 우회하는 방법 중 하나는 flag 필터를 우회하는 방법이다.
php://filter/를 base64로 인코딩하여 주로 사용한다고 한다.
php://filter를 base64로 인코딩하는 방법을 사용하면 다음과 같다.
http://host3.dreamhack.games:19403/?page=php://filter/read=convert.base64-encode/resource=/var/www/uploads/flag


flag 필터를 우회하여 들어오니 base64로 인코딩된 플래그를 얻을 수 있었다.

얻은 base64 코드를 디코딩하니 플래그를 얻을 수 있었다.