0x:16进制表示 00:表示0 0x00:就是代表16进制的0,在ASCII码里代表null。
有的函数在处理这个字符时,会当做结束符
%00 和 00 是一样的,只是在get提交时,%00是经过url编码的,%00解码后就是0x00截断的那个字符
查看提示:
可以用%00进行截断
前提条件:
php 版本 < 5.3.4且php的参数magic_quotes_gpc必须关闭
(但是在php7.x的部分高版本里面也有这个漏洞)
因为上传的表单中有一个enctype的属性,并且需要enctype=“multipart/form-data” (不对表单中数据进行编码),path大多数都是存放在表单中的,因此需要在数据包中进行urldecode操作使%00变成字符串结束符号。
通过Burp Suite将save_path=../upload/ HTTP/1.1
使用%00进行截断-> save_path=../upload/filename.php%00 HTTP/1.1
同样利用%00进行截断
利用ASCII:American Standard Code Information Inexchange[美国标准信息码交换]
1、首先编辑一个.php文件,将其上传的同时修改后缀名为.jpg,文件类型修改为:image/jpeg
2、 在这个位置加上234.php+
变成 ../upload/234.php+
然后到到 十六进制 那一栏里找到+
代表的2b
,改成00
注意:此处请参见ASCII码对应的特殊符号的字符编码,比如此处使用+代表'2b'或者a代表空格。