基础
一、MySQL有一个系统数据库information_schema, 存储这所有的数据库的相关信息,一般的,我们利用该表可以进行一次完整的注入。以下为一般的流程。
猜测数据库
猜测某库的数据表
猜测某表的所有列
获取某列的内容
二、系统函数
1、version()—-MySQL版本
2、user()—-数据库用户名
3、database()—-数据库名
4、@@datadir—-数据库路径
5、@@version_compile_os—-操作系统版本
三、字符串连接函数
1、concat(Str1, str2,…)—-没有分隔符的连接字符串
2、concat_ws(separator, str1, str2,…)—-含有分隔符的连接字符串
3、group_concat(str1, str2,…)—-连接一个组的所有字符串,并以逗号分隔每一条数据
四、一般用于尝试的语句
Ps: –+可以用#替换
五、union操作符的介绍
UNION操作符用于合并两个或多个SELECT语句的结果集。请注意,UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。
盲注的介绍
盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。盲注分为三类:
- 基于布尔SQL盲注
- 基于时间的SQL盲注
- 基于报错的SQL盲注
基于布尔SQL盲注—-构造逻辑判断
我们可以利用逻辑判断进行截取字符串相关函数解析
正则注入介绍
基于报错的SQL盲注—-构造payload让信息通过错误提示回显出来
基于时间的SQL盲注—-延时注入
sqlmap注入
一、查询数据库sqlmap -u "http://10.6.67.209L8881/sqli-labs/Less-1/?id=1" --dbs
二、查询当前使用的数据库sqlmap -u "http://10.6.67.209L8881/sqli-labs/Less-1/?id=1" --current-db
三、查询所有表sqlmap -u "http://10.6.67.209L8881/sqli-labs/Less-1/?id=1" -D [table] --tables
四、查询users所有字段sqlmap -u "http://10.6.67.209:8881/sqli-labs/Less-1/?id=1" -D [table] -T users --columns
五、指定查询的列sqlmap -u "http://10.6.67.209:8881/sqli-labs/Less-1/?id=1" -D [table] -T users -C username,password --dump