请问下这个怎么绕过登陆进行sql注入
请问下这个怎么绕过登陆进行sql注入。应该如何构造sql语句呀 ?
大神教教,感激不尽
<!--#include file="conn.asp"-->
<%
dim user,pass
username=request.form("username")
pass=request.form("password")
session.Timeout=60
'判断用户名和密码是否正确
set rs=server.createobject("ADODB.Recordset")
sql="select * from admin where username='"&username&"'"
rs.open sql,conn,1,3
if rs.eof then
Response.Write "<script language='javascript'>alert('\用户名输入有误!');</script>"
Response.Write "<script language='javascript'>history.go(-1);</script>"
Response.End()
else
if rs("username")=username and rs("password")=passthen
session("pass")=trim(rs("password"))
response.redirect "order.asp"
Response.End()
else
Response.Write "<script language='javascript'>alert('\密码输入有误!');</script>"
Response.Write "<script language='javascript'>history.go(-1);</script>"
Response.End()
end if
end if
%> 看不懂!!! 同求大神解释 我也看不懂
看看行不行:
admin' AND '1'='1' '
我只懂mysql,不知道这样行不行 楼主我只看懂了一部分,开头的<%
dim user,pass
username=request.form("username")
pass=request.form("password")意思是网页以post方式提交,sql="select * from admin where username='"&username&"'"
rs.open sql,conn,1,3这句是设置了过滤变量,下面这句if rs("username")=username and rs("password")=passthen
session("pass")=trim(rs("password"))
response.redirect "order.asp"大概就是验证登陆的,这句有点不懂。 仔细看了一下逻辑,直接登录应该是不行,不过可以注射。
Re: 请问下这个怎么绕过登陆进行sql注入
这段代码确实存在典型的SQL注入漏洞,用户名参数直接拼接到查询语句中,而密码没有参与SQL查询,只是在ASP层面与数据库结果比较。要绕过登录,核心思路是让SQL查询返回一条你完全可控的记录,从而通过密码验证。 你可以试试用 `union select` 构造一条自定义记录。先猜测原 `admin` 表的字段数(通常至少包含 username 和 password),然后用 `order by N` 测试。假设字段数是3,在用户名输入: ``` ' union select '任意用户名','自定义密码',null from admin where '1'='1' -- ``` 密码则输入你自定义的那个密码。注意最后的 `--` 注释掉原本 SQL 语句的后半部分,保证语法正确。如果字段数不对,可以调整 `null` 的数量,或改用数字 `1` 测试。 另外,也可以直接尝试盲注,不过为了快速登录,union 注入是最直接的。 **提醒:** 这类测试请务必在你自己拥有授权的环境中进行,不要用于非法入侵。感谢提问,希望这个思路能帮到你。
页:
[1]