Thailand CTF 2019 – What is a URL Again (Write-up)
ในข้อนี้โจทย์มีชื่อว่า What is a URL Again สามารถดาวน์โหลดโจทย์ได้ที่ลิงค์นี้ >>> What is a URL Again.zip
ทำการแตกไฟล์ออกมา จะได้ไฟล์ memdump.mem ออกมา อันนี้ไม่ต้อง file ก็น่าจะรู้นะว่าไฟล์อะไร แฮ่! 🤣
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/1.png?resize=628%2C219&ssl=1)
ลอง binwalk ดูซะหน่อยว่ามีไรบ้าง … 🧐
เพียบ… 😵
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/2.png?resize=740%2C279&ssl=1)
ในที่นี้เราจะใช้ volatility ในการวิเคราะห์ข้อมูล เนื่องจากเป็น Volatile Data (สงสัยถามกู๋โลดนะครับ 🤣)
ขั้นแรกลองรัน Imageinfo ดูก่อนเพื่อดูข้อมูลคร่าวๆของไฟล์ memdump ไฟล์นี้$
volatility -f memdump.mem Imageinfo
ซึ่งต่อไปเราต้องระบุ Windows Profile ด้วย โดยในที่นี้จะใช้ Win7SP1x64
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/3.png?resize=740%2C257&ssl=1)
ต่อไปจะทำการลิสต์ process ทั้งหมดขึ้นมา โดยเราสามารถใช้ได้หลายคำสั่ง เช่น pslist, psscan, pstree, psxview ในที่นี้ใช้ psxview เนื่องจากดูเป็นระเบียบมากกว่าตัวอื่น ไม่รกดี 😅$ volatility -f memdump.mem --profile=Win7SP1x64 psxview
จากทุก Process ที่มี มีตัวที่น่าสนใจที่สุดคือ notepad.exe PID: 2892
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/4.png?resize=740%2C464&ssl=1)
ไหนลองเช็คซิ ว่าเปิดไฟล์อะไรอยู่หรือเปล่า 🧐
SECRET!! !!!! น่าสนใจๆ 🤔
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/5.png?resize=740%2C163&ssl=1)
งั้น Dump เฉพาะในส่วนของ notepad ออกมาละกัน ก่อนอื่นต้องรู้หมายเลข PID ของ Notepad ก่อน ซื่งจะอยู่ในขั้นตอนก่อนหน้าที่ได้ทำการลิสต์ process ซึ่งก็คือ 2892$ volatility -f memdump.mem --profile=Win7SP1x64 memdump -p 2892 --dump-dir .
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/6.png?resize=740%2C194&ssl=1)
ไฟล์ลองค้นด้วยชื่อไฟล์ที่เราเจอจากขั้นตอนก่อนหน้าซิ (SECRET!!.txt) 🧐
เอ๊ะ SeCrEtHeRe แพทเทิร์นคุ้นๆแฮะ 🤔 ซึ่งมีทั้งหมด 3 ชุดด้วยกัน
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/7.png?resize=740%2C473&ssl=1)
จะเห็นได้ว่ามันคือ Url escape (encode) นั่นเอง แต่จะสังเกตได้ว่า ค่าแรกสุด % จะหายไป ซึ่งก็แค่เติมลงไปให้เรียบร้อย แล้วไปทำการ unescape/decode ให้เรียบร้อย
![](https://i1.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/8.png?fit=604%2C130&ssl=1)
หลังจากการทำ Url unescape เราก็จะได้ค่าเลขฐานสองมา ซึ่งจะเห็นได้ว่า 2 ชุดแรกค่าเหมือนกัน งั้นเราก็จะโฟกัสแค่ค่าแรกพอ อันหลังไม่ใช่แน่นอน (ขออนุญาตรวบรัด 🤣)
![](https://i1.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/9.png?fit=604%2C78&ssl=1)
ให้เราไปทำการแปลงให้เป็น string ซึ่งจะได้ผลลัพท์ทีเป็น Base64 ออกมา c2hvcnR1cmwuYXQvaXRHVTI=
![](https://i1.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/10.png?fit=604%2C218&ssl=1)
ให้ทำการ Decode Base64 จะได้เป็นลิงค์อันนึงออกมา
$ echo c2hvcnR1cmwuYXQvaXRHVTI= | base64 -d
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/11.png?resize=695%2C130&ssl=1)
ลองเอาไปเช็คก่อนซิว่าลิงค์จริงๆคืออะไร แอบฝังอะไรมาให้หรือเปล่า 😆
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/12.png?resize=740%2C243&ssl=1)
เอ๊ะ ไฟล์ Flag.zip 🤔
ให้ทำการโหลดมาโลด ว่าแต่คิดว่าจะเปิดดู Flag ได้เลยมั้ย?
แน่นอนว่า.. ไม่มีทาง!! 🤣
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/13.png?resize=740%2C308&ssl=1)
ลองแตกไฟล์ดูซิ
แน่นอนว่าติดรหัสผ่าน 😂
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/14.png?resize=590%2C164&ssl=1)
รหัสแตกไฟล์อยู่ไหนนนนนน 😭
งั้นลอง grep notepad dump file ดูเลยแล้วกัน เริ่มง่ายๆที่
pass, password, P@ssw0rd … ไม่เจอ 😢
งั้นลองใช้ Grep with regex ซิ$ strings 2892.dmp| grep -i -P "^P@.?.?.?.?.?d"
เย่! P@S5w0rDH3rE มันต้องเป็นรหัสแตกไฟล์แน่ๆ !!!
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/15.png?resize=740%2C446&ssl=1)
ไหนลองแตกไฟล์ซิ ใช่รหัส P@S5w0rDH3rE มั้ยนะ 🤔
ก็ยังไม่ใช่ … 😢
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/14.png?resize=590%2C164&ssl=1)
ไปคุ้ยใน raw เลยละกัน ลอง Search ด้วยคำที่ได้มาเมื่อกี้ดู
เอ๊ะ Magic Bytes คุ้นๆแฮะ 🤔
แน่นอนว่ามันคือ Magic Bytes ของไฟล์ JPEG ทีนี้จะรู้ได้ไงว่าตั้งแต่ตรงไหนถึงตรงไหน?
ก็เลื่อนดูไปเรื่อยๆไงล่ะ 😂
เห็นอะไรมั้ยครับ?
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/16.png?resize=655%2C561&ssl=1)
จะเห็นว่าเมื่อเลื่อนไปเรื่อยๆ จะมีข้อมูลอีกชุดที่ดูแล้วไม่น่าใช่ข้อมูลของรูปแน่ๆ FixedButton อะไรไม่รู้ 😵
ดังนั้นเราจึงเอาเฉพาะแค่ตรง offset ประมาณ 0C992400 ถึงประมาณ 0C992EC0
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/17.png?resize=624%2C276&ssl=1)
ไหนมาเช็ค Magic Bytes ดูอีกรอบซิว่าถูกต้องหรือเปล่า 🧐
![](https://i2.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/18.png?fit=604%2C182&ssl=1)
ไฟล์รูปภาพที่ได้มา จะเห็นว่ามีข้อความอยู่ด้านใน และแน่นอนว่ามันคือรหัสผ่านสำหรับการแตกไฟล์
38nVw%Z_#jdtZ>M?
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/19.jpg?resize=227%2C67&ssl=1)
ทำการแตกไฟล์ด้วยรหัสผ่านที่ได้มาจากรูปในขั้นตอนก่อนหน้า
![](https://i0.wp.com/blog.sornram9254.com/wp-content/uploads/2019/09/20.png?resize=466%2C170&ssl=1)
ได้ Flag มาแล้วจ้าาาา
THCTF{@!Th1S_ls_A-f1Ag!@}