입력한 Text와 파일을 업로드할 수 있는 페이지가 나왔다.
나는 뭔가 있을 까봐 입력하여, 코드를 살펴보니 아무 것도 없었다.
파일와 text를 입력하여 코드를 살펴보니, 역시 아무것도 없었다.
하지만 내가 업로드한 PHP은 운영체제에 명령을 전달하는 코드였고, 나는 내가 업로드한 /upload/test.php
에 명령어를 전달하였다.
그러나, 해당 코드는 실행이 안되고 읽기만 되는 것으로 다른 방법으로 접근을 해야한다.
GET /?mode=del&time=1622299124 HTTP/1.1
Host: webhacking.kr:10006
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://webhacking.kr:10006/
Accept-Encoding: gzip, deflate
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: PHPSESSID=31qq1t47nvtsrqr4bjchovl30v
Connection: close
그래서 마지막 기능인 delete 기능을 살펴보니, /?mode=del&time=1622299124
이 서버에 전달 되는 것을 볼 수 있었다.
여기서 나는 한가지 가정을 세울 수 있었다.
내가 만약 코드를 구현하였으면, mode=del
를 넣겨줬으면 rm
명령어를 통해 삭제를 진행했을 것이다.
그럼 내가 업로드한 파일의 이름을 쓸 수 밖에 없을 텐데, 만약 파일의 이름이 파일명;ls
이면 파일을 삭제 후 ls이 실행 될 것이다.
Filename 부분을 수정하여 test.php
인 것을 test.php;ls
으로 수정하고, 해당 부분을 삭제하였다.
그랬더니, ls이 실행이 되었고 flag를 획득할 수 있었다.
'워게임 > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Old - 29 Write Up (0) | 2021.05.31 |
---|---|
[Webhacking.kr] Old - 53 Write Up (0) | 2021.05.30 |
[Webhacking.kr] Old - 35 Write Up (0) | 2021.05.29 |
[Webhacking.kr] Old - 8 Write Up (0) | 2021.05.28 |
[Webhacking.kr] Old - 3 Write Up (0) | 2021.05.28 |