BUUCTF 刷题
[NCTF2019]Fake XML cookbook
前言
通过刷题拓宽自己的知识面
一、[NCTF2019]Fake XML cookbook
(1)打开后如图所示
(2)尝试了一下万能密码,没啥用。回到题目,XML,百度一波。
XML 被设计用来传输和存储数据。
HTML 被设计用来显示数据。
XML 指可扩展标记语言(eXtensible Markup Language)。
可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。它主要用到
的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。
(3)由此联想到XML中存在的XXE漏洞。
XXE是什么
XXE:XML External Entity 即外部实体,从安全角度理解成XML External Entity attack 外部实体注入攻击。由于程序在解析输入的XML数据时,
解析了攻击者伪造的外部实体而产生的。例如PHP中的simplexml_load 默认情况下会解析外部实体,有XXE漏洞的标志性函数为simplexml_load_string()。
XXE原理
有了 XML 实体,关键字 ‘SYSTEM’ 会令 XML 解析器从URI中读取内容,并允许它在 XML 文档中被替换。因此,攻击者可以通过实体将他自定义的值发送
给应用程序,然后让应用程序去呈现。 简单来说,攻击者强制XML解析器去访问攻击者指定的资源内容(可能是系统上本地文件亦或是远程系统上的文件)
(4)利用XXE
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [
<!ENTITY admin SYSTEM "file:///etc/passwd">
]>
<user><username>&admin;</username><password>123</password></user>
经过测试后发现可以利用
(5)找到flag
flag{677da155-d74d-4117-9633-777173dd225c}
总结
这道题目所涉及的知识点为XXE 的利用