php文件上传之白名单00截断实验

打印 上一主题 下一主题

主题 829|帖子 829|积分 2487

%00截断

介绍:
0x00,%00,/00 在url中 %00 表示ascll码中的 0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。但是所谓的if拦截仍会读取后面的后缀达到绕过白名单的效果。
当前版本环境:
PHP版本低于5.4.24,或者PHP版本在5.5.8到5.6.0之间,且GPC关闭(php.in中"magic.quotes gpc"选项设置为0ff) ,则可能存在PHP文件上传时被00截断的问题,此后的PHP版本中,该问题已经得到修复,同时不再需要关闭GPC

前端界面:

源码:
  1. [/code]源代码中:
  2. 正常%00截断上传流程:
  3. [img]https://img2023.cnblogs.com/blog/2859604/202306/2859604-20230612115637434-185374702.png[/img]
  4. [img]https://img2023.cnblogs.com/blog/2859604/202306/2859604-20230612115637048-1142598629.png[/img]
  5. 获取的后缀是.php所以绕不过第一个if白名单的检测。
  6. 更改之后的代码:
  7. [code]
复制代码
使用$savepathPOST传递文件名称参数,$extension = end($temp)=123.php%00.jpg=jpg,从而绕过白名单的检测,最后的move_uploaded_file保存$_FILES["file"]["tmp_name"]使用截断绕过避免生成生成静态文件123.php%00.jpg。
结果:

参考:
http://www.admintony.com/关于上传中的00截断分析.html

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦见你的名字

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表