php伪协议
1. php://input
构造场景:本地web服务器根目录下有文件phpinput_server.php,代码如下:
1 <?php 2 $a = $_GET['a']; 3 $raw_post_data = file_get_contents($a,'r');//'php://input' 4 echo $raw_post_data; 5 6 ?>
在浏览器中按照如下方式访问:
地址栏输入的是:http://localhost/phpinput_server.php?a=php://input
post框直接输入一段数据
excute后,脚本会在页面中输出这段数据。
总结:此种方式可以用来获取post数据,但不能获取get数据。
2. php://filter
构造场景:本地web服务器根目录下有文件phpfilter_server.php,代码如下:
1 <?php 2 $a = $_GET['a']; 3 $raw_post_data = file_get_contents($a,'r'); 4 //'php://filter/read=convert.base64-encode/resource=test.php' 5 echo $raw_post_data; 6 ?>
在浏览器中按照如下方式访问:
地址栏输入的是:http://localhost/phpfilter_server.php?a=php://filter/read=convert.base64-encode/resource=test.php
excute后,脚本会在页面中输出test.php文件的内容(经过base64编码后)。

总结:此种方式在存在文件包含漏洞时可以利用,读取文件源码。
参考:

浙公网安备 33010602011771号