Advanced Strings Secret (100 pts) - Cryptography Write-up
โจทย์
วัตถุประสงค์ของการเข้ารหัสลับคือต้องมีเฉพาะผู้รับและผู้ส่งเท่านั้นที่เข้าใจรหัสลับนั้นได้ แต่คนส่วนใหญ่มักใช้วิธีการเดากระบวนการเข้ารหัสลับเพื่อใช้ในการถอดรหัส ข้อความลับในโจทย์ข้อนี้ก็เช่นกัน จงใช้ทักษะพื้นฐานของการถอดรหัสนั่นคือการ “เดา” เพื่อค้นหา Flag ที่คุณต้องการ
หมายเหตุ รูปแบบของ Flag ที่เป็นคำตอบของข้อนี้คือ flag{message_10digits}
ดาวน์โหลดไฟล์
| ไฟล์ | ดาวน์โหลด |
|---|---|
| All Files | 📦 GitHub Folder |
ข้อสังเกต
-
ชุดอักขระที่ใช้กว้างมาก เมื่อใช้ CyberChef พบ Magic Wand แปลงจาก Base85
-
หลังถอด Base85 แล้วได้สตริงใหม่ที่อักขระจำกัดอยู่ในเซต
[0-9 A-Z $%*+-.:/]สามารถเดาได้ว่านี่เป็น ลักษณะของ Base45 (https://datatracker.ietf.org/doc/rfc9285/) -
เมื่อถอด Base45 ได้ข้อความ/โค้ดที่เต็มไปด้วยสัญลักษณ์ประหลาด ๆ เช่น
=<)?;+ฯลฯ ซึ่งตรงกับเอกลักษณ์ของ Malbolge (ภาษา esolang)
แนวคิดการแก้โจทย์
- ตรวจสอบลักษณะของ ciphertext สามารถใช้ CyberChef ถอดรหัสได้จาก Base85
- ถอดจาก Base85 ได้ข้อความที่เป็น Base45
- ถอดจาก Base45 ได้โค้ด Malbolge
- นำโค้ด Malbolge ไป execute ด้วย interpreter จะทำให้ได้ Flag
ผลลัพธ์
เมื่อนำโค้ด Malbolge ไป execute ด้วย interpreter จะได้ Flag:
flag{If_Y0u_Kn0w_Y07_Know_7453980724}เครดิต
แนวคิดจากคุณ รอลงอาญา (คุณ nack) และ ทีม PoE (คุณ Sirati)
Writeup by netw0rk7 | Original Repo