MySQL注入技巧

author:Utopia

原文地址:http://websec.files.wordpress.com/2010/11/sqli2.pdf

0x00、介绍

也可以参考瞌腄龙的mysql注入科普:http://www.wooyun.org/drops/tips-123

很多东西都是一样的,但是有一些小技巧确实很使用。

以下所有技巧都只在mysql适用,因为它太灵活了

0x01 MYSQl灵活的语法

1 MySQL语法以及认证绕过

注释符:

前缀:

任意混合+ - ~ !

测试后发现and/or后面可以跟上偶数个!、~可以替代空格,也可以混合使用(混合后规律又不同),and/or前的空格可以省略

运算符:

空格替换:%20, %09, %0a, %0b, %0c, %0d, %a0

也可以插入括号,前缀,操作符,引号

字符串格式

2、MySQL常用的一些小工具

常量:true, false, null, \N, current_timestamp....

变量:@myvar:=1

系统变量:@@version, @@datadir....

常用函数:version(), pi(), pow(), char(), substring()....

3、MySQL类型转换

以上的语句都是同样的效果

4、认证绕过

绕过语句:'='

绕过语句:'-'

0x02 关键字过滤

空格

过滤代码/\s/

关键字OR,AND

过滤代码/\sor\s/i,/\sand\s/i

关键字union select

过滤代码/union\s+select/i

如果单独过滤union,使用盲注来获取数据

通过子查询获取单值来进行比较

关键字limit

过滤代码/limit/i

关键字having

过滤代码/having/i

关键字select ... from

过滤代码/SELECT\s+[A-Za-z.]+\s+FROM/i/i

关键字select

过滤代码/select/i

1 有文件读取权限

2 获取列名

使用substr来做过滤条件

关键字select,and,&

'0#

'-1#

使用条件判断来进行true、false的选择

使用嵌套条件'-if(

0x03 函数过滤

构建字符串相关函数

使用conv来进行进制的转换

使用函数来猜解数据

不适用逗号来获取

同样也可以使用一下比较少见的函数来尝试绕过

有些函数有类似搜索匹配的功能

使用函数进行字符串的切割

2种方式都是相同效果

0x04 注入时主要使用的一些东西

使用conv([10-36],10,36)可以实现所有字符的表示

更多详细的东西可以参考原文去了解,还有一些其他的注入资料可以参考

评论

he1renyagao2015-07-25 12:55:59

@园长 还有在整waf?

园长2015-07-24 12:26:11

记下来,有用

Utopia2015-07-22 13:49:59

@mickey ~、!、没有测试太多,规律也不同,主要不清楚他的原理是什么,这个还需要再查下资料才能下定论,!这个不止有3-4个可以有很多,混用可以中间穿插着空格来使用例如~ ~!!!, 前后顺序一样是因为等于号,这里也是给大家抛出这一个点,所以没有做的很详细!!

Mieless2015-07-22 11:50:49

666

Knight2015-07-22 11:04:58

good job