STDiO CTF 2022 QUAL [Writeup]

CTF รอบคัดเลือก Online ระยะเวลา 2 วัน (7/10)

Piravit Chenpittaya
6 min readSep 25, 2022

--

สวัสดี ผมกานต์ เล่น CTF เพื่อความสนุก
บทความนี้จะมาแชร์ข้อที่ผมทำได้ โดยงานนี้ทำได้ 7 ข้อครับ 😂

Fast Travel for You

1 — Dark Web Investigation : OSINT
2 — Partial-Knowledge Proof : PROGRAMMING
3 — I’m Web Breaker : WEBSEC
4 — Super Generator : CRYPTO
5 — Packet Sniffer : NETSEC
6 — I’m Code Breaker : CRYPTO
7 — What the Hex : PROGRAMMING

1 — Dark Web Investigation

Category: OSINT
Description: สวัสดี คุณมีเอกสารที่ยังไม่ได้อ่าน 1 ฉบับ message.pdf

เปิดไฟล์ดูจะพบว่ามีสองหน้า แต่หน้าที่สองดันว่างเปล่า โคตรน่าสงสัย
ถ้าลองไฮไลต์ดูก็จะพบว่ามีข้อความอยู่แอบอยู่นี่เอง

โดยในข้อความจะประมาณว่าอยากให้เราช่วยหาเบาะแส cybercriminal ให้หน่อยและแนบลิงค์ด้านล่างนี้ไว้

Proof: https://www.dropbox.com/s/v2a7nkecdv5vtir/leaker.png?dl=0
(Link Password is hidden in this document’s metadata)

ลิงค์ต้องใช้รหัสผ่านด้วยแต่มีการวงเล็บไว้ว่ารหัสซ่อนอยู่ใน metadata ของเอกสาร

$ exiftool message.pdf

ได้รหัสผ่านมาแล้วคือ h4fxh44dse93yf73

สิ่งที่ได้คือรูป forum ของเว็บไซต์ blackmarket.onion ที่มีการแจกจ่ายข้อมูล database ดังรูปด้านบน แต่เราอะไรไม่ได้เพราะมันเป็นแค่รูป
แต่ก็มาคำใบ้จากผู้จัดงานว่า

ไม่รอช้าเข้าไปหาทันที (ใช้ sherlock หาก็ได้)

https://www.instagram.com/perseus_inwza/
https://twitter.com/perseus_inwza

ที่รู้ว่าใช่คนเดียวกันเพราะว่ามี caption blackmarket.onion อยู่

ทางฟั่ง IG คือแต่ละรูปมีการใส่ข้อความเข้ารหัสไว้ด้วยแต่ว่าลองถอดดูแล้ว ไม่ได้อะไรดีๆเลย แถมโดน rickroll อีกกก

9y7R3oNVrzB9GaoJKvC1po8vAYWyf7TYuPRnqJ2GsWQQg5gLKYyERpkpJF https://www.youtube.com/watch?v=IkxhsTwNybUaHR0cHM6Ly93d3cuaGFja3RoZWJveC5jb20v 
https://www.hackthebox.com/
aHR0cHM6Ly9oYXZlaWJlZW5wd25lZC5jb20v
https://haveibeenpwned.com/
uggcf://gelunpxzr.pbz/
https://tryhackme.com/
uggcf://jjj.nepuvir.bet/
https://www.archive.org/
uggcf://jjj.lbhghor.pbz/jngpu?i=tDyZZQ8nhZf https://www.youtube.com/watch?v=gQlMMD8auMsaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1kUXc0dzlXZ1hjUQ== https://www.youtube.com/watch?v=dQw4w9WgXcQ

ส่วนในด้าน twitter แต่ละเว็บเป็นแค่หน้าเปล่าๆมีแต่คำคมเป็น comment ซะงั้น

แต่ฝั่ง IG จะเห็นได้ว่ามีรูปหนึ่งที่น่าสนใจคือรูปของเว็บ archive.org ที่จะมีการเก็บข้อมูลหน้าเก่าๆของเว็บในอินเทอร์เน็ตไว้ ลองเอา ad9w9rzdkgvzdd9m.p7z.pw/
ไปหาประกฏว่ามีอยู่ด้วยเป็นของวันก่อนงานแข่ง

เลยเอา link ทั้งหมดใน twitter ใส่เข้าไปแล้วหาดูสุดท้ายก็เจอ flag แอบอยู่ใน
https://ad9w9rzdkgvzdd9m.p7z.pw/47952233.html

STDIO2022_1{81dff162533302de81b86988193d0680}

2 — Partial-Knowledge Proof

Category: PROGRAMMING
Description: จากข้อมูลที่ได้รับใน Challenge ที่ 1 หาทางเจาะเข้าสู่ระบบระบบ Criminal Web Portal

ด้วยข้อมูลจากข้อแรก
อีเมล perseus_ (ตัวไอ) nwza_007@blackmarket (ดอท) onion
https://m9sd7kenwo72ji7h (ดอท) p7z (ดอท) pw/nrnxpexdhit4jxsf/login

ทำให้เราได้ email แล้วหน้าเว็บหนึ่งมา

perseus_inwza_007@blackmarket.onion
https://m9sd7kenwo72ji7h.p7z.pw/nrnxpexdhit4jxsf/login

มีข้อสังเกตุคือเราต้องใส่ captcha ด้วยแต่เป็นการคำนวณที่จะเปลี่ยนทุกครั้ง
ตอนแรกผมก็เขียนสคริปล็อคอินด้วยรหัสจาก wordlists รัวๆนะแต่ว่าไม่เวิร์คครับ ทำข้อ 5, 6 เสร็จแล้วมันยังไม่ผ่านเลย5555

ก็เลยตั้งใจอ่าน ajax ที่ใช้ล็อคอินดีๆ

ที่น่าสนใจคือมีการคืนเลข 3 กลับมาด้วยถ้ารหัสใกล้เคียง (แบบมีบางส่วนถูก)
ก็เลยเขียนสคริปใหม่ค่อยๆเดาถ้าเป็นได้เลข 3 ก็ให้เก็บไว้แล้วเดาไปเรื่อยๆ

PYTHON SCRIPT HERE

email: perseus_inwza_007@blackmarket.onion
password: ab4jtiku3r

พอเข้าได้ก็กดเป็น Stop the attack ก็ได้ flag เลยครับ

STDIO2022_2{21e5de79fb74743d65ee8b9340c8dda7}

3 — I’m Web Breaker

Category: WEBSEC
Description: จากข้อมูลที่ได้รับใน Challenge ที่ 2 หาทางเจาะเข้าฐานข้อมูลระบบ Criminal Web Portal เพื่อตามหา Super Generator

ข้อนี้มีคำใบ้ด้วยว่าใช้ SQL injection แบบ union attack และน่าจะใช้ parameter id id ที่เข้าได้ก็มีแค่ 1,2 ก็ติดอยู่นานมาก sqlmap ก็ใช่ไม่ได้ ทางทีมงานก็มีใบ้มาอีกว่า

แต่ก็ยังงงว่าจะแสดงยังไงเลยลอง 'union+select+1234 — +-
ปรากฏว่าแสดงผ่าน comment ใน html นีเอง (ทำไมตอนแรกไม่เห็นว้าา)

ก็เลยลองอ่าน table_name ออกมาก่อนเลยด้วย

'+UNION+SELECT+table_name+FROM+information_schema.tables+WHERE+table_schema=database()--+-

ได้ files, pages ซึ่งดูๆแล้ว pages นี่น่าจะแค่ หน้าแสดงเลยไปดู files ดีกว่า

'+UNION+SELECT+column_name+FROM+information_schema.columns+WHERE+table_name='files'--+-

มีที่น่าสนใจคือ filename กับ data
ลองดึง data ด้วย '+UNION+SELECT+data+FROM+files — +- ได้ base64
ส่วน filename '+UNION+SELECT+filename+FROM+files — +- ได้ backup.zip

แปลว่า base64 นี้คือไฟล์ zip ก็เอาไปแปลงเลย base64 to zip
แต่ file ดันมีรหัสอีก

ทำการ crack ด้วยวิธีเดิมๆเลยด้วย john

$ zip2john backup.zip -o hash.john
$ john -w=/usr/share/wordlists/rockyou.txt hash.john

ได้ flag ใน file flag3.txt
pass: waveporinwzaa

ส่วน super_generator.py คือข้อต่อไป

STDIO2022_3{f420bbec3934a9a9861064e13c3c3e13}

4 — Super Generator

Category: CRYPTO
Description: จากข้อมูลที่ได้รับใน Challenge ที่ 3 ทำการวิเคราะห์โปรแกรม Super Generator เพื่อสร้าง Keygen

super_generator.py

super_generator_attack.py

เป็นการหารหัสมาใส่ในเว็บเดิมจากข้อที่แล้วแต่เป็น id = 2

เอาไฟล์ super_generator.py จากข้อที่แล้วมาแกะๆดู

ดูแล้วตอนแรกก็แปลกทำไมเซ็ค level1 สองครั้งสงสัยเขียนผิด555

โดยผมเริ่มที่ level1 ก่อนเพราะคือส่วนที่เซ็คว่า code ที่ว่าต้องมี pattern อย่างไร สรุปคือ

1111AAAAA-1111A-AAAAAA-1

1 แทนเลขอะไรก็ได้ 0–9
A แทนตัวอักษรอะไรก็ได้ A-Z
และผมจะแบ่งแต่ละช่องว่า code0-code1-code2-code3 นะครับ

แล้วกลับมาดู level0 บอกว่าสี่ตัวแรกต้องเป็นปีของปีค.ศ.นี้ คือ 2022
ได้ว่า 2022AAAAA-1111A-AAAAAA-1

ต่อมา level3 บอกว่า code1 ต้องเป็น 26–0- (‘-’ คือยังไม่รู้) จึงได้ว่า
งานนี้จัดโดย 2600 Thailand งั้นนี่นะจะเป็น 2600- แน่ๆ
2022AAAAA-2600X-AAAAAA-1

จาก level4 จะมีการทำ XOR ระหว่าง code0 และ code2
จึงเขียนสคริปมาตรวจดูพบว่าถ้าลอง
code0 เป็น 2022XXXXX
จะได้ code1 เป็น ABCDXX

ลองไปลองมาถ้าใส่ ST หลัง 2022 จะได้ ABCDEF มันดูเข้ากันมากเลย เดาต่อว่ามา ST เหลืออีก 3 ตัวต้องเป็น STDIO แน่ๆ 55555

code0 เป็น 2022STDIO
จะได้ code1 เป็น ABCDEF
ซึ่ง code1 ดูๆแล้วผมแบบ เอออันนี้แหละ

2022STDIO-26001-ABCDEF-1

เหลือ 2 ตัวที่ยังไม่รู้ และเหลือ level2 ที่ยังไม่ถอดรหัส
เลยเขียนสคริปเดาที่เป็นไปได้ออกมา

เอาอันไหนไปใส่ก็ได้ ได้ flag เหมือนกัน
(จริงๆแล้วรหัสในข้อนี้เป็นอะไรก็ได้แค่ต้องผ่าน pattern level ทั้งหมดก็พอครับ เพราะงั้นที่ผมทำแบบเดาๆก็เลยถูกด้วย5555)

STDIO2022_4{6fe1ae3aef6f18a202809611ab8710ff}

5 — Packet Sniffer

Category: NETSEC
Description: สายลับของเราได้แอบเข้าไป ดักข้อมูลระดับเครือข่าย ของกลุ่มแฮกเกอร์ต่างชาติ ที่มากบดานแถว พระราม 9 แต่ระหว่างขี่จักรยานกลับศูนย์บัญชาการ มีกลุ่มก่อการร้ายที่สนับสนุนแฮกเกอร์ดังกล่าว ดักทำร้ายสายลับของทำให้เราจนอาการโคม่า ทำให้ศูนย์บัญชาการของเราไม่สามารถถอดรหัสข้อมูลภายในได้ คุณได้รับมอบหมายภารกิจให้ ถอดรหัสข้อมูลเครือข่ายไร้สายที่ถูกเก็บในไฟล์ singlegateway.pcap และวิเคราะห์หาข้อมูลที่น่าจะทำให้ทางศูนย์บัญชาการสามารถ ตามจับกลุ่มแฮกเกอร์ดังกล่าวได้
singlegateway.pcap

เปิดด้วย wireshark แล้ว ดูเหมือนว่าจะมีการใช้ wifi IEE802.11 แต่มีการเข้ารหัสไว้ จึงทำการถอดรหัสด้วย aircrack-ng

$ aircrack-ng -z -w /usr/share/wordlists/rockyou.txt singlegateway.pcap

โดยเลือกตัวที่ชื่อว่า LongCatCoffee
ได้รหัสผ่านคือ shabbashabba

เพื่อให้ wireshark อ่านได้ให้นำรหัสผ่านไปใส่ใน peference (decryption keys) IEE802.11

แล้วหาไปเรื่อยๆ ก็พบข้อมูลหน้าเว็บหนึ่ง (filter ด้วย tcp.stream eq 6 ก็ได้นะ)

ลงมาหน่อยก็จะเห็น flag

STDIO2022_5{79717d6fef0b5334bbb9a46ecbac22fc}

6 — I’m Code Breaker

Category: CRYPTO
Description: ต้องผ่าน Challenge 5 ก่อน

html ของโจทย์ข้อนี้

html ที่แก้แล้ว

จากข้อที่แล้วเราจะได้หน้าเว็บมาหน้าหนึ่งลองสร้างเป็น .html จะเห้นได้ว่าให้เดา Secret

และถ้าอ่านโค้ดในเว็บจะเอารหัสที่ใส่เข้าไปแฮชด้วย sha256 ทีละตัวแล้วเอามาเทียบว่าเท่ากับที่กำหนดไหมถ้าใช่คือรหัสนี้ถูกต้อง

ซึ่งมันคือแฮช One-way function ผมเลยใช้วิธีเดาแทนโดยการเอาตัวอักษรที่เป็นไปได้มาลองแฮชดูว่าเท่ากันไหมกับตำแหน่งเดียวกันใน array p ถ้าใช่ก็เอาตัวนั้นแล้วทำไปเรื่อยๆจนครับ 94 ตัว (เป็นความยาวของ p)

ได้ secret ออกมาคือ
STDIO2022_6{21cdd536dff599a164dc0bba9b46c294} http://ce7pm7y9vm4p9i9k.p7z.pw/7o2whx2nexxb2k94/

STDIO2022_6{21cdd536dff599a164dc0bba9b46c294}

7 — What the Hex

Category: PROGRAMMING
Description: ต้องผ่าน Challenge 6 ก่อน

เข้าเว็บที่ได้จากข้อที่แล้ว http://ce7pm7y9vm4p9i9k.p7z.pw/7o2whx2nexxb2k94/

แต่ลอง view page source พบว่ามีการแนบลิงค์ภาพด้านล่างไว้

หมายความว่า MD5 สองครั้งจะได้ bfe87b627465bf1d09e1b95cf4995eXX

ผมลองเขียนสคริปมาสุ่ม Hex ที่เป็นไปได้สองตัวสุดท้าย
แต่จริงๆไม่ต้องก็ได้โยนเข้าไปใน crackstation.net เลย

ได้ว่า
username: admin
password: z,iyd86I

STDIO2022_7{d5c1f14942fd5abc95073dfc09a03421}

ข้อแปดเกี่ยวกับการเกะเข้าไปดูใน .apk ซึ่งผมไม่รู้จะทำยังไง 😭
เลยพอแค่นี้ครับ ถ้าใครได้บอกผมหน่อย ติดใจมากๆ ขอบคุณครับ55555

--

--

Piravit Chenpittaya
Piravit Chenpittaya

Written by Piravit Chenpittaya

call me karn | Computer of Engineering : PSU | IG: karn.svg | git: https://github.com/karnzx /

No responses yet