使用MySQL字符串运算实施精巧化SQL注入攻击

来源:互联网 发布:淘宝下架宝贝重新上架 编辑:程序博客网 时间:2024/06/02 05:30
本文转载自使用MySQL字符串运算实施精巧化SQL注入攻击
我们先来看这样一个场景。


这是怎么回事呢?我们来看一下警告信息。

提示截断了错误的DOUBLE值,当在一个字符串类型的列中使用数字类型的值时会产生这类警告。 我们单独执行select ''-'';看下结果。


空字符减去空字符,结果返回0。也就是说,我们查询的每一行的name字段都会和0做对比,这样就会触发一个类型转换,对name字段转换的结果也必然为0。通过执行select CAST((select name from admin limit 1,1) as DECIMAL);可以验证。因此,where语句构成了相等的条件即where 0=''-'',记录被返回。
SQL注入场景: http://www.sqlzoo.net/hack/

如果我们想绕过登录验证,上面已经给出了一个传统的tips:用户名密码均为' or ''='。这样的逻辑和绕过方式很常见,这里不再具体解释了。那么通过这次发现的技巧,可以使用一种相当精巧的方式,且避免使用SQL关键字,来绕过登录。仅仅在name子段输入'-''#,password留空,即可绕过登录验证。


除了''-'',其他运算符''+'',''*'',''^''都会有同样的效果。 再继续进行测试,我们发现只要在闭合单引号的情况下构造查询结果为0的条件即可。


利用这样一种特性,当目标对注入语句中的SQL关键字进行过滤时,便可通过这样一种方式进行Bypass。
0 0