首页
社区
课程
招聘
[讨论]关于SQL注入如果我屏掉空格。。
发表于: 2010-6-3 13:28 9265

[讨论]关于SQL注入如果我屏掉空格。。

2010-6-3 13:28
9265
在网页获得参数值的时候,判断值,如果值有空格就不能进行下一步操作。
是不是就能达到防止SQL注入?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
因为SQL语句一般是含空格的,获得的参数值与注入的SQL语句之间肯定也有空格,用if语句判断如果有空格就不能操作。
2010-6-3 13:34
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
如果这样呢?
update/**/user/**/ set/**/password='123456';
也没空格.
2010-6-7 15:11
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这样的sql语句能执行吗?我还没见过这样的sql语句,请问一下这样的sql语句在哪种数据库执行?转义符号?请赐教。
2010-6-8 11:21
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
update/**/T_SYS_USER/**/set/**/US_PWD='111'  SQLserver2005真的可以执行,大哥好厉害!
2010-6-10 15:04
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习了
2010-6-10 15:05
0
雪    币: 4634
活跃值: (936)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
7
and((select(asc(mid(pass,1,1)))from[name])>97
谁说注入一定需要空格哇。。。
2010-7-3 04:56
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
禁止一切特殊符号。 既然连空格都可以禁止,其他符号没有理由放行。
2010-7-3 08:39
0
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
如果你是MSSQL可以使用@参数化你要查询的条件,只做屏蔽和过滤是非常危险的。
2011-10-5 12:58
0
雪    币: 324
活跃值: (113)
能力值: ( LV15,RANK:280 )
在线值:
发帖
回帖
粉丝
10
有些数据库引擎这样也行,se/**/lect * from user.
2011-10-17 12:24
0
雪    币: 87
活跃值: (25)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
11
这个是什么数据库可以,能否指教一下?谢谢 (我试了好几个数据库都不可以)
2011-11-1 12:50
0
雪    币: 7060
活跃值: (2890)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
当然可以执行了,/**/ 在sql语句中是注释的作用, 其实还有很多方法可以代替空格的。所以仅仅过滤空格是不行的。
2011-11-1 16:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
如果过滤掉单引号呢?时不时就完全OK了?
2011-12-23 20:12
0
雪    币: 5331
活跃值: (3562)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
参数是 数字。。。直接转换 int ,异常就over
2011-12-24 04:19
0
雪    币: 424
活跃值: (13)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
15
楼上的 宽泛一点 就是白名单的概念了 只允许指定的规则内语句执行 不过网站需要先进行一段时间的学习 同时 时下的很多java框架 稍微注意一下 基本注入就都防护了
2012-2-1 11:47
0
雪    币: 196
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
字符串,过滤单引号。数字参数强制INT转换
2012-4-6 13:57
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
这个是可以执行的,/**/就是mysql中的注释嘛
2012-4-7 10:51
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
这个是可以执行的,/**/就是mysql中的注释嘛
2012-4-7 10:52
0
雪    币: 703
活跃值: (327)
能力值: (RANK:380 )
在线值:
发帖
回帖
粉丝
19
把提交的数据通过web程序自定义编码后扔到数据库存储就一切清静了。
例如
select xx from xx
s            e          l
xxx       xxxx       xxxxx  代表这个编码方式没有空格和不和谐的特殊符号()/*%什么的就行了。
每个字符重编码 现实的时候解码返回
乱弹一下 呵呵
2012-4-23 11:28
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
对提交的参数进行安全检查就可以了。判断提交参数的数据类型以及长度,对付一般的注入就可以了。
对于字符串要有长度限制,和过滤特殊符号。
2012-4-23 14:16
0
雪    币: 85
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
不就一空格么 union+select+username,password+form+admin--
或者换成chr(XX), %XX等等~~
2012-4-23 14:27
0
雪    币: 220
活跃值: (766)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
这些+密,变换对ACCESS都是无效的
2012-4-23 14:34
0
雪    币: 1681
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
itf
23
学习了!!!!!!!!!!!!!
2012-4-25 16:32
0
雪    币: 3
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24

不行的 ,还是不安全,因为ascii 码表 256个字符里面有不少可以代替空格 ,具体可以用脚本跑一下就知道,这个 在 sqli-labs第26课有相应的实验 ,就是要你在空格被过滤的情况下找到可以代替空格的字符 ,

可以用下面的 ruby脚本找到可以代替空格的字符 :

require 'net/http'
require 'open-uri'

$url = "http://127.0.0.1/Less-26/?id=1"
$success_str = "Dumb"
255.times do |i|
  sep = '%' + '%02x' % i
  request = "http://127.0.0.1/Less-26/?id=#{sep}1"
  open(request) do |io|
  	filters.push(sep) unless io.read.include?($success_str)
  end
end

puts filters



2017-10-30 14:44
0
游客
登录 | 注册 方可回帖
返回
//