CTF-文件上传
写在前面:
文件上传漏洞常用于获取webshell,从而取得对目标网站(系统)的控制权。要获取shell,需要: 1.知道上传后文件所保存位置(不知道那就猜、爆破) 2.上传后文件的名字(是否被更改)
00一句话木马
一句话木马原理及不同类型:https://baike.baidu.com/item/%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%9C%A8%E9%A9%AC/1845646?fr=aladdin
在文章后续会根据例子提供一句话木马的变式
01 毫无过滤
直接上传即可获取webshell
02 前端过滤
2.1绕过js过滤
例:
function checkFile() {
var file = document.getElementsByName('upload_file')[0].value;
if (file == null || file == "") {
alert("请选择要上传的文件!");
return false;
}
//定义允许上传的文件类型
var allow_ext = ".jpg|.png|.gif";
//提取上传文件的类型
var ext_name = file.substring(file.lastIndexOf("."));
//判断上传文件类型是否允许上传
if (allow_ext.indexOf(ext_name) == -1) {
var errMsg = "该文件不允许上传,请上传jpg、png、gif结尾的图片噢!";
alert(errMsg);
return false;
}
}
绕过方式:
1
在控制台重新定义函数 function checkFile(){} 回车即可(注:需要在未触发该函数前)
2
将一句话木马文件后缀改为.png .jpg .gif后,点击上传。用BurpSuite截断,然后将文件名再替换成.php
03 后端过滤
3.1 利用解析漏洞绕过