文件上传绕过方法汇总

注意点

在这里插入图片描述

1 区别前端还是服务器验证,点击提交,是否有包
2 截断绕过的原理是,对文件的重命名

一 客户端绕过

1 js前端绕过
开启阻断,把1.php暂时修改为1.jpg,拦截了再修改
在这里插入图片描述
在这里插入图片描述
2 上传成功,复制图像地址
在这里插入图片描述
在这里插入图片描述

二 服务端绕过

1 MIME绕过

检测传输类型,content-type
mime是本地检查,还是服务端检查,抓包判断一下
在这里插入图片描述

这是一个post包,交给服务器检查了
在这里插入图片描述

开启截断,改完后放过去
在这里插入图片描述

复制图像地址,成功实现
在这里插入图片描述

2 php3、php4

第一步先尝试把1.php伪装成1.jpg,截断,改包名,但是失败,基于服务器的检查
在这里插入图片描述

绕过失败,决定更换方法,先分析是白名单还是黑名单
空格绕过失败,点失败,…失败,phP大写绕过失败
php双写可以绕过,但是无法解析
在这里插入图片描述

扫描二维码关注公众号,回复: 12569480 查看本文章

绕过方法:
可以通过php3,php4,phhtml
需要在apache服务器添加
在这里插入图片描述

先搜索 AddType text/html
在这里插入图片描述
在这里插入图片描述

提示下载,还是无法解析
在这里插入图片描述

3 .haaccess

但注意版本
在这里插入图片描述

强制解析,先上传time.jpg解析为time.php
在这里插入图片描述

4 也是.htaccees

不在详细

5 大小写绕过

1 代码分析
没有了转换小写
在这里插入图片描述
在这里插入图片描述

2 绕过方法
1.Php
在这里插入图片描述

3 结果
可以绕过成功,但是无法解析
在这里插入图片描述

6 空格绕过(trim函数)

可以一次加很多空格,windows不知别空格
1 通过burp截断,加很多空格
2 代码识别,少了trim函数
在这里插入图片描述
在这里插入图片描述

3 最终结果
http://192.168.46.128/upload/upload/202010271051214021.php
在这里插入图片描述

7 末尾点 (delot函数)

1 分析函数

在这里插入图片描述
没有这个函数
在这里插入图片描述

2 绕过方法,末尾加点绕过
在这里插入图片描述

3 结果
http://192.168.46.128/upload/upload/1.php.
在这里插入图片描述

8 ::$DATA

1 代码分析
没有了str_ireplace函数
在这里插入图片描述
在这里插入图片描述

2 绕过方法
末尾加::$DATA
在这里插入图片描述

3 结果
http://192.168.46.128/upload/upload/202010271104144050.php
必须去除::$DATA
在这里插入图片描述

9 空格.

绕过方法
1.php.空格.
他删除一个点,还有一个点,绕过黑名单
http://192.168.46.128/upload/upload/202010271104144050.php

在这里插入图片描述

10 双写

1.pphphp
http://192.168.46.128/upload/upload/1.php
在这里插入图片描述

11 %00截断

白名单其实是利用上传的jpg,但是在重新命名的过程中做了修改

白名单00绕过,这也是post,但是路径在头部
在这里插入图片描述

1 绕过准备,切换最低版本,关闭gpc,重启phpstudy
在这里插入图片描述

2 绕过方法,在路径后加1.php%00
在这里插入图片描述

3 结果
http://192.168.46.128/upload/upload/1.php%EF%BF%BD/9320201027141323.jpg
在这里插入图片描述

删除多余的东西
在这里插入图片描述

12 hex–00截断

0x00 post绕过
在这里插入图片描述

1 研究
不是在get头部直接加0x00,需要在代码里输入

2 绕过方法
这个需要手动打上断点 20表示空格,00表示结束,手动在hex输入
输入三个空格
在这里插入图片描述

三个20修改成00
在这里插入图片描述

3 结果
有三个空格
在这里插入图片描述

删除三个空格
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48776804/article/details/113360018