upload-labs(Pass03)
2020-03-25 本文已影响0人
六亲不认的步伐
本次搭建upload-labs靶机进行File Upload测试
测试项目:Pass03[后缀名过滤之黑名单(1)]
测试介绍:此靶机主要练习 文件上传技能与代码审计技能
Pass03上传界面与源代码拿到题目后,第一步先依旧是代码进行审计
PHP代码审计根据图中1处 可以发现声明了一个后缀名数组
根据图中2处 发现去除 ::$DATA,从而防止通过 ::$DATA绕过
此处关于::$DATA是利用Windows流特性绕过
对于Windows数据流,自己又查阅了NTFS数据流及高级文件隐藏
根据图中3处 通过匹配后缀名是否存在黑名单数组内(关键处)
根据图中4处 通过匹配验证后,对文件名称进行重新命名,加入随机数和时间戳拼接组成新名称
方法1.利用版本兼容性后缀名继续进行上传,例如.php2;.php3;.php4;.php5;.php6
原理:php3代表php 3.x版本,利用php向下兼容特点进行绕过测试。
成功上传php3后缀名文件,但是在执行时,未成功解析php3文件(本机配置原因),效果如下图
未成功执行.php3文件里的php代码
对于未成功执行.php3文件,通过查阅资料可以发现需要在配置文件对.php3文件进行解析为.php从而引出控制文件
.htaccess
来可以实现对该文件解析。扩展:除了php可以利用篡改可解析的后缀名其他类型文件也可以篡改
.asp | .aspx | .jsp |
---|---|---|
.asa | .ashx | .jspx |
.cer | .asmx | .jspf |
.cdx | .ascx |
方法2.利用系统特性进行绕过
Linux与Windows系列操作系统不同之处:对大小写敏感不同,Linux对大小写区分严格,所以在Linux系统下可通过例如.pHp
等进行绕过。
由于自己搭建环境是Windows该方法行不通,效果如下图
后记:对于该关卡,自己尝试过利用Apache自身缺陷 使用1.php.rar方法进行绕过上传,成功上传但是由于存在随机数对文件名重命名导致存储为.rar压缩文件。
存储为压缩文件.rar格式
第一篇:upload-labs(Pass01)
第二篇:upload-labs(Pass02)
第四篇(存在遗留问题):upload-labs(Pass04)