TigerDemon

burp suite로 Path traversal 실습 1 본문

2025-SWLUG/웹해킹

burp suite로 Path traversal 실습 1

호랑2D 2025. 10. 26. 19:25

https://webhacking.kr/challenge/web-19/

 

Challenge 41

 

webhacking.kr

 

버퍼 스위트에서 해당 링크로 들어가면 아래 사진처럼 뜬다.

여기서 view-source를 누르면 아래 사진처럼 뜬다.

 

중요 코드 분석

<?php
  
if(isset($_FILES['up']) && $_FILES['up']){
    
$fn $_FILES['up']['name'];
    
$fn str_replace(".","",$fn);
    
$fn str_replace("<","",$fn);
    
$fn str_replace(">","",$fn);
    
$fn str_replace("/","",$fn);

이때 $fn 는 업로드된 파일 이름으로 보안을 위한 처리를 하긴 하는데 단순히 ".",<,>,/만 제거한다.


 $f = @fopen("./{$upload_dir}/{$fn}","w");
    @
fwrite($f,$flag);
    @
fclose($f);
    echo(
"Done~");

방금 업로드한 파일을 다시 열어서 안에 $flag 값을 써버린다.

즉, 업로드한 파일의 내용은 다 지워지고 $flag 문자열로 덮어써진다.

그래서 파일을 업로드하면 사실상 $flag 값을 얻을 수 있는 파일이 만들어진다.


핵심 코드

error_reporting(E_ALL);
  
ini_set("display_errors"1);

error_reporting() 은 PHP의 오류처리 함수로 두 가지의 옵션이 있다.

error_reporting(0) // 오류 출력 끄기

error_reporting(E_ALL) // 모든 오류 보기

와 같이 써서 위 두줄은 php의 에러메시지를 화면에 출력하는 역할을 한다.

=> 디렉터리 구조에 대한 정보가 필요하기 때문에 파일명을 길게해서 에러를 내는 방법으로 풀어야 한다.


실습

순서

1. intercept on

2. 파일 선택해서 사진 올리고 upload

3. filename 찾아서 사진 3처럼 입력

4. forward

 

위 순서처럼 진행하면 아래 사진처럼 뜨는데 에러 메시지와 함께 디렉토리 경로를 알 수 있게 되었다.

 

빈 파일을 만들어주는데 이름을 간단하게 만들고 아래 사진처럼 업로드 한 뒤 url 뒤에 위 디렉토리 경로와 파일 이름을 적어주고 엔터를 치면 된다.