문제 정보
php로 작성된 Back Office 서비스입니다.
LFI 취약점을 이용해 플래그를 획득하세요. 플래그는 /var/www/uploads/flag.php에 있습니다.
풀이 힌트
1. 공격 백터 파악
2. PHP Wrapper
문제 풀이
더보기
문제 페이지에 들어가니, List와 View 페이지가 있었다.
공격 백터를 확인하기 위해 두 페이지를 살펴보겠다.
List 페이지를 확인해보니, 두 가지 목록이 있었다.
제일 의심가는 flag.php를 확인해보니, View 페이지로 이동하였고 flag.php의 내용을 보지 못하게 막았다.
hello.json은 잘 읽어지는 것으로 보인다.
근데 이상한 점이 보통 페이지를 이동할 때, /list.php?param=~~로 제어할텐데 index.php의 page 파라미터로 페이지를 제어하는 것으로 보인다. 예상하는 것은 index.php의 page 파라미터는 include에 들어가는 것으로 보인다.
현재 파악한 공격 백터는 밑과 같다.
- index.php의 page 파라미터
- index.php의 file 파라미터
가장 유력한 공격 백터는 page 파라미터이니, page 파라미터에 공격을 시도하겠다.
직접적으로 flag.php를 호출하면, can you see $flag?를 출력하는 것으로 보인다.
나는 위와 같은 검사를 우회하기 위해 PHP wrapper를 이용하여 LFI 공격을 시도하였다.
- expect://
expect는 작동이 안되는 것을 확인 할 수 있었다. - php://filter/
다행히 php://filter는 작동되어 base64로 인코딩된 flag.php의 내용이 출력되었다.
확인해보니, 직접 flag.php를 호출하면 can you see $flag?가 출력된 이유는 php 특성상 안 나왔던 것 였다.
그래서 $flag이라는 문구를 줘서 php 코드 상에 flag가 있다고 힌트를 주는 것이 아닐까? 라는 생각을 하게 되었다.
'Wargame > Dreamhack' 카테고리의 다른 글
[Dreamhack Web - Lv 1] Carve Party (0) | 2021.11.01 |
---|---|
[Dreamhack Web - Lv 1] Mango (0) | 2021.11.01 |
[Dreamhack Web - Lv 1] web-misconf-1 (0) | 2021.10.28 |
[OverTheWire System - Bandit] Level 11 >> Level 12 (0) | 2021.10.28 |
[Dreamhack Web - Lv 1] command-injection-1 (0) | 2021.10.27 |
Comment