본문 바로가기

웹해킹/webhacking.kr

webhacking.kr old 41번 문제풀이(Writeup)

반응형

webhacking.kr old 41번 문제풀이(Writeup)

 

old 41번 문제풀이 1

문제를 들어가면 위와 같이 출력된다. 파일 업로드 창이 보인다. 코드를 확인해보자.

 

 

 

old 41번 문제풀이 2

isset 함수를 통해 php 함수로 파일이 되어 있는지 확인하고, 파일 이름에 . < > /가 들어가면 필터링된다. 

그리고 업로드된 파일은 upload_dir에 복사하여 저장한다. 분명 파일업로드 취약점일 것 같은데 어떤 방식으로 취약점이 발생하는지 잘 모르겠다.

 

 

 

 

old 41번 문제풀이 3

일단 upload_dir에 파일을 복사하여 저장하니까 접속을 시도했더니 안들어가진다. 웹쉘을 올리더라도 경로에 접속이 안되므로 webshell을 실행할 수 없다. 그렇다면 이번 문제는 경로와 관련된 문제라고 생각했다.

 

 

 

 

old 41번 문제풀이 4

copy 함수에 대해 생각해봤다. copy함수는 파일이름의 글자 수를 255자까지 받을 수 있다. 따라서 256자 이상을 주면 오류가 발생할 것이다. 이를 이용해서 고의적으로 오류를 발생시켜보기로 했다.

 

 

 

old 41번 문제풀이 5

예상한 것과 같이 오류가 발생했다. 우리가 코드에서 봤을 때 ./upload_dir/fn 과 비슷한 구조가 보인다. 

./4b0e87fef7b5e8ba83894970c9806042e5d6ec9a/shell.asp

혹시 이게 upload_dir인가 싶어서 위 주소에 아까 업로드한 웹쉘 파일을 함께 URL에 입력했더니 되지 않았다. 그래서 이번엔

 

 

./4b0e87fef7b5e8ba83894970c9806042e5d6ec9a/shell

확장자를 제거하고 입력해봤다.

 

 

old 41번 문제풀이 6

 

flag가 출력되는 것을 볼 수 있다.

 

728x90