Web 151
提示前端校验不可靠,因此需要绕过前端校验。
可以写一个一句话木马,然后把后缀改成png上传。
想要绕过前端校验的话,可以用Burpsuite抓包然后修改filename的后缀为php,这样上传成功访问对应页面就可以拿到flag了。
一句话木马:
GIF89a
<?= system('cat ../fla*')?>
发送之后返回:
访问/upload/new,php,在注释里找到了flag。
Web 152
提示后端校验要严密,说明存在后端校验。
看题解貌似是限制了Content-Type,即文件类型,只能为 image/png,不过因为是先上传图片再修改后缀,所以上题的方法仍然适用。
Web 153
采用上一题的手法发现文件上传失败,可能是后端ban掉了php后缀。
这里需要用到一个新方法:
.user.ini
原理: 指定一个文件(如a.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),类似于在index.php中插入一句:require(./a.jpg);
这两个设置的区别只是在于auto_prepend_file是在文件前插入;
auto_append_file在文件最后插入(当文件调用的有exit()时该设置无效)所以要求当前目录必须要有php文件,巧合的是这题upload目录下有个index.php所以这种方式是可以成功的。
.user.ini
GIF89a
auto_prepend_file=new.png
先上传 .user.ini 文件,然后上传new.png就行了。
访问/upload,在注释里找到flag。
Web 154
仍然可以通过上传 .user.ini 文件来绕过后端校验,上题手法依然可以使用。
Web 155
仍然可以通过上传 .user.ini 文件来绕过后端校验,上题手法依然可以使用。
总结:
前端校验可以通过抓包后修改后缀来绕过
后端校验关键点一:Content_Type
后端校验绕过方法一:利用.user.ini文件把写有木马的图片加入到php文件解析序列中去(前提是目录下有可以执行的php文件,如index.php)