Nahamcon 2022 Web Soruları - Easy
CTF Linki: https://ctf.nahamcon.com/challenges
Kategori: XML Injection, Regex Bypass, Recon
TLDR; Robots.txt den gelen flag. Regex bypasslanarak gelen flag. Son olarak da XML injection zafiyeti ile gelen flag.
Easy soruları es geçmek istemedim. Her biri ayrı yazılar olamayacak kadar kısa oldugu için de tek yazı altında toplamak istedim.
Jurassic Park
Uygulamaya giriş yapıldığında bizi aşağıdaki ekran karşılıyor.
Soru kolay kategorisinde olduğundan direkt olarak robots.txt ye yöneldim.
Robots.txt içindeki pathe gittiğimde ise flag geldi.
FLAG: flag{c2145f65df7f5895822eb249e25028fa}
Personnel
Bu uygulama her ne kadar kolay kategorisinde olsa da son 2 ye kalan sorularımdan biriydi. Uygulamaya giriş yaptığımızda arkada calışan bir veritabanının olmadığını söylüyor.
Lookup sorgusu attığımızda aşağıdaki gibi cevap geliyor.
Soru içerisinde paylaşılmış olan kaynak kodları incelediğimde iki dosyanın string concatenation ile birleştirildiğini gördüm.
Arama fonksiyonu da regex ile çalısıyordu. name parametresine gönderdiğimiz değer regex ifadenin içerisine yazılıyordu ve string içerisinde arama yapıyordu. \n
karakterinden dolayı flagin olduğu satırı okuyamıyordum.
Uzuun araştırmalarım sonucunda |
işareti ile regexi bypasslayabileceğimi keşfettim. İçerisindeki tüm özel karakterleri barındıran [\S\n\t\v ]*|
payloadı gönderdim ve flag geldi.
FLAG: flag{f0e659b45b507d8633065bbd2832c627}
EXtravagant
Uygulamanın işlevi çok basit. XML al, işle ve kullanıcıya göster.
XML injection olabileceği için hızlıca aşağıdaki payloadı oluşturdum ve xml.xml adında bir dosyaya kaydettim.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///var/www/flag.txt"> ]>
<stockCheck><productId>&xxe;</productId></stockCheck>
Ardından uygulama üzerinden dosyayı gönderdim.
Yükleme başarılı.
View XML sekmesinden de göndermiş olduğum xml dosyasının adını yazdım.
Boom.
FLAG: flag{639b72f2dd0017f454c44c3863c4e195}