00截断原理核心分析(重点)

-

在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.csdn.net/upfiles/?filename=test.txt 此时输出的是test.txt

加上%00

https://mp.csdn.net/upfiles/?filename=test.php.txt 此时输出的是test.php

就绕过了后缀限制,可以上传webshell啦。

0X00截断

0x开头表示16进制,0在十六进制中是00, 0x00就是%00解码成的16进制
00截断原理核心分析(重点)_第1张图片
这里在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判断文件是否存在

你可能感兴趣的:(安全开发,web安全,实战篇)