upload-labs靶场搭建与20关详解

靶场搭建

下载地址 :https://github.com/c0ny1/upload-labs

我这里是在小皮中搭建的

步骤下载压缩包 ,解压到小皮的www目录下,开启apache、mysql服务

直接访问

http://localhost/upload-labs-master/upload-labs-master/

第一关

查看源码,发现具有白名单限制,看看是前端还是后端

 前端有一个checkfile()函数,删除即可,上传一句话木马

 

 第二关

对源码进行分析,发现验证的上传文件的类型

 对上传的文件做类型修改 

 

 

第三关

 

通过对源代码的审计,发现设置了黑名单,过滤了 asp aspx php jsp后缀的文件

可以上传后缀为php5  文件

不过需要修改apache的httpd.conf 添加一些后缀名

 AddType application/x-httpd-php .php .phtml .phps .php5 .pht

重启apache服务,上传后缀为php5的木马

 第四关

 还是先审计源代码,发现基本上能想到的后缀名都被过滤了,可以采用.htaccess文件进行绕过,

这个文件就是将上传的文件当作php文件进行处理

不过需要修改自己apache的http.conf文件 ,开启AllowOverride

 先上传.htaccess文件,在上传一个图片马

 

 第五关

还是先审计源代码, 这一关才真正给所有后缀名都给过滤了,想了还有,在网上看了看还有一个是.ini文件

php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞

创建一个.user.ini文件

 意思是所有的php文件都自动包含5.jpg文件

创建一个5.jpg文件

上传这两个文件,使用蚁剑进行连接(需要修改php.ini响应时间)

还可以抓包修改后缀名 php. .(点空格点)

 第六关

 老样子,审计源代码,好像可以大小写绕过 strtolower()函数

构造.PhP

 第七关

 审计源代码,好像没有首尾去空,trim()函数

构造.php (空格) ,上传php文件,抓包修改后缀名

第八关

审计源代码,发现没有使用deldot()使用点号进行过滤

deldot(file_name); //删除文件名末尾的点

使用php.进行绕过

 第九关

 审计源代码,用php. .(点空格点)进行绕过

第十关

 

第九关的过滤方式

 第十一关

 

审计源代码发现不存在双写验证过滤str_ireplace()函数

用双写进行绕过 .pphphp

 第十二关

审计源代码发现限制只能上传jpg,png,gif后缀

白名单限制,最终文件的存放位置是以拼接的方式,可以使用%00截断,但需要php版本<5.3.4,并且magic_quotes_gpc关闭。

url中的%00十六进制就是0x00

get00截断

上传php文件,进行抓包修改

 修改前

 修改后

 第十三关

 十二关,十三关要求php版本小于5.3.4

这里借鉴大佬写的upload-labs靶场通关指南(12-13关) - 代码天地

第十四关

 这一关要求上传图片马,

访问include.php检测图片马能否正常运行

上传图片马,打开图片获取连接、

 

也可以通过include.php进行访问

 ?file=upload/图片名称

 第十五关

 和十四关一样

 第十六关

再采用十四关的方法,也不是不行,就是获取图片的信息比较慢

所以要打开phpstudy的【php_exif】模块,来加快图片马的读取

 

 第十七关

二次渲染绕过  利用后端二次渲染需要找到渲染后的图片里面没有发生变化的Hex地方,添加一句话,通过文件包含漏洞执行一句话,用蚁剑进行连接

gif图

上传的文件进行渲染过后,进行下载,通过对前后两次文件的相同之处,确定此处没有被渲染,将一句话写在这里,用蚁剑进行连接(思路)

这里分享一个已经做好的绕过二次渲染的图片马  文件上传之二次渲染(专用图).zip - 蓝奏云

第十八关

十七关的gif直接上传,蚁剑直接连接

 第十九关

这一关是属于条件竞争,但是上传的文件很快就会被删除,没办法使用蚁剑进行连接,

这里写了一个脚本可以保证一直上传,

import requests
url = "http://xxx.xxx.xxx.xxx/upload-labs/upload/19.php"
while True:
    html = requests.get(url)
    if html.status_code == 200:
        print("OK")
        break

第二十关

审计代码发现,只验证了后缀名,上传以后缀为jpg文件,抓包进行修改,放包

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值