sqli-labs靶场练习

less-1第一关

?id=1’报错   ?id=1’--+ 不报错 ,则为单引号闭合

闭合如下

判断列数 分别输入order by1,2,3,4--+

输入127.0.01/sql-libs/Less-1/?id=1' order by 4 --+时,不显示列数,说明仅有3列。输出如下

然后进行联合注入

查找报错位  当union前面的语句为false,才会执行后面语句发现哪些位置是可以显示的

把id改为0或负数的作用 :确保联合查询的结果可见:通过将id设置为0或负数,攻击者可以确保原始查询返回的记录尽量少,甚至没有记录。这使得UNION查询的结果更容易被观察到。避免意外的数据干扰:如果原始查询返回了很多记录,这些记录可能会掩盖联合查询返回的数据。将id设置为一个不可能存在的值(如0或负数),可以避免这种情况,从而更容易查看和分析联合查询的结果。利用数据库的特性:在某些数据库系统中,id为0或负数的记录可能不存在。这有助于确保只有UNION查询返回的结果被显示。

联合查询显示数据库名和用户

爆表名---users

union select:UNION操作符用于合并两个或多个SELECT语句的结果集,并删除重复的行。这里,它用于将攻击者的查询结果与原始查询的结果合并。

group_concat(table_name)是一个聚合函数,用于将information_schema.tables表中所有table_name字段的值连接成一个字符串。1和3是占位符,用于与原始查询的列数相匹配(假设原始查询至少有两列)。

from information_schema.tables:指定了查询的数据源。information_schema.tables是MySQL的一个特殊表,包含了所有数据库的所有表的信息。

where table_schema='security':这是一个条件语句,用于过滤出table_schema(即数据库名)为security的表。--+:这是SQL注释。

爆所有表名

爆列名:id,username,password

爆数据(用户名 密码)

22

less-2第二关

?id=1 and 1=1显示与原页面相同

?id=1 and 1=2显示与原页面不同,并且1=2页面报错,数据显示不正常,则可判断位数字型注入。

后续注入方式与less-1相同,同为union注入(爆库--爆表--爆列--爆字段数据)

爆列数--可判断为3列

判断回显位

爆库名和版本

爆表名

爆列名

爆数据(账号密码)

less-3 第三关

?id=1'and 1=1 和?id=1'and '1'='1进行测试如果'1'='1页面显示正常,并且1=1页面报错或者页面部分数据显示不正常,此处为字符型注入。

后续注入方式与less-1相同,同为union注入(爆库--爆表--爆列--爆字段数据)

less-4 第四关

在id后加入反斜杠\,发现是双引号括号")闭合

根据页面报错信息得知sql语句是双引号字符型且有括号

后续操作同less-1 相同。

less-5 第五关

?id=1\ 发现是’闭合  ?id=1’ and 1=1 --+页面正常进入

页面正常显示。长度为8

利用ascii码猜测数据库名  第一个字符的ASCII码为115解码出来为“s”第二个字符的ASCII码为99解码出来为“c” ,依次类推出数据库的名字为“security”。

爆表名--第一个表第一个字符是u,依次猜解直到找到users表

判断所有列名长度,依次猜解users表中列名

账号密码

less-6 第六关

?id=1\ 发现是"闭合   ?id=1" --+成功

数据库长度为8

使用updatexml函数爆出数据库名和数据库版本号

随后爆出数据库中的所有表名

爆出所有字段

爆出字段下的内容(id,用户名,密码)

less-7 第七关

闭合方式--手工测试?id=1')) and 1=1--+成功---所以是'))闭合

用order by函数猜列数,列数为3

less-8 第八关

第八关是单引号注入

用--+进行注释,页面正常显示

字段长为8

left(database(),1)>'r'判断数据库名第一位是否大于'r',一直比下去,在's'时就会报错,就说明数据库第一位为's'

然后判断前两位是否大于'se',以此类推猜出数据库名为security。

101页面显示正常,说明就是它,101对应的字母是'e',所以第一张表的第一个字母为'e'
后边的字母也这样依次去猜,后边的表都是这样去猜,依次为emails等。

105页面显示正常,所以users表下的第一个字段的第一个字母为'i',还是一样依次类推下去可以猜出字段名,其他字段同上

68页面显示正常,说明password下的第一个字母为D,还是一样依次类推下去可以猜出字段下内容,其他字段下内容同上。

less- 9第九关

第九关是单引号注入,但是我们输入任何东西页面没有任何变化,所以这关采用时间注入,发现网页加载五秒

使用sleep()函数进行注入 然后判断数据库长度 ,页面延迟五秒刷新,说明数据库长度是大于6的,以此类推可以猜出数据库名长度

逐一判断数据库名的字符 页面延迟五秒刷新,说明数据库名第一个字母为's',以此类推可以猜出数据库名security

页面延迟五秒刷新,说明表名第一个字母为'e',以此类推可以猜出表名

方法与上关相似,不过第九关采用时间盲注。

爆字段

爆字段内容

if(ascii(substr((select group_concat(username,password) from users),1,1))=68,sleep(5),1)--+

less-10第十关

第十关是双引号注入,除了是双引号注入之外和第九关一模一样。

less-11 第11关

判断注入点
首先尝试Username 为admin'#,密码随便输入,成功进入

然后在Usename处判断列数

我们在Usename里输入 as' union select 1,2#
发现选择3时会报错,所以数据的显示就是第一列和第二列

在username中输入 sa' and updatexml(1,concat(0x5e,(select group_concat(username,0x7e,password) from users),0x5e),1)#

爆出字段信息(用户名密码)

less-12 第12关

第12关为双引号POST型字符型变形的注入

同less11类似,不同的是闭合的符号有些不一样
Usename中变为admain''即可

less 13 第13关

POST单引号变形双注入

username中输入admain‘)#,结果为下

无回显。尝试使用报错注入,

admin') and extractvalue(1,concat(0x7e,(select database()))) #

爆出库名security

然后用extract value报错函数爆出表名,字段,字段信息等其他数据。

less-14 第14关

与上一关相同

less-15 第15关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值