|
主题: 我想只道这篇文章中的万能密码是什么?
|
水木
职务:普通成员
等级:1
金币:0.0
发贴:145
|
#12004/4/12 15:49:47
因为我想测试一下我的程序是否安全.
以下的实例,可能网络上有些网站刚好存在这些问题,希望存在问题的网站能够及时修改程序改正,读者也不要利用这些漏洞做不符合国家法律法规的事情。
1、万能密码 这个漏洞,一些读者可能已经知道,但是,由于网络上依然很多网站存在这些漏洞,我们还是有必要详细、全面的了解这个漏洞的形成原因和严重后果。首先,我们来看看漏洞的产生。这个漏洞是因为在程序验证账号密码的时候程序不严谨造成的。我们在程序设计的时候,常常将账号、密码放在一个叫“User”的数据表中,设置“username”和“password”两个字段,当验证的时候,检查用户的输入是否存在于这个数据表,如果存在,证明这个用户合法;不存在,证明用户不合法。漏洞的出现,就是这个验证代码的编写不严谨造成的,我们来看原代码。 ‘连接数据库 Set Conn=Server.CreateObject("ADODB.Connection") Connstr="DBQ="+server.mappath("db\news.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;MaxBufferSize=512; MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;" ‘打开数据库连接 Conn.Open connstr ‘数据库选择语句 mysql="select * from user where userid=’”&txtuserid&”’ and pwd=‘”&txtpwd&” " set rs=server.createobject("adodb.recordset") rs.open mysql,conn,1,1 if not (rs.eof) then rs.close conn.close response.redirect"ok_login.asp" end if 在以上的代码中,我们看mysql的定义,这里的txtuserid和txtpwd都是直接来自用户的输入,如果用户构造特殊的用户名或者密码,就可以直接让这里的Select条件为“真”,完全不必理会是否有合法账号密码。我们这里不直接给出万能密码,希望有经验的读者仔细分析select语句,找出可能的漏洞。
|
rainbowqqz
职务:普通成员
等级:1
金币:0.0
发贴:30
|
#22004/4/12 17:02:23
利用SQL注入漏洞来进行跨库查询,先猜WEB路径,再进行跨库查询。代码你自己想。
|
{ 在指尖上绽放的花朵 }
职务:普通成员
等级:5
金币:14.0
发贴:3209
|
#32004/4/12 20:10:18
mysql="select * from user where userid=’”&txtuserid&”’ and pwd=‘”&txtpwd&” "
仔细看这句。
|
绿茶
职务:普通成员
等级:8
金币:10.0
发贴:19267
|
#42004/4/15 14:44:50
行者在上个帖子中说 引用: mysql="select * from user where userid=’”&txtuserid&”’ and pwd=‘”&txtpwd&” "
仔细看这句。
如果使用这样的查询,那这个验证形同虚设
|
缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
|
#52004/4/15 15:08:20
germchen在上个帖子中说 引用: 行者在上个帖子中说 引用: mysql="select * from user where userid=’”&txtuserid&”’ and pwd=‘”&txtpwd&” "
仔细看这句。
如果使用这样的查询,那这个验证形同虚设
那倒也未必 过滤一下字符就可以了
|
janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#62004/4/15 16:05:21
似乎有全角引号 -_-!
|