上传验证绕过——服务端白名单绕过

服务端白名单绕过

  1. MIME类型检测绕过

Upload-labs(Pass-02)第二关通过服务端对数据包的MIME进行检查 通过burp修改Content-Type类型

将content-type修改为image/png

上传成功

  1. %00截断绕过

%00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串 时,都是以\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\0字符时,就认为读 取到了一个字符串的结束符号。因此,我们可以通过修改数据包,插入\0(%00或者00)字符的方式, 达到字符串截断的目的。 在url中%00表示ASCll码中的0,而0作为特殊字符保留,表示字符结束。当url中出现%00时就认为读取 已结束,而忽略后面上传的文件或者图片,只上传截断前的文件。

举例:http://www.XXX.com/upload/aaa.php%00bbb.jpg 由于%00有截断功能,服务器在接收的时候,就直接对url编码(即%00)进行解码,然后再去接收文 件,这时候后面的bbb.jpg被截断掉,文件名就变成了aaa.php,所以最后服务器接收到的文件名是 aaa.php。

截断原理: 就是利用0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进 行截断,而后面的内容又可以帮助我们绕过检测。 00截断通常用来绕过web的白名单限制。Upload-labs(Pass-12)看代码可以得知是一个白名单,只允 许上传'jpg','png','gif'格式的文件。但是上传路径是可以控制的,可以使用%00进行截断。 截断条件: 1、php版本小于5.3.4 2、php.ini的magic_quotes_gpc为OFF状态

因为我的docker环境不满足实验条件,所以我在windows系统中搭建环境,选择php版本为5.2,打开php.ini 文件,设置 magic_quotes_gpc = OFF

在新环境中的Upload-labs(Pass-11)进行操作

进行文件上传: 修改PHP文件后缀为png save_path 后增加文件名 1.php%00

访问1.php成功

上述%00绕过方式为get型的

下面我们来演示以下post型

新环境中的Upload-labs(Pass-12)

抓包修改

但是这个地方有个点需要注意,就是post型不会对%00自动编码,所以需要我们手动编码

访问1.php成功

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值