문제 페이지는 해당 페이지와 같다.
해당 페이지에는 파일을 업로드하는 부분과 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 메뉴로 들어가 입력하면 해당 문제가 풀린다.
'프로젝트 > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge(old) 43번 문제 (0) | 2021.07.14 |
---|---|
[Webhacking.kr] Challenge(old) 42번 문제 (0) | 2021.07.14 |
[Webhacking.kr] Challenge(old) 39번 문제 (0) | 2021.07.14 |
[Webhacking.kr] Challenge(old) 38번 문제 (0) | 2021.07.14 |
[Webhacking.kr] Challenge(old) 36번 문제 (0) | 2021.07.13 |