ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Webhacking.kr] Challenge 48 풀이
    Wargame/Webhacking.kr 2019. 5. 25. 19:48

    48번 문제로 들어가자마자 XSS가 일어났다는 팝업창이 뜬다.

     

     

    팝업창을 끄면, 파일과 메모를 업로드할 수 있는 페이지가 있다.

     

     

    아무 파일이나 업로드해 전송해보았다. (파일명은 3글자를 넘을 수 없다고 해서 확장자를 지우고 전송했다.)

     

    전송해보니 내가 입력한 메모와 함께 upload file과 delete 버튼이 생성됐다.

     

     

    upload file을 클릭했더니 null이라는 메시지만 출력되었고, Delete를 클릭했더니 메시지와 업로드 파일이 삭제되었고 URL도 바뀌었다.

     

    upload file 클릭 후

     

    Delete 후 URL

     

    파일을 삭제한 후, 삭제된 파일 경로(webhacking.kr ~~ /upload/[파일명])로 들어가보면 에러가 출력된다.

     

     

    이를 통해 delete 클릭 시에는 메모 뿐만 아니라 업로드한 파일도 삭제한다는 것을 알 수 있다. 즉, 파일 삭제 시에 리눅스 명령어 중 하나인 rm 명령어를 사용한다고 추측할 수 있다.

     

    rm upload/[파일명]

     

    이 점을 이용하여 rm 명령어 수행 뒤에 바로 ls 명령어가 수행될 수 있도록 파일명을 조작하면 문제가 해결된다.

     

    리눅스에서는 여러 명령어를 동시에 삽입할 때 아래 2가지 기호를 사용한다.

    • && : 앞의 명령어가 성공하는 경우에만 && 뒤의 명령어가 실행된다.
    • ; (세미콜론) : 앞의 명령어의 성공 여부와 상관 없이 ; 뒤의 명령어가 실행된다.

     

    이 문제에서는 마지막 ls 명령어를 무조건 실행해야 하므로 &&가 아닌 ;를 사용해야 한다.

    파일명이 ;ls인 파일을 업로드한 후 Delete를 해주자.

     

     

    Delete를 하면 ls 명령어가 실행되어 여러 파일명이 나타난다.

     

     

    마지막 부분에 있는 zwitter_admin.php로 이동하면 문제가 해결된다.

     

Designed by Tistory.