目录
3、使用 .user.ini 或 .htaccess(可能还存在大小写绕过)
1、常规前端绕过
如下图,在前端存在限制,只能上传图片类型的文件(非图片类型甚至无法进行抓包)
如果考察的只是一个前端绕过,比如这道题,那么这种很简单
我们只需要使用BurpSuite抓包然后改后缀即可
首先将一句话木马的.php后缀改为符合要求的后缀,比如这里的.jpg
一句话木马内容如下:
顺便说一下,一句话木马的写法有很多种,上面这个是比较简单和常见的写法
文件头的 GIF89a 可以理解为一个绕过作用,不一定需要但是加了更好,懂我意思吧
OK,我们开始传
由于是.jpg的后缀,符合前端要求,所以我们可以使用BurpSuite进行抓包,如下图:
我们需要将后缀改回.php
然后直接放包即可
可以看到文件上传成功,为什么图片没有正常显示出来,因为传的这个东西本质还是一句话木马,我们只是改了它的后缀,它的实质并不是图片。
复制图像链接,使用蚁剑或者菜刀进行连接
如果上传成功后并不能复制图像链接,也没有给你路径,我们也可以自己找
我们将包发到repeater
同样修改后缀后发送,我们同样可以找到文件被传到了哪里
下面就是使用蚁剑连接
拿下,添加数据,进去找flag就行,一般是在根目录下面
2、修改文件类型
我们直接传.php文件,前端没有出现限制提示
抓包后如下图:
如果我们直接放包,发现前端报错
这里需要修改文件类型,即Content-Type
修改为image/jpeg,如下图:
放包之后我们发现上传成功
同理我们找到文件位置,直接上蚁剑即可
3、使用 .user.ini 或 .htaccess(可能还存在大小写绕过)
这两个东西都可以使我们上传的图像类文件被当作php文件解析
具体该用哪个,什么情况下用,这个是说不清楚的,我只能说这是我们做文件上传的一个绕过方向
首先尝试前面讲过的两种思路,发现直接传php的不行,传jpg抓包后修改后缀为php也不行
jpg虽然可以直接上传,但是并没有用
我们需要它被当作php文件解析,那么就需要用到前面说的两个配置文件之一
首先来看一下这两个文件的内容(特意加了块引用,方便大家复制)
.htaccess
<FilesMatch ".jpg">
SetHandler application/x-httpd-php
</FilesMatch>
.user.ini
GIF89a
auto_prepend_file=6.jpg
这里说一下,等号后面的6.jpg就是你要上传的jpg类型的一句话木马文件名
再来说用法:
先上传一个配置文件 .user.ini 或 .htaccess
再上传jpg后缀的一句话木马,注意:直接上传,不用改后缀
下面我以.htaccess 为例
我们依旧需要改文件类型(一般都是改为 image/jpeg)
接着我们上传jpg的一句话木马
这里不用改后缀也不用改类型,直接放包
后续操作大家就很熟悉了
发现不行,这道题要用 .user.ini (注意.user.ini里的内容与上传的木马文件名一致)
当然实际情况下我们肯定不知道哪些后缀被过滤了,所以只能慢慢尝试
再来说一下大小写的绕过,虽然.htaccess被禁止了,但是我们可行修改大小写来实现绕过,比如将文件名改为.Htaccess,内容不变,大小写绕过不只是在配置文件,也可用在php后缀上
4、使用字典爆破可行后缀
这个就是在bp中使用字典去爆破能上传成功的后缀,然后再使用shell连接工具去逐个尝试连接
以buuctf中的 [ACTF2020 新生赛]Upload1 为例:
就是一个文件上传
初步尝试发现php不行,那么我们就传jpg
抓包后发到攻击模块
可以使用字典也可以自己添加一些常用的
最终这道题能连接成功的是phtml
当然其实能上传成功的有很多,有些也不能上传成功
我们要做的就是在上传成功的路径里面去尝试连接
5、结合文件包含漏洞使用图片马
实际情况并没有这种提示,我们做这类题就是不断尝试各种类型
这种类型的话我们就需要使用图片马
用copy命令来制作:copy 1.jpg/b + shell.php 2.jpg
生成的2.jpg就是一个图片马,我们直接传2.jpg即可
6、条件竞争
这个需要写脚本,大概原理就是利用服务器端处理存在的一个时间间隙来产生“碰撞”
我们不断地上传文件和不断地访问自己上传的文件,就有可能在文件进行判断删除之前,成功访问文件,并执行里面的代码。
下面是关于绕过的总结: