โจทย์เว็บและการเข้ารหัส
แก้ปริศนาเว็บและการเข้ารหัสที่พบบ่อย
โจทย์เว็บและการเข้ารหัส เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
สองเสาหลัก: เว็บและการเข้ารหัส
เว็บและการเข้ารหัสเป็นจุดเริ่มต้นที่พบบ่อยที่สุดสองประการในการเข้าสู่ CTF
- โจทย์เว็บ จะมอบแอปเว็บที่กำลังทำงานอยู่ให้คุณ และขอให้ค้นหาข้อบกพร่องในวิธีจัดการข้อมูลนำเข้า การยืนยันตัวตน หรือความน่าเชื่อถือ
- โจทย์การเข้ารหัส จะมอบข้อความเข้ารหัส รูปแบบการเข้ารหัส และบางครั้งมีซอร์สโค้ดให้คุณ พร้อมขอให้กู้คืนข้อความต้นฉบับหรือคีย์โดยใช้ข้อบกพร่องในวิธีที่นำการเข้ารหัสไปใช้
ทั้งสองรูปแบบให้รางวัลแก่การสังเกตอย่างเป็นระบบ บทนี้ครอบคลุมโจทย์ที่พบซ้ำบ่อยในแต่ละรูปแบบ
ขั้นตอนแรกเมื่อเจอเป้าหมายเว็บ
ก่อนใช้ช่องโหว่ใด ๆ ให้ทำแผนผังแอปพลิเคชันก่อน ดูซอร์ส ตรวจสอบการตอบกลับ และสำรวจเนื้อหาที่ซ่อนอยู่
# Inspect raw response headers and body
curl -i http://target/
# Look for hidden paths the UI does not link to
gobuster dir -u http://target/ -w wordlist.txt
# Common files worth checking by hand
# /robots.txt /.git/ /backup.zip /adminการแทรกคำสั่ง SQL
การแทรกคำสั่ง SQL เกิดขึ้นเมื่อข้อมูลนำเข้าของผู้ใช้ถูกนำไปต่อเข้ากับคำสั่งฐานข้อมูลโดยไม่แยกโค้ดออกจากข้อมูล
การเข้าสู่ระบบที่สร้างคำสั่งลักษณะนี้ SELECT * FROM users WHERE name='INPUT' อาจถูกเจาะได้ด้วยข้อมูลนำเข้าที่ปิดสตริงแล้วเปลี่ยนตรรกะ:
# A classic auth-bypass payload supplied as the username
' OR '1'='1' --
# UNION-based extraction once the column count is known
' UNION SELECT username, password FROM users -- วิธีแก้การแทรกคำสั่งที่แท้จริง
CTF สอนให้คุณเจาะการแทรกคำสั่ง เพื่อที่คุณจะได้ป้องกันมันได้ การป้องกันที่ถูกต้องคือคำสั่งแบบกำหนดพารามิเตอร์ (คำสั่งที่เตรียมไว้) ซึ่งแยกข้อมูลผู้ใช้ออกจากโครงสร้างคำสั่งโดยสิ้นเชิง
# Vulnerable: input becomes part of the SQL text
query = "SELECT * FROM users WHERE name='" + name + "'"
# Safe: input is bound as a parameter, never parsed as SQL
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))การเขียนสคริปต์ข้ามไซต์ (XSS)
XSS เกิดขึ้นเมื่อแอปสะท้อนหรือจัดเก็บข้อมูลนำเข้าที่ผู้โจมตีควบคุม แล้วเบราว์เซอร์เรียกใช้ข้อมูลนั้นเป็นสคริปต์ ใน CTF โจทย์ XSS มักมีบอตที่เข้าชมข้อมูลโจมตีของคุณขณะถือธงไว้ในคุกกี้
- แบบสะท้อนกลับ — ข้อมูลโจมตีในคำขอถูกส่งกลับมาโดยตรง
- แบบจัดเก็บ — ข้อมูลโจมตีถูกบันทึกไว้และทำงานเมื่อผู้เยี่ยมชมในภายหลังเข้ามา
- แบบอิง DOM — JavaScript ฝั่งไคลเอ็นต์เขียนข้อมูลนำเข้าลงในหน้าเว็บอย่างไม่ปลอดภัย
การป้องกันคือการเข้ารหัสผลลัพธ์ตามบริบท รวมกับนโยบายความปลอดภัยของเนื้อหา โพรบทดสอบอย่าง <script>alert(1)</script> จะยืนยันได้ว่าข้อมูลนำเข้าถูกทำให้อยู่ในรูปปลอดภัยหรือไม่
SSRF และการข้ามไดเรกทอรี
พื้นฐานสำคัญของเว็บอีกสองประการ:
- การปลอมแปลงคำขอฝั่งเซิร์ฟเวอร์ (SSRF) — หลอกให้เซิร์ฟเวอร์ส่งคำขอแทนคุณ โดยมักส่งไปยังที่อยู่ภายในเท่านั้น เช่น
http://127.0.0.1หรือจุดปลายทางข้อมูลเมทาดาทาของระบบคลาวด์ เพื่อเข้าถึงธง - การข้ามไดเรกทอรี — ออกจากไดเรกทอรีที่กำหนดไว้ด้วยลำดับอย่าง
../เพื่ออ่านไฟล์นอกพื้นที่รากเว็บ เช่น../../../../etc/passwd
ทั้งสองอย่างเกิดจากการเชื่อถือข้อมูลนำเข้าของผู้ใช้ให้เป็นตัวเลือกทรัพยากร การป้องกันคือใช้รายการอนุญาตที่เข้มงวด ทำให้เส้นทางอยู่ในรูปมาตรฐาน แล้วตรวจสอบเส้นทางก่อนใช้งาน
การเข้ารหัสรูปแบบไม่ใช่การเข้ารหัสลับ
กับดักด้านการเข้ารหัสที่พบบ่อยที่สุดสำหรับผู้เริ่มต้นคือการสับสนระหว่างการเข้ารหัสรูปแบบกับการเข้ารหัสลับ การเข้ารหัสรูปแบบสามารถย้อนกลับได้โดยทุกคนโดยไม่ต้องใช้คีย์ จึงไม่ให้การรักษาความลับเลย
ฝึกจำแนกรูปแบบเหล่านี้จากการมองเห็น:
- เบส64 — ตัวอักษร ตัวเลข
+ /และมักมีการเติมส่วนท้ายด้วย= - เลขฐานสิบหก — มีเพียง
0-9 a-f - รหัสเลื่อน 13 ตำแหน่ง / ซีซาร์ — มีโครงสร้างที่อ่านได้และตัวอักษรถูกเลื่อน
# Decode base64
echo 'ZmxhZ3toZWxsb30=' | base64 -d
# Decode hex
echo '666c6167' | xxd -r -pรหัสแบบคลาสสิกและ XOR
โจทย์การเข้ารหัสจำนวนมากใช้รหัสแบบเก่าที่อ่อนแอหรือรหัสสมัยใหม่ที่นำไปใช้อย่างหละหลวม:
- ซีซาร์ / วีเจแนร์ — รหัสเลื่อนที่ทำลายได้ด้วยการวิเคราะห์ความถี่หรือลองการเลื่อนทั้ง 25 แบบ
- XOR ไบต์เดียว — ข้อความทั้งหมดถูกทำ XOR ด้วยไบต์เดียว ให้ลองคีย์ทั้ง 256 ค่าแล้วเลือกผลลัพธ์ที่อ่านออก
- XOR ด้วยคีย์ซ้ำ — ทำลายได้โดยค้นหาความยาวคีย์ แล้วแก้ไบต์ของคีย์แต่ละตัวด้วย XOR ไบต์เดียว
บทเรียนคือ รหัสที่สร้างขึ้นเองหรือรหัสแบบคลาสสิกไม่ให้ความปลอดภัยที่แท้จริงเมื่อต้องรับมือกับนักวิเคราะห์
จุดพลาดของ RSA
RSA จะปลอดภัยก็ต่อเมื่อเลือกพารามิเตอร์อย่างถูกต้อง โจทย์การเข้ารหัสใน CTF มักมอบตัวอย่างที่มีข้อบกพร่องให้คุณ:
- โมดูลัสขนาดเล็ก — หาก
nเล็กพอ ให้แยกตัวประกอบโดยตรงเพื่อกู้คืนคีย์ส่วนตัว - เลขชี้กำลังเล็กมากและไม่มีการเติมข้อมูล — เมื่อมี
e=3และข้อความสั้น ข้อความเข้ารหัสอาจเป็นจำนวนกำลังสามสมบูรณ์ ซึ่งกู้คืนได้ด้วยรากที่สามของจำนวนเต็ม - ตัวประกอบร่วมกัน — หากคีย์สาธารณะสองคีย์มีจำนวนเฉพาะร่วมกัน ตัวหารร่วมมากของโมดูลัสจะเปิดเผยจำนวนนั้นได้ทันที
การป้องกันในโลกจริงคือใช้ไลบรารีที่ผ่านการตรวจสอบ พร้อมคีย์ขนาดใหญ่และการเติมข้อมูลที่เหมาะสม (OAEP) และอย่าสร้างระบบเข้ารหัสขึ้นเอง
การถอดรหัสแฮช
เมื่อโจทย์ให้แฮชรหัสผ่านแก่คุณ เป้าหมายคือการกู้คืนข้อมูลป้อนเข้าดั้งเดิม คุณไม่สามารถย้อนกลับแฮชได้ แต่คุณสามารถเดาข้อมูลป้อนเข้าแล้วนำมาเปรียบเทียบกันได้
# Identify the hash type first
hashid 5f4dcc3b5aa765d61d8327deb882cf99
# Dictionary attack with hashcat (mode 0 = raw MD5)
hashcat -m 0 hash.txt rockyou.txt
# John the Ripper alternative
john --wordlist=rockyou.txt hash.txtกระบวนการทำงานที่ทำซ้ำได้
เชื่อมทุกอย่างเข้าด้วยกันด้วยวงจรที่สม่ำเสมอสำหรับทั้งสองหมวดหมู่:
- สังเกต — อ่านโจทย์ ดูซอร์สโค้ด และระบุการเข้ารหัสรูปแบบหรือวิธีการที่ใช้
- ตั้งสมมติฐาน — ระบุกลุ่มช่องโหว่ที่น่าจะเป็นไปได้
- ทดสอบทีละน้อย — ส่งข้อมูลทดสอบหนึ่งชุด แล้วดูการตอบสนองที่เกิดขึ้นอย่างละเอียด
- ใช้ประโยชน์จากช่องโหว่ — ขยายข้อมูลทดสอบที่ใช้การได้ให้เป็นข้อมูลโจมตีเต็มรูปแบบซึ่งทำให้ได้แฟลก
- บันทึก — จดข้อมูลโจมตีและเหตุผลขณะที่ยังจำได้ดี
วงจรนี้ช่วยให้คุณไม่หลงไปกับทางตัน และทำให้ได้บทสรุปการแก้โจทย์แทบจะโดยไม่ต้องเพิ่มงาน
ตรวจสอบอย่างรวดเร็ว
ทดสอบความเข้าใจพื้นฐานด้านเว็บและการเข้ารหัสลับของคุณ
สรุปทบทวน
คุณได้เรียนรู้โจทย์ด้านเว็บและการเข้ารหัสลับที่มักพบซ้ำ ๆ ดังนี้:
- เว็บ: สำรวจโครงสร้างก่อน จากนั้นทดสอบหา การฉีดคำสั่งเอสคิวแอล, XSS, SSRF และการไต่ย้อนเส้นทาง — ทุกอย่างมีรากมาจากการเชื่อถือข้อมูลป้อนเข้าของผู้ใช้โดยไม่ปลอดภัย และแก้ไขได้ด้วยการแยกโค้ดออกจากข้อมูล
- การเข้ารหัสลับ: แยกแยะ การแปลงรูปแบบข้อมูลออกจากการเข้ารหัสลับ ถอด รหัสแบบคลาสสิกและ XOR ที่อ่อนแอ ใช้ประโยชน์จาก ข้อผิดพลาดในการกำหนดพารามิเตอร์ RSA และ ถอดแฮช ด้วยรายการคำศัพท์
- วงจรเดียว ได้แก่ สังเกต ตั้งสมมติฐาน ทดสอบ ใช้ประโยชน์จากช่องโหว่ และบันทึก ใช้ได้กับทั้งสองด้าน
ถัดไป คุณจะเข้าสู่วิศวกรรมย้อนกลับและการโจมตีไบนารี
คำถามที่พบบ่อย
บทเรียน “โจทย์เว็บและการเข้ารหัส” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โจทย์เว็บและการเข้ารหัส” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โจทย์เว็บและการเข้ารหัส”
แก้ปริศนาเว็บและการเข้ารหัสที่พบบ่อย คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “โจทย์เว็บและการเข้ารหัส” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- หมวดหมู่และแนวคิดของ CTF
- โจทย์เว็บและการเข้ารหัส
- พื้นฐานการรีเวิร์สและการเจาะไบนารี
- เครื่องมือและบทสรุปวิธีแก้โจทย์