Game/webhacking.kr

[350] prob48

ellen28 2015. 6. 23. 19:47

350점 48번 문제이다.

메모라는 댓글창? 인데 간단한 메모를 쓰고, 파일 업로드를 할 수 있다.


파일 업로드를 해보려고 했는데, 

파일명은 3글자를 넘어갈 수 없다고 한다.


그렇다면 paros로 파일명을 조작해서 업로드 할수 있으니까 

간단한 웹쉘을 만들고 파일명을 줄여보기로 했다.

파일명을 줄이니 업로드가 되긴했는데...

업로드한 파일을 보려고 하니 null을 출력하기만 한다.

다른 파일을 업로드 해보아도 마찬가지..

웹쉘을 업로드해서 푸는 방식은 아닌 것같다.


업로드된 파일을 삭제해보았다.

URL을 확인해보니 mode가 del이고, 파일을 업로드했던 시간을 함께 GET방식으로 보내주고있다.

파일을 삭제 할 때 어떻게 동작할가 생각해보았는데 

주로 디렉토리에 있는 파일을 삭제할때 쓰는 rm명령어를 사용할 것이다.

그렇다면 파일을 삭제하는 과정은 아래와 같다고 추측할 수 있다.

파일이 업로드 된 시간을 찾아서 파일명을 넘겨줌

system( rm /upload/$fillename )

정확하진 않지만 아마 대충 이런 모양이지 않을까 싶다 ㅋㅋㅋ..

예전에 해커스쿨 풀때도 비슷한 문제가 나온적이 있었는데

리눅스에서는 명령어에 ;를 붙여서 여러개의 명령어를 동시에 보내줄수 있었다.

그렇다면 파일명이 ;ls인 파일을 업로드한 후 , 삭제하면

rm /upload/;ls로 앞의 명령어를 수행한 후 , 디렉토리에 있는 모든 파일들을 출력하게 될 것이다.

그렇게 되는지 확인해 보았다!

예상대로 디렉토리에 있는 파일들을 출력했다.


왠지 답이 있을 것같은 페이지로 이동하니 문제가 풀렸다!

48번 문제도 클리어!