%00截断问题
Posted 爬虫仔蛙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了%00截断问题相关的知识,希望对你有一定的参考价值。
%00截断应该是比较经典的攻击手法,但是这个到底是不是漏洞,我也不知道,只是简单记录一下常见的%00利用场景。
一、php 00截断
在php 5.3.4中php修复了0字符,但是在之前的版本中00在php中危害较大。
简单测试一下 php 版本<5.3.4
$_GET["filename"] 这样就可以接收到,这样的请求filename=test.php%00.txt
主要利用常见:
1.上传时路径可控,使用00截断
2.文件下载时,00截断绕过白名单检查
3.文件包含时,00截断后面限制(主要是本地包含时)
4.其它与文件操作有关的地方都可能使用00截断。
二、asp 00截断
在文件上传路径可控中使用过,但是今天发现<%response.write(request("Filename"))%> 传入filename=test.asp%00.txt 获得参数值是test.asp
asp应该自动可以截断00后内容。
又看了一下asp上传路径可控的代码,发现这套代码并不是使用request获得的参数,
formPath=upload.form("uploadtypefy") 获得文件路径
对应的函数:
Public function Form(strForm)
strForm=lcase(strForm)
if not objForm.exists(strForm) then
Form=""
else
Form=objForm(strForm)
end if
end function
应该是这种获得路径的方法有问题,还没有想到其它的利用方法。
三 jsp 00截断
<%
String temp=request.getRealPath("/")+request.getParameter("path");
out.println(temp);
String ext = temp.substring(temp.lastIndexOf(".") + 1);
out.println(ext);
%>
发现确实可以使用00截断,如传入path=shell.jsp%00.txt 获得后缀是txt,但是操作文件的api是使用c实现会导致00截断。因此这个与php相似,利用场景是文件上传 文件下载等。
四aspx 00截断
Request.QueryString["filename"].ToString() 很诡异aspx的请求参数可以产生00截断,而且文件下载也会成功。但是asp的却不可以
以上是关于%00截断问题的主要内容,如果未能解决你的问题,请参考以下文章