目录
欢迎各位师傅以kill -9 的威力对文章进行检查,Zeus会认真分析听取各位师傅的留言。
1. SQL 注入分类
根据不同的标准,SQL注入漏洞可以有不同的分类。
两大基本类型 | 五大基本手法 | 提交参数方式 | 注入点的位置 |
数字型 字符型 | 联合查询 报错注入 布尔盲注 延时注入 堆叠查询 ...... | GET 注入 POST 注入 Cookie 注入 HTTP 头部注入 ...... | URL 注入 搜索框注入 留言板注入 登录框注入 ...... |
2. SQL 注入流程
库→表→列→数据
3. 联合查询
适用数据库中的内容会回显到页面中来的情况。联合查询就是利用union select 语句,该语句会同时执行两条select 语句,实现跨库、跨表查询。
3.1 必要条件
- 两条select 语句查询结果具有相同列数;
- 对应的列数据类型相同(特殊情况下,条件被放松)。
4. 注入流程
4.1 判断注入类型
如何判断注入类型和列数,具体可查看8.27日的文章,通道:cms靶场联合查询漏洞练习_netsecurity_Zeus的博客-CSDN博客
4.2 判断列数
order by X
X :表示正整数。例:1、2、3......
当X=3 时,页面无回显,不正常
当X=2 时,页面有回显,正常
可推断出,此数据库存在两列。
4.3 获取数据库---库名称
union select 是联合查询语句,使用联合查询语句,需要将第一个select 语句执行错误。
两条select 语句,如果第一条语句执行正确,则不会回显第二条select 语句内容。
-1 union select 1,database()
4.4 获取表---表名称
获取sqli 数据库下的所有表名。
group_concat :将多行数据按照指定的顺序连接成一个字符串。也就是获取所有的意思。
information_schema :在关系型数据库中常见的系统数据库,每一个数据库都会自动生成。
information_schema:数据库包含了一系列的系统表,提供了关于数据库、表、列、索引、权限等元数据信息的访问接口,允许用户查询和获取数据库结构相关的信息。
-1 union select 1,group_concat(table_name) from information_schema.tables
4.5 获取列---列名称
获取flag 数据包中的列名称,这里发现回显出的内容还是flag,这可能会有点困惑,这其实就是flag中的flag。
不明白的话我们可以换一个表名称,去获取表中的列数,这里换了news表,可以发现此表中含有id 和data 。这就可以理清了。
-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='flag'
4.6 获取数据
成功获取flag !!!
恭喜你!!!
-1 union select 1,flag from flag
此数据库有两列,Zeus是在第二列敲的命令,大家也可以在第一列进行敲入命令。