upload-labs-master通关教程

第1关

我们将我们的木马1.php上传

显示无法上传,那我们将木马文件格式改为可上传的.jpg,然后抓包,将文件再改回.php即可

在放包即可成功

我们去访问,输入参数能出现结果即可成功

第2关

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

放行

测试连接

第3关

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

上传成功

第4关

查看源代码

很明显上关的办法不能用了,那么我们采用.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⽂件
2. 上传1.jpg⽂件
这里可能会因为环境的原因会无法成功,大家在fofa上多找几个靶场试试即可

第5关

这关是.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代码,然后将其上传
再上传1.jpg
上传过后访问发现不能解析,这⾥有⼀个局限的点,在.user.ini 中使⽤这条配置,需要在同⽬录下的其 他.php ⽂件中包含配置中所指定的⽂件,也就是说需要该⽬录下存在.php ⽂件。
提示为:存在readme.php⽂件,访问发现正常解析 访问任意php⽂件
访问readme.php,即可访问到我们上传的1.jpg内容

第6关

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

第7关

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

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

第8关

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

第9关

这关少了

去除字符串::$DATA
那就与上关一样的步骤
这里显示403,我们将::$DATA去掉即可,因为::$DATA只是标识符,并不是文件名

第10关

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

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

我们创建一个.php. .就可以绕过

第11关

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

上传成功,但我们查看时,发现把我们的php删掉了,那我们试试双写能不能绕过

第12关

这关采用%00截断绕过

       ⽂件上传%00绕过是指攻击者在⽂件上传时,在⽂件名后⾯添加%00字符,从⽽绕过服务器端的⽂件 类型、拓展名以及⼤⼩限制,成功上传恶意⽂件到服务器端,从⽽进⾏攻击的⼀种技巧。
00截断时操作系统层的漏洞,由于操作系统是C语⾔或汇编语⾔编写的,这两种语⾔在定义字符串时, 都是以0x00作为字符串的结尾,操作系统在识别字符串时,当读取道0x00字符时,就认为读取到了⼀个 字符串的结束符号,因此,我们可以通过修改数据包,插⼊0x00字符的⽅式,达到字符串截断的⽬的。
       %00截断通常时绕过⽩名单的限制
首先,我们正常上传抓包
这个的意思就是我们将1.jpg的文件名截断了,但是我们把他的内容传到了6.php中,之后我们正常访问6.php即可

第13关

这关与上一关一样,同样是⽩名单限制后缀名,$_POST['save_path']是接收客户端提交的值,客户端可任意修改。
所以会产⽣安全漏洞; POST 下直接注⼊%00 是不⾏的,需要把%00 解码变成空⽩符,截断才有效。才能把⽬录截断成⽂件名
将%00的hex码更改为00,然后上传

第14关

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

制作图⽚⼀句话,使⽤copy 1.gif/b+123.php/a shell.jpg将 php ⽂件附加在 jpg 图⽚上,直接上传即可;
/b代表以⼆进制编码打开⽂件,/a代表以ASCII码编码打开⽂件
之后我们上传我们的shell.jpg
点开
我们让file等于我们的图片地址即可

第15关

与14关一样

第16关

与14关一样

第17关

与14关一样

第18关

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

此时我们可以看到我们的上传目录是空的,我们现在去上传6.php

抓包发送至攻击器,让他一直去上传

然后我们再去访问6.php

将他也抓包,发送至攻击器,让他一直访问

这时我们在看上传目录,就有了webshell.php

第19关

与18关一样

第20关

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

第21关

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

.$file_name = reset($file) . '.' . $file[count($file) - 1];

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

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

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

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值