注册 登录
编程论坛 SQL Server论坛

注入SQL

dzxiaojie 发布于 2011-01-25 00:24, 804 次点击
<%
Dim StrServer,StrUid,StrSaPwd,StrDbName
StrServer="192.168.1.2" '数据库服务器名
StrUid="sa" '您的登录帐号
StrSaPwd="8866333" '您的登录密码
StrDbName="dzjt" '您的数据库名称

Dim Conn '数据库连接
Dim StrDSN '数据库连接字符串
Dim Rs '命令字符串

StrDSN="driver={SQL server};server="&StrServer&";uid="&StrUid&";pwd="&StrSaPwd&";database="&StrDbName
'建立和数据库master的连接
set Conn = Server.CreateObject("ADODB.Connection")
set Rs=Server.CreateObject("ADODB.RecordSet")
Conn.Open StrDSN

%>

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

<!--#include file="adoconn.asp"-->
<!--#include file="md5.asp"-->
<%
username=request.Form("username")
password=request.Form("password")
crypt_password=md5(password)

SQL="Select Max(F_ID) From T_usercore"
set rs1=conn.Execute(SQL)
tmp=rs1(0)

sql="select * from T_usercore where F_username='"&username&"'"
rs.open sql,conn,1,1
If Not rs.eof Then
 response.write "no"
 response.end
End If
rs.close

sql="insert into T_usercore(F_id,F_username,F_type,F_Seconds,F_active,F_stoptime,F_password,F_Coints) values('" & (tmp+1) & "','"&username&"',0,720000,1,'"&Now()&"','"&crypt_password&"',0)"
rs.open sql,conn,1,3
response.write "yes"
%>


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


<!--#include file="adoconn.asp"-->
<%
username=Replace(request.querystring("username"),"'","")
sql="select * from T_usercore where F_username='"&username&"'"
rs.open sql,conn,1,1
if rs.eof then
 response.write "no"
else
 response.write "yes"
 end if
 rs.close
 %>

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

哪位高手看下这个怎么注入








6 回复
#2
haigecnpeng2011-01-26 20:47
' or 1=1 or ''='
#3
dzxiaojie2011-01-29 01:25
以下是引用haigecnpeng在2011-1-26 20:47:41的发言:

' or 1=1 or ''='
我打开网址输入 http://192.168.1.2/checkuser.asp?username=test (这个账号存在)返回的就是yes  http://192.168.1.2/checkuser.asp?username=test 'or 1=1 ''=' 返回的就是no  不像网上说的那样返回什么错误信息啊 怎么才能注入
#4
baoyuwang1982011-02-06 19:44
真实的注入并非和网上传的一样
很多注入法都失效了
password=5 'or '1'='1 这是一种
insert into talble1 values(txtbox1.Text);
我们现在给txtbox1.Text插入这么一句进去 "U") delete from Table1 --    //用--把原来的右括号给注释了
等等..
不过现在数据库一般都用参数化查询解决了这个漏洞
#5
dzxiaojie2011-02-07 22:44
以下是引用baoyuwang198在2011-2-6 19:44:55的发言:

真实的注入并非和网上传的一样
很多注入法都失效了
password=5 'or '1'='1 这是一种
insert into talble1 values(txtbox1.Text);
我们现在给txtbox1.Text插入这么一句进去 "U") delete from Table1 --    //用--把原来的右括号给注释了
等等..
不过现在数据库一般都用参数化查询解决了这个漏洞
http://192.168.1.2/zyxtj//adoconn.asp
我打开这个是个空白页面

http://192.168.1.2/zyxtj/checkuser.asp
打开这个返回的是yss

http://192.168.1.2/zyxtj/checkuser.asp?username=badao
打开这个也是返回的 yes  badao这个用户存在

http://192.168.1.2/zyxtj/checkuser.asp?username=badao1

打开这个返回的就是no  badao1 这个用户不存在


怎么才能注入
#6
qingshuiliu2011-02-09 11:22
这个话题,本来不应该在论坛中探讨。所以,以下说明纯粹是技术探讨
注入,从本质上讲是拼接成可以执行的SQL语句。
最常见的就是在登录的情况下,例如从数据库获取一个用户的查询为:
假如: select * from [User] where Account='sa' and Password='XXXXXX'
这种情况下,在用户名和密码框中分别输入“sa”,“fsdf' or 1=1”
则最后的查询为:select * from [User] where Account='sa' and Password='fsdf' or 1=1
注意到最后的查询条件,这个查询总是成功的。
不过,SQL注入真的没有什么意思,而且很容易通过参数化,加密等方法可以防止。
还有,站在网站创建人的角度想想,大家都不容易,不要去做这种损人不利己的事情。
#7
zznice2011-02-11 00:34
版主,我不认同你的观点,只有研究好怎么注入,这样我们写出的程序才会更加强壮,这样对网站的安全来说,不是更好?
1