CTFWEB-文件上传篇
发布日期:2025-02-04 00:39 点击次数:131
图片
可以看到返回结果php被去空了,当时文件还是上传了,那么我们尝试使用双写绕过1.pphphp图片
看到文件上传成功,我们用蚁剑连接即可图片
如果php后缀替换为txt时,我们无法双写绕过,1.pphphp 1.ptxthpphp文件上传的00截断其实截断的原理也很简单,无论0x00还是 ,最终被解析后都是一个东西:chr(0)chr()是一个函数,这个函数是用来返回参数所对应的字符的,也就是说,参数是一个ASCII码,返回的值是一个字符,类型为string。那么chr(0)就很好理解了,对照ASCII码表可以知道,ASCII码为0-127的数字,每个数字对应一个字符,而0对应的就是NUT字符(NULL),也就是空字符,而截断的关键就是这个空字符,当一个字符串中存在空字符的时候,在被解析的时候会导致空字符后面的字符被丢弃。那么就可以知道00截断的原理了,在后缀中插入一个空字符(不是空格),会导致之后的部分被丢弃,而导致绕过的发生。如:在文件1.php.jpg中插入空字符变成:1.php.0x00.jpg中,解析后就会只剩下1.php,而空字符怎么插入的呢?通常我们会用Burp抓包后,在文件名插入一个空格,然后再HEX中找到空格对应的16进制编码“20”,把它改成00(即16进制ASCII码00,对应十进制的0),就可以插入空字符了这个漏洞比较老条件比较苛刻就不演示了00字符截断需要的版本php版本小于5.3.4 而最新的php版本已经达到8.1java版本小于7u40,而最新的java版本已经达到20以上iconv字符转换异常后造成了字符截断php在文件上传场景下的文件名字符集转换时,可能出现截断问题utf-8字符集 默认的字符编码范围的是0x00-0x7ficonv转换的字符不在上面这个范围之内,低版本的php会报异常,报了异常以后,后续字符不再处理就会造成截断问题123.php上一篇:没有了