关于0x00截断GET提交与POST提交的区分

关于0x00截断GET提交与POST提交的区分

0x00截断的条件

  • php版本<5.3.4(在PHPstudy里可以更改php版本)
  • magic_quotes_gpc关闭
    方法:
    1.先在根目录里创建一个phpinfo.php文件,并在浏览器url打开http://localhost/phpinfo.php,内容为
  <?php phpinfo ?>

2.在输出phpinfo()的页面ctrl + f, 查找 ini在这里插入图片描述
3.php.ini配置 magic_quotes_gpc = off

0x00截断的原理

白名单检测的话,我们可以采用00截断绕过。00截断利用的是php的一个漏洞。在 php<5.3.4 版本中,存储文件时处理文件名的函数认为0x00是终止符。于是在存储文件的时候,当函数读到 0x00(%00) 时,会认为文件已经结束,所以会把00后面的所有字符删除。(因为当上传一个yjh.jpg后,再更改路径’下图所示圈出部分为后期加入的’,最后得到的yjh.jpg上传的路径实际为…/upload/yjh4.php /6620210314091414.jpg,而php读取的方式是从后往前读取,遇到0x00时停止,故并未检测到yjh4.php)
在这里插入图片描述

GET提交

例1:CTFHub中的00截断
在这里插入图片描述例2:upload-labs的pass-12在这里插入图片描述

由图中黄色(红色)标记部分可以看出此时为GET提交,发现路径没有处理直接拼接上去的,所以可以利用00截断绕过。

  • GET提交做法
    1.先上传yjh.jpg,抓包
    2.在如图划线位置改为/upload/yjh4.php%00,然后再放包
    在这里插入图片描述3.上传成功,蚁剑连接(连接后面应为yjh4.php,而并非yjh4.jpg)

POST提交

使用POST传地址,post不会像get对%00进行自动解码,需要在Hex中修改,或者也可以使用url-decode进行编码之后进行上传文件,同样可以解析成功。
例:upload-labs的pass-13
由图中红色标记部分可以看出此时为POST提交,发现路径没有处理直接拼接上去的,所以可以利用00截断绕过。
在这里插入图片描述

  • post提交做法:
    1.先上传yjh.jpg,抓包;
    在这里插入图片描述

2

  • 在Hex中修改
    在荧光部分后面加上yjh.php+空格
    在这里插入图片描述

由于空格对应的十六进制是20 ,将20 改成00,再send
在这里插入图片描述

  • 使用url-decode进行编码
    先改为荧光所示部分
    在这里插入图片描述再使用burpsuite对%00进行解码
    在这里插入图片描述
    最后得到上传文件为
    在这里插入图片描述
    最终在保存时会去掉后面的变成:…/upload/yjh4.php
    3.最后蚁剑连接

总结

GET,POST 提交仅仅是对于%00的处理上有区别,使用POST传地址,post不会像get对%00进行自动解码,需要人为解码。

补充

下面为00截断在代码审计方面应用
在这里插入图片描述
图片来自这里
由阅读代码可以得知:ntcf的内容必须为数字,但又必须有#biubiubiu在里面,故想到00截断,由于后面发现浏览器会对#的编码问题,浏览器会把#编码为空,也就没有发送出#,因为#是url编码里的特殊字符,所以应写成url编码格式,查询可知#经url解码后为%23.

知识点:
strpos() 函数:查找字符串在另一字符串中第一次出现的位置。
strpos() 函数对大小写敏感。
相关函数:
stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值