-
在web上传中的过程中,最常见的绕过方式—-00截断。
00截断的核心在于chr(0)这个字符,chr(0)是字符串的结束符,在ascll码中,它表示的字符是Null,也就是 空
。当程序输出包含这个chr(0)的变量时,chr(0)后面的数据会被截断。
0x00,%00,/00之类的截断,都是一样的,只是不同表示而已
%00截断
下面是用 URL 编码形式表示的 ASCII 字符

在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束
比如
https://mp.youkuaiyun.com/upfiles/?filename=test.txt 此时输出的是test.txt
加上%00
https://mp.youkuaiyun.com/upfiles/?filename=test.php.txt 此时输出的是test.php
就绕过了后缀限制,可以上传webshell啦。
0X00截断
0x开头表示16进制,0在十六进制中是00, 0x00就是%00解码成的16进制

这里在php的后面添加了一个空格和字母a,其实a写不写都可以,这里加a是为了显示空格的位置。
空格是为了占位,方便修改00。
然后打开hex,(空格的16进制为0x20)修改16进制内容,把20改成00:


就绕过了后缀限制,可以上传webshell啦。
php 00截断
php版本要小于5.3.4,5.3.4及以上已经修复该问题
magic_quotes_gpc需要为OFF状态
include和require一般在网站内部读取文件
file_get_contents一般用于打开一个url或一个文件
file_exists判断文件是否存在

本文深入探讨00截断的概念,强调chr(0)字符在字符串结束时的作用。通过0x00、%00和/00等不同表示方式,解释了如何利用这一特性进行URL路径截断,从而绕过上传限制。举例说明了在PHP环境中,如何通过修改16进制内容实现00截断,以及此技术在不同PHP版本和配置下的应用情况。
1946

被折叠的 条评论
为什么被折叠?



