Wargame/Dreamhack

[Web] php-1 Write-up

forensic-focus 2025. 5. 13. 20:05

https://dreamhack.io/wargame/challenges/46

문제 설명에 LFI 취약점을 이용하라는 말에 해당 취약점을 찾아봤다.

 

LFI  ( Local File inclusion )란?

공격자가 공격 대상 웹 애플리케이션을 통해 서버의 파일을 불러오거나 실행할 수 있게 하는 보안 취약점이다.

  • php와 같은 서버 측 스크립트 언어에서 발견되며, 애플리케이션의 입력 검증 부족으로 인해 발생.
  • 주로 php 코드 상에서 include() 사용 시 input에 대한 필터링 이루어지지 않아 발생.

웹 서핑을 하며 찾아보면서 적힌 글들을 보면 PHP Wrapper라는 우회 방법을 쓰면 된디고 많이 적혀 있었다.

https://www.php.net/manual/en/wrappers.php

 

PHP: Supported Protocols and Wrappers - Manual

PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.

www.php.net

 

 

이제 문제를 살펴보자.

문제의 main.php의 모습이다.

 

해당 List에 있는 flag.php를 눌러보자.

 

dreamhack.games:22348/?page=view&file=../uploads/flag.php

get방식으로 page에 view 넘기고, 접근하고 싶은 파일의 경로를 준거다.

flag.php 안에 있는 걸 보고싶었지만 권한이 없어 거부 됬다. 문제 코드 파일을 살펴보자.

해당 index.php 맨 첫 화면의 코드이다. include 함수를 통해 page 변수에 php 이름을 입력 받는다.

page변수에 view를 주면 view.php 로 이동하는 것이다.

view.php의 코드이다. file 변수에 경로를 줄때, flag라는 문자열이 필터링 되는 것을 볼 수 있다.

문제 설명에 플래그는 /var/www/uploads/flag.php 경로에 있다고 한다.

 /var/www/uploads/flag.php  해당 경로에 접근을 해야 flag가 나오는 것을 확인할 수 있는데 flag 단어가 필터링이 되어 flag를 얻지 못하는 상황

 

그럼 아까 찾아봤던 php wrapper을 사용해봐도 되는거 아닌가? 라는 생각을 했다.

 

php wrapper 사이트에 들어가 다시 목차를 확인해 보았다.

1. file://
- 로컬 파일 시스템에 접근
2. php://
- I/O stream 방식을 사용하여 접근하기
- base64를 이용해서 encode/decode 형식으로 파일 읽는다.

 

2번을 택하여 flag 필터링을 우회해보도록 하겠다. 

아까의 경로는 /?page=view&file=../uploads/flag.php 이렇게 넘어가는 경로였다.

page에 wrapper를 사용해서 flag.php를 바로 읽는 방식으로 진행해야한다.

view.php에서 flag 문자열을 필터링 하는 과정을 거치지 않아도 된다.

http://host8.dreamhack.games:22348/?page=php://filter/convert.base64-encode/resource=/var/www/uploads/flag

해당 위의 우회한 경로를 우회해보면 아래와 같이 flag를 얻을 수 있다.

이 얻을 flag로 decode 해보자.

 

 

flag 획득!

'Wargame > Dreamhack' 카테고리의 다른 글

[System] Return Address Overwrite Write-up  (0) 2025.05.14
[Web] Ctrl-C Write-up  (0) 2025.05.13
[Forensic] snowing! Write-up  (0) 2025.05.12
[Forensic] FFFFAAAATTT Write-up  (0) 2025.02.21
[Forensic] Basic_Forensics_1 Write-up  (0) 2025.01.30