基于GET方式的00截断绕过

实验原理

文件上传从客户端进行检测显然是防护不足的,所以需要从服务器端进行防护。
服务端的检测与绕过方法有很多,常见的有:

1. 后缀名检测绕过
2. MIME类型检测与绕过
3. 文件内容检测与绕过
4. 00截断绕过
5. 条件竞争检测与绕过

截断漏洞出现的核心就是chr(0),这个字符不为空 (Null),也不是空字符 (" "),更不是空格。当程序在输出含有 chr(0)变量时,chr(0)后面的数据会被停止,换句话说,就是误把它当成结束符,后面的数据直接忽略,这就导致了漏洞产生。
由于0x00是字符串的结束标识符,PHP会把0x00后面的所有字符删除。攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测。
利用00截断绕过需要同时满足两个条件:

1. PHP版本必须小于5.3.4
2. php.ini配置文件中的magic_quotes_gpc为Off状态(GPC关闭)

实验步骤

1、登录操作机,打开浏览器,输入实验地址:http://ip/upfile/5/up.php

2、在操作机上准备要上传的文件(脚本文件),比如新建info.php文件

3、点击“选择文件”按钮,选中要上传的文件

4、点击“submit”按钮,文件上传失败,不允许的后缀,且URL中有参数

5、将脚本文件info.php的后缀名修改为可允许上传的图片文件的后缀名,比如info.jpg,然后再次选择脚本文件

6、打开桌面的的“Burp”文件夹,双击“BURP.cmd”启动Burp Suite抓包工具

7、切换到“Proxy”代理模块的“Options”,查看Bp的代理

8、切换到浏览器,选择火狐插件中的代理(配置浏览器的的代理),与Bp的代理一致

9、点击“submit”按钮,再次上传文件,Bp成功抓取数据包

10、将数据包"jieduan"参数添加"info.php%00"

11、点击“Forward”,转发数据包,切换到浏览器,脚本文件成功上传

12、关闭浏览器代理

13、访问http://ip/upfile/5/upload/info.php8620210529121207.jpg,脚本解析失败,找不到文件

14、访问http://ip/upfile/5/upload/info.php,上传的脚本文件成功解析

实验总结

掌握文件上传的服务端检测中的基于GET方式的00截断绕过,在使用基于GET方式的00截断绕过服务端的检测上传脚本文件时可以利用Burp Suite工具抓包在数据包的URL中添加“%00”,由于0x00是字符串的结束标识符,PHP会把0x00后面的所有字符删除,所以访问0x00前面的才可以成功解析。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值