WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性

目录

知识点

1、文件上传-前端验证

2、文件上传-黑白名单

3、文件上传-user.ini妙用

4、文件上传-PHP语言特性

详细介绍

1、检测层面:前端,后端等

2、检测内容:文件头,完整性,二次渲染等

3、检测后缀:黑名单,白名单,MIME检测等

4、绕过技巧

5、前置知识

案例演示-CTFSHOW-文件上传-151到161关卡

CTF-文件上传-151

CTF-文件上传-152

CTF-文件上传-153

CTF-文件上传-154

CTF-文件上传-156

CTF-文件上传-157

CTF-文件上传-159

CTF-文件上传-160

CTF-文件上传-161


知识点

1、文件上传-前端验证

2、文件上传-黑白名单

3、文件上传-user.ini妙用

.user.ini:有php就可以使用

.user.ini:php支持基于每个目录的ini文件配置,如果php运行在apache里与.htaccess有同样的效果

4、文件上传-PHP语言特性

详细介绍

1、检测层面:前端,后端等

前端:检测代码写到前端,如js等

后端:采用后端代码,检测代码需要通过发包发到对方服务器,然后服务器进行检测这个文件上传成功或者失败。

从检测层面的基础上面在往里细节就是检测内容和后缀

2、检测内容:文件头,完整性,二次渲染等

文件头、完整性、二次渲染

3、检测后缀:黑名单,白名单,MIME检测等

通过后缀检测可以检测到上传文件的类型。尽量按照网站的脚本语言来进行后门的格式,否则容易不支持格式。

黑名单:声明一个禁止上传的黑名单,符合黑名单的内容就会失败

白名单:声明了允许上传的白名单,符合白名单的内容就可以上传

MIME:比如多个图片(png,jpg)或者多个文本都有不同的后缀名,mime会有一种归类来进行文件上传的判断是否符合

4、绕过技巧

前端、MIME、上传.user.ini文件进行包含、{}绕过[]过滤、反引号、包含日志文件、添加文件头部验证

5、前置知识

后门代码需要用特定格式后缀解析(比如是php的后门代码必须是php的格式才可以进行解析),不能以图片后缀解析脚本后门代码(解析漏洞除外)

如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门,除非使用.user.ini

案例演示-CTFSHOW-文件上传-151到161关卡

CTF-文件上传-151

思路:修改前端代码

尝试上传php后门脚本,发现失败 

 通过检查源码,可以断定是通过前端进行验证后缀

直接修改前端代码,就可以正常上传php后门

php一句话木马:<?php eval($_POST['x'])?>

访问目录下的1.php,并将利用后门获取flag 

CTF-文件上传-152

该关卡用151关卡的方法肯定是不行的,所以不在演示

思路:因为是MIME判断,修改Content-Type的参数

先修改页面源代码绕过前端验证

 分别上传php和png图片,抓包进行比较。可以明显发现两个数据包的Content-Type不太一样。该验证就为MIME验证。

 

 那么可以直接通过修改Content-Type的值,在上传php文件时把值修改成png时的值,进行MIME的绕过

通过后门获取flag 

CTF-文件上传-153

该关肯定之前的办法都不行,所以不尝试前端和MIME的绕过,也可以尝试修改filename的文件后缀、尝试修改后缀名的大小写(如果是linux不能,因为在访问文件时linux区分大小写)、尝试多后缀解析(例如:php5、php7等)

思路:利用user.ini文件进行包含

那么可以尝试使用user.ini,index.php可以直接让user.ini生效从而利用.user.ini包含1.png文件,1.png里包含的php后门程序,通过情况下png格式无法让php代码生效,所以使用到了.user.ini。

注意:上传.user.ini文件时要将Content-Type改为image/png格式

 

利用后门获取flag

CTF-文件上传-154

155关卡与154相同

思路:该关过滤php字符,只需要写入不带php字符的代码就可以了。

 

上传user.ini文件,发现没有任何问题。但是上传带有后门脚本的文件时发现上传失败

 将内容修改成普通内容是可以正常上传的,通过不断测试发现了是过滤了php字符

 

那么只需要写入不带php字符的代码就可以了。这里为各位总结了一下

<? echo '123';?>                                             //前提是开启配置参数short_open_tags=on

<?=(表达式)?>                                               //不需要开启参数设置

<% echo '123';%>                                          //前提是开启配置参数asp_tags=on

<script language=”php”>echo '1'; </script>   //不需要修改参数开关

选择符合条件的代码进行上传,获取flag

CTF-文件上传-156

思路:上传文件时过滤后门脚本中的中括号,直接利用大括号即可

上传user.ini文件和后门脚本文件,把包含变量的中括号改为大括号

 

直接访问获取flag,获取利用菜刀蚁剑连接后门

 

 

CTF-文件上传-157

157与158相同

思路:该关直接过滤了分号和{},那么直接让包含的图片输出flag即可

 上传user.ini文件和后门代码文件

 

 直接访问upload文件即可获取flag

 

CTF-文件上传-159

思路:该关过滤(),那么system就不可以使用,可以利用反引号执行代码

 

 访问index.php触发.user.ini文件,.user.ini文件触发test文件,最后触发代码获取falg

 

CTF-文件上传-160

思路:该题因为过滤了反引号,所以可以从日志文件入手 ,让user.ini文件包含图片文件,图片文件包含日志文件,修改日志文件的UA头实现后门代码。

 上传user.ini和图片文件

 

 访问upload时,可以查到日志文件

 再次访问页面并将UA头修改成后门代码

然后直接访问upload文件,并利用post传参。或者直接上菜刀获取flag都可。 

 

 

 

CTF-文件上传-161

思路:该题考的是文件头部检测是否为图片格式文件:不同的文件,比如png,jgp都有不同的文件头

 

 那么再上传user.ini文件和包含日志的图片文件时,在开始部分加上文件头的信息绕过验证

 

访问页面,抓包并修改UA头

 

 直接获取flag

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值