Write-Up (Reverse Engineering) : กิจกรรม SWU CTF แข่งขันชิงธงจาก มศว. สำหรับน้อง ๆ สาย Cybersecurity

ผมคิดว่าหลาย ๆ คนที่เคยอ่านเรื่องราวของผมมาบ้าง น่าจะพอทราบกันดีว่าปกติผมสอบใบเซอร์อย่างเดียว ไม่ได้เคยลองทำงานหรือลงแข่งในสนามจริงของ Cybersecurity มากนัก โดยเฉพาะฝั่ง Red Team ที่ผมไม่ค่อยเชี่ยวชาญเท่าไร

แต่ล่าสุดทางมหาวิทยาลัยศรีนครินทรวิโรฒ (Srinakharinwirot University)ได้จัดกิจกรรมการแข่งขัน SWU Capture the Flag Competition 2025 เป็นการแข่งขันเจาะระบบเพื่อชิงธง (Capture The Flag) ซึ่งเขาเปิดรับเฉพาะเด็กมหาวิทยาลัย และบังเอิ๊ญบังเอิญ ผมก็ยังมีสถานะเป็นนักศึกษาอยู่ รุ่นน้องที่เรียนในคณะด้วยกันก็เลยชวนผมมาสมัคร

CTF คืออะไร

อย่างที่เกริ่นไว้ Capture The Flag หรือ CFT คือกิจกรรมที่ให้เราค้นหาธง ซึ่งเขาจะมีแพทเทิร์นของธงมาให้เราไว้ใช้มองหา (คือถ้ามันไม่มีแพทเทิร์นบอก หลายคนคงสับสนแหละว่าสรุปข้อความไหนคือธง) ส่วนมากจะอยู่ในรูปแบบข้อความ และจะซ่อนอยู่ในส่วนต่าง ๆ ของเกมการแข่งขัน

กิจกรรมนี้นิยมอย่างมากในสาย Cybersecurity และโดยเฉพาะฝั่ง Pentesting เพราะเราจะได้มีการเจาะระบบต่าง ๆ ทั้งซอฟต์แวร์, มือถือ, เว็บไซต์, ระบบปฏิบัติการ, เน็ตเวิร์ก, ไฟล์ หรือการถอดรหัสต่าง ๆ ซึ่งในนั้นจะมีข้อความธงซ่อนอยู่ และสำหรับธงในการแข่งขันครั้งจะมีแพทเทิร์น swu{………….} ครับ

Write-Up

ซึ่งในบทความนี้ผมจะพาเพื่อน ๆ ไปดูแนวทางที่ผมใช้เจาะระบบในระหว่างการแข่งขัน แต่จะนำเสนอเพียง Reverse Engineering ละกัน เพราะหัวข้อนี้ทีมผมแก้โจทย์ได้ทั้งหมด

เอาล่ะเรามาเริ่มกัน

ข้อที่ 1 Lost But Not Forgotten (50 คะแนน)

จากโจทย์เขาจะให้เราหาธงจากโปรแกรม challenge.exe โดยมี Hint ว่าให้ใช้ Cat หรือ Strings ในการค้นหา

ผมใช้ Kali linux ในการแก้โจทย์ หลังจากอัปโหลดทุกอย่างไว้ใน Kali แล้ว ผมก็เริ่มแก้โจทย์ด้วยคำสั่ง Strings ก่อนเลย

strings challenge.exe (หรือจะพิมพ์ strings แล้วลากไฟล์มาใส่เลยก็ได้ครับ)

จากนั้นระบบจะทำการรันข้อมูลสตริงภายในไฟล์ .exe โชคดีที่ string ของ challenge.exe ไม่ค่อยยาว ผมเลยหาธงได้ไม่ยาก

สำหรับข้อนี้ flag = swu{fl4g_1s_H3r3}

 

ข้อที่ 2 You’re not a monkey… right? (100 คะแนน)

ผมขอพูดตรง ๆ ว่าสูตรลับในการที่ผมใช้เมื่อครั้งทำ Malware Analysis เพื่อสอบ PRMP (อ่านบทความย้อนหลังได้ที่นี่) ผมใช้ strings เพื่อตรวจเช็กแทบทุกครั้ง

ในที่นี้ก็เหมือนกัน ผมแทบไม่แตะตัวโปรแกรม .exe เพื่อเปิดเช็กเลย เพราะในแง่ของการทำงานมันก็ค่อนข้างเสี่ยงนะที่อยู่ ๆ เราจะรันโปรแกรมเหล่านี้ขึ้นมาทันที ถ้าใช้แนวคิดของ Malware Analysis คือ เราทำ Static Analysis ก่อน อ่านข้อมูลของตัวมันให้เข้าใจ แล้วเราค่อยทำ Dynamic Analysis เพื่อดู “Dynamic” ของโปรแกรมขณะทำงาน และเช่นเดียวกันกับไฟล์ Monkey.exe ผมก็เลือกรัน stringsก่อน

strings Monkey.exe (เวลารันคำสั่ง อย่าลืมตัวพิมพ์เล็กพิมพ์ใหญ่ต้องเป๊ะนะครับ)

แต่ถ้าสตริงเยอะมาก ตาลาย ผมมีสองแนวทางต่อไปครับ ผมจะลองใช้ strings Monkey.exe | grep -i flag เพื่อค้นหาธง หรือถ้าเรารู้แพทเทิร์นของธง เราก็อาจจะค้นหาอะไรที่มันจำเพาะขึ้น เช่น strings Monkey.exe | grep -i swu

เท่านี้เราก็ได้ธงมาแล้วโดยไม่ต้องรัน

แต่ถ้าเราอยากดูเอง ค่อย ๆ ดู ในกรณีที่ตัวโปรแกรมมันไม่โชว์ธงออกมาโดยตรง และเราไม่อยากให้มันรันสตริงรวดเดียว ให้เรารันคำสั่งนี้ได้ครับ strings Monkey.exe | less คำสั่งนี้จะช่วยให้เราค่อย ๆ scroll เมาส์ดูทีละบรรทัดได้เหมือนอ่านเอกสารทั่วไปครับ

สำหรับข้อนี้ Flag = swu{ac7a1e879533c456ec94573f409b6d51}

 

ข้อที่ 3 Press Start (200 คะแนน)

โจทย์ข้อนี้เดี๋ยวเราจะเริ่มทำ Dynamic Analysis กันละ แต่ทีนี้เรามาดูสตริงกันก่อน

ผมใช้ strings Press_Start.exe | grep -i flag และ strings Press_Start.exe | grep -i flag  แต่ปรากฎว่าไม่ขึ้นธง และผมสังเกตเห็น Flag unlocked: %s แสดงว่าแบบนี้เราต้องดูแบบเจาะลึกกันสักหน่อย

ผมใช้ strings Press_Start.exe | less เลื่อนลงมาเรื่อย ๆ จนเจอเข้ากับชุดข้อความด้านล่าง จนไปเอ๊ะกับข้อความบรรทัดที่ 3 ที่บอกว่า Up Up Down Down …. Boom! Contra-style!

ในหัวผมคิดแล้วนะ สูตรเกม Contra ขึ้น ขึ้น ลง ลง ซ้าย ขวา ซ้าย ขวา B A Select Start ซึ่งใครที่ไม่ใช่เด็กยุค 90 หรือยุค Millenium อาจจะงงได้ เอาล่ะเดี๋ยวเรามาดูที่ตัวโปรแกรมกันหน่อย

ตอนนี้เราต้องเข้าสู่โหมด Dynamic Analysis กันแล้ว ผมลองเปิดโปรแกรมบนWindows แล้วก็ลองใส่ข้อความลงไป แต่ใส่วิธีไหนมันก็ยังผิด ผมยังไม่ยอมแพ้ เรากลับมาที่ Kali

คราวนี้ผมใช้ radare2 เพื่อดูการทำงานของโปรแกรม r2 -A Press_Start.exe

เมื่อกดรันแล้ว ก็จะขึ้นคำแนะนำในการใส่คอมมานด์ต่อ ผมก็จะใส่ afl เพื่อเรียกดูฟังก์ชันทั้งหมด

ด้วยความที่ผมทำ Malware Analysis มาบ่อย ผมรีบมองหาฟังก์ชัน main ก่อนเลย แต่เมื่อใช้ radare2 เราจะมุ่งเป้าไปที่ sym.main เพราะมันผ่านการวิเคราะห์โดย radare2 มาแล้วครับ

pdf @ sym.main อันนี้มาจาก Print Disassembly Function at sym.main หมายถึงให้แสดงค่าฟังก์ชัน sym.main ที่ผ่านการ disassemble มาแล้ว ง่าย ๆ คือ เราใช้เพื่อ “อ่าน” ว่าฟังก์ชันนั้นทำอะไร จะได้ค่าดังภาพ

เริ่มเห็นจุดสังเกตแล้วใช่ไหมครับ wwss เทียบกับคีย์บอร์ดคอม มันก็คือ ขึ้นขึ้นลงลงนั่นเอง

ผมนำไปกรอกในตัวโปรแกรมเป็น wwssadadba ก็จะได้ค่าดังภาพ

Flag = c3d1ezJhNGQxZmVhNTk1NTdiYjdjYzUyYjI4NGU2MzMwN2MwfQ==

ยังไม่จบนะครับ จับไปเข้า Cyberchef เพื่อถอดโค้ด Base64

สำหรับข้อนี้ Flag = swu{2a4d1fea59557bb7cc52b284e63307c0}

 

ข้อที่ 4 Missile Protocol (300 คะแนน)

แอบสปอยล์ก่อนเลยได้ไหม ผมคิดว่าข้อนี้ง่ายเท่าข้อแรกเลยนะ ง่ายยังไปดูกันเลยครับ

เช่นเดิมผมใช้คำสั่ง strings Missile_Protocol.exe | less ค่อย ๆ ไล่อ่านทีละบรรทัด จนกระทั่งเจอเข้ากับ Flag: swu{229df1019ecdd2b056b3bb67ca54b032}

เห้ย!! มันง่ายไปหรือเปล่านะ แต่พอผมลองเอาธงไปใส่ก็ปรากฏว่าใช่ครับ นี่คือธงที่ถูกต้อง เห็นไหมล่ะว่าทำไมผมถึงบอกว่ามันง่ายเหมือนข้อแรก

และข้อสุดท้าย Flag = swu{229df1019ecdd2b056b3bb67ca54b032}

 

ความรู้สึกของผมกับพาร์ท Reverse Engineering

ถ้าเอาแค่ความเห็นผมคนเดียวนะ ง่าย ง่ายเลย อาจจะวุ่นวายนิดหนึ่งในข้อที่ 3 แต่ข้ออื่น ๆ ง่ายมากครับ และที่สำคัญในพาร์ท Reverse Engineering นี่ผมไม่ได้กดดู Hint เลย ก็จะไม่เสียคะแนนไปแม้แต่ข้อเดียวครับ

ส่วนในพาร์ทอื่น ๆ จะมีพาร์ท Network ที่กลุ่มผมเก็บทุกข้อเหมือนกัน แต่ในข้ออื่น ๆ Cryptography, Mobile, Web App, Binary, Forensics อันนี้เหลืออย่างละ 1-2 เพราะผมไม่เชี่ยวชาญจริง ๆ โดยเฉพาะ Mobile Pentest ครับ

เดี๋ยวคงจะมีกิจกรรมน่าสนใจแบบนี้ออกมาเรื่อย ๆ นะครับ เพื่อน ๆ พี่ ๆ และน้อง ๆ คนไหนที่สนใจอยากลองเล่น จริง ๆ เขามีเว็บไซต์ให้ลองเล่นทั้งฟรีและเสียเงินครับ ไม่ว่าจะเป็น Hackthebox, Tryhackme หรือ PicoCTF ลองไปเล่นกันได้เลย

Related articles

แนะนำ 5 ดิสโทร Linux สำหรับมือใหม่โยกย้ายจาก Windows

เมื่อ Windows 10 กำลังจะหยุดการสนับสนุนในปี 2025 เรามีทางเลือกหลายทางเลือก (อ่านเพิ่มเติมที่นี่) ทางเลือกหนึ่งสำหรับคนที่ไม่อยากไปต่อกับ Windows...

5 ทางเลือกของคุณ เมื่อ Windows 10 หยุดซัพพอร์ต

14 ตุลาคมนี้ Microsoft จะยุติการซัพพอร์ต Windows 10 อย่างเป็นทางการนะครับ อาจมีเพื่อน ๆ...

วิเคราะห์ลิงก์ปลอม แจก Steam Gift ขโมย Username/Password ผู้ใช้ !!

นั่งคอมอยู่ดี ๆ จู่ ๆ ก็มีแชตเด้งจากใน Steam ขึ้นมา เป็นลิงก์แจก Steam...

แชร์ประสบการณ์สอบ TryHackMe PT1 – เจาะระบบสำหรับ Junior จริงหรือเปล่า?

เพิ่งสอบ PJPT ไปหมาด ๆ (อ่านรีวิว PJPT ได้ที่นี่) ผมก็ต่อใบเซอร์อีกค่ายเลย นั่นคือ...

แชร์ประสบการณ์สอบ TCM PJPT – เข้าสู่สาย “เจาะระบบ” ครั้งแรกของคนไม่มีประสบการณ์

ห่างหายจากการสอบเซอร์ไปนาน วันนี้ผมกลับมาพร้อมกับใบเซอร์ PJPT (Practical Junior Penetration Tester) จากค่าย TCM...

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • เปิดใช้งานตลอด

บันทึกการตั้งค่า