프로젝트/Webhacking.kr

[Webhacking.kr] Challenge(old) 41번 문제

Uggjjini 2021. 7. 14. 22:20

문제 페이지는 해당 페이지와 같다.

 

 

해당 페이지에는 파일을 업로드하는 부분과 view-source 링크가 존재한다.

 

view-source 링크를 통해 페이지의 소스코드를 먼저 확인한다.

 

 

파일이 업로드 되면 업로드 된 파일명에 . < > /  의 4개의 문자가 존재한 경우 공백으로 치환된다.

 

그리고 업로드된 파일은 /{$upload_dir} 아래로 복사되고 그 파일 안에 flag 값이 쓰여진다.

 

업로드 된 파일의 위치를 알아야  해당 파일을 열람할 수 있다.

 

가장 상단 php 부분을 보면 아래와 같은 코드가 존재한다.

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

 

이 코드는 에러를 출력하는 코드로 파일의 경로를 포함하여 출력해주기 때문에 에러를 통하여 파일의 경로를 알아내보도록 한더,

 

버퍼 오버플로우를 이용하여 에러를 발생시켜본다.

 

파일을 업로드하는 경우 파일명은 최대 255자 까지 입력할 수 있기 때문에 brup suite를 이용하여 파일명을 255자 이상으로 보내 에러를 발생시킨다.

 

 

Warning 이라는 문구와 함께 파일의 경로가 출력되었다.

 

/{$upload_dir} 는 /4b0e87fef7b5e8ba83894970c9806042e5d6ec9a 임을 알 수 있으며 해당 경로에 있는 test.txt 파일로 이동한다.

 

(단, . 은 공백으로 치환 되기 때문에 제외하여 입력해준다.)

 

FLAG 값이 출력되는 것을 확인 할 수 있었고 이를 webhacking.kr 의 Auth 메뉴로 들어가 입력하면 해당 문제가 풀린다.