php文件包含漏洞(input与filter)

php://input

php://input可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置。php://input不能用于enctype=multipart/form-data。

php://filter协议

协议语法:

php://filter:/<action>=<name>

php://filter 的 参数列表

read        读取
write        写入
resource    数据来源(必须的)

read的参数

string.strip_tags                 将数据流中的所有html标签清除
string.toupper                    将数据流中的内容转换为大写
string.tolower                     将数据流中的内容转换为小写
convert.base64-encode     将数据流中的内容转换为base64编码
convert.base64-decode     与上面对应解码

漏洞应用

以i春秋上一道文件包含的CTF题为例:(来自rgrgrgrgrggrgrg大佬的Writeup

1 <?php 
2 show_source(__FILE__);
3 if(isset($_REQUEST['path'])){
4     include($_REQUEST['path']);
5 }else{
6     include('phpinfo.php');
7 }

 

path能以get与post形式传入,这里我们在url后加上?path=php://input,再以post形式传入ls指令,成功执行了指令。

 

 

于是利用filter协议来读取dle345aae.php的内容,由于php文件不能直接读取,于是采用base64编码方式读取,成功得到一串base64编码,拿去一解就是flag啦。

 

 

posted @ 2018-03-06 22:52  Ragd0ll  阅读(561)  评论(0编辑  收藏  举报