进入先查看源代码
function check(){
upfile = document.getElementById("upfile");
submit = document.getElementById("submit");
name = upfile.value;
ext = name.replace(/^.+\./,'');
if(['jpg','png'].contains(ext)){
submit.disabled = false;
}else{
submit.disabled = true;
alert('请选择一张图片文件上传!');
}
ext = name.replace(/^.+\./,''); 去除上传文件名(例如上传的文件名为shell.jpg,去除后变为jpg)
an['jpg','png'].contains(ext) 判断上传的文件名后缀是否是图片格式
关于contains
A.contains(B):A是否是B的子级,返回布尔值;
我的理解是 B中是否包含有A的字符串,有就返回true,没有就返回flase(欢迎大家指正我的理解是否有问题)
submit.disabled:能否点击上传按钮
这道题有意思的就是在客户端就进行了过滤, 如果不是后缀名文图片格式,就不能进行上传
例如我们上传一个.php的文件
它会禁止让我们点击上传按钮
解题思路:
既然它规定后缀名必须是图片格式,那我们就上传一个一句话木马,然后改为.jpg的格式上传
然后进brup抓包
将shell.jpg 改为shell.php Content-type改为multipart/form-data
上传成功
最后再用蚁剑连接就能拿到flag