在防范sql注入时,对变量过滤不足甚至没有过滤而构造畸形sql语句,极有可能被成功注入,比如下面这行sql,相当轻松就注入成功了:
大家可能觉得变量过滤了'就可以防止SQL Injection攻击,仅仅过滤'是不够的,在'被过滤的情况下我们照样玩,看下面语句:
是不是跟上面的那句有很大区别?可是效果完全是一样的,其实这些都是SQL语句。
0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400
这句是“net user angel pass /add”的16进制格式。
先声明一个变量a,然后把指令赋值给a,然后调用变量a最终执行我们输入的命令。变量a可以是任何命令。如下:
解决办法:
过滤变量,限制只允许输入特定字符。
比如对于数字类型的变量就限制只能输入数字类型的数据。
具体在程序中的操作方法,大家在编程时自行实践与总结,从细节入手,对于防范sql 注入务必处处用心啊。