반응형
webhacking.kr old 41번 문제풀이(Writeup)
문제를 들어가면 위와 같이 출력된다. 파일 업로드 창이 보인다. 코드를 확인해보자.
isset 함수를 통해 php 함수로 파일이 되어 있는지 확인하고, 파일 이름에 . < > /가 들어가면 필터링된다.
그리고 업로드된 파일은 upload_dir에 복사하여 저장한다. 분명 파일업로드 취약점일 것 같은데 어떤 방식으로 취약점이 발생하는지 잘 모르겠다.
일단 upload_dir에 파일을 복사하여 저장하니까 접속을 시도했더니 안들어가진다. 웹쉘을 올리더라도 경로에 접속이 안되므로 webshell을 실행할 수 없다. 그렇다면 이번 문제는 경로와 관련된 문제라고 생각했다.
copy 함수에 대해 생각해봤다. copy함수는 파일이름의 글자 수를 255자까지 받을 수 있다. 따라서 256자 이상을 주면 오류가 발생할 것이다. 이를 이용해서 고의적으로 오류를 발생시켜보기로 했다.
예상한 것과 같이 오류가 발생했다. 우리가 코드에서 봤을 때 ./upload_dir/fn 과 비슷한 구조가 보인다.
./4b0e87fef7b5e8ba83894970c9806042e5d6ec9a/shell.asp
혹시 이게 upload_dir인가 싶어서 위 주소에 아까 업로드한 웹쉘 파일을 함께 URL에 입력했더니 되지 않았다. 그래서 이번엔
./4b0e87fef7b5e8ba83894970c9806042e5d6ec9a/shell
확장자를 제거하고 입력해봤다.
flag가 출력되는 것을 볼 수 있다.
728x90
'웹해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr old 54번 문제풀이(Writeup) (1) | 2022.09.23 |
---|---|
webhacking.kr old 38번 문제풀이(Writeup) 및 Log Injection 설명 (0) | 2022.09.22 |
webhacking.kr old 26번 문제풀이(Writeup) (0) | 2022.09.20 |
webhacking.kr old 18번 문제풀이(Writeup) SQL Injection관련 워게임 (1) | 2022.09.19 |
webhacking.kr old 17번 문제풀이 (0) | 2022.09.18 |