首页 > 数据库 >sqlilabs靶场心得-联合注入

sqlilabs靶场心得-联合注入

时间:2022-11-15 18:33:34浏览次数:41  
标签:语句 sqlilabs 单引号 查询 我们 sql 靶场 心得 id

第一次接触sql,也是第一次接触web,在学长的指导下借助sqllabs靶场来对sql注入进行学习。不知不觉二十多天过去了,学长给的靶场任务也完成了。现在写一些东西来记录一下。

首先要了解什么是sql注入,sql注入就是通过将恶意的sql语句插入原本的查询语句中。之后通过服务器对恶意sql语句的查询来实现爆库

接下来我们一起来看一个简单sql语句

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1

很明显可以看出,这句sql语句显而易见是指从user表中进行查询,通过第一张表的第一列与输入进去的id进行校验。

这时如果我们向url里面添加

?id=1'#

这是什么意思呢,很简单。1代表永真, ' 这个单引号是为了和原本sql语句中id前面的单引号形成闭合。#这个井字符是什么意思,相信有一部分人已经猜到了,这个符号是起一个注释的作用。将后面的东西全都注释掉,以便为了让自己的payload可以顺利的拼接进入sql语句。

我们通常先用?id=1 and 1=1 和?id=1 and 1=2,来判断是否为数字型闭合。若输入这两个语句的界面不同。则说明这是数字型闭合,反之则说明是字符型闭合。

若是数字型闭合我们就可以直接使用?id=1 xxxxxxxx#来实现sql注入了,若是字符型闭合我们则需要进一步判断闭合点,一般情况下有 ' " ') ") 这四种情况。逐一验证即可。我们这里以

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1

这个开头的简单sql语句为例。我们输入的 ' 单引号会与sql语句中的id前面的那个单引号形成闭合,而原有的sql语句后面的单引号被 “冷落” 了,因此就会出现报错。这个时候我们在输入的payload后面加上注释符将后面的 ' 单引号注释掉即可另外的三种情况与此相同,类比即可。

前面我们已经讲解了如何寻找闭合点,接下来我们来说一说如何拼接自己payload来实现目的。这里我们还是以

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1

这个简单的sql语句为例。我们输入的 ' 单引号与前面的单引号形成了闭合,注释符又将后面的sql语句给注释掉了,所以单引号与注释符之间就形成了一个”真空区域“,在这个区域里面我们可以拼接我们想要拼接的任意语句

至此我们讲完了payload的大致组成,接下来我们来讲讲一些常见的注入类型以及对应的具体语句

首先向我们要将的是联合查询

使用联合查询进行注入的前提是我们要进行注入的页面必须有显示位。所谓联合查询注入即是使用union合并两个或多个SELECT语句的结果集,所以两个及以上的select必须有相同列、且各列的数据类型也都相同。联合查询注入可在链接最后添加order by 9基于随意数字的注入,根据页面的返回结果来判断站点中的字段数目

 看完了联合查询到介绍接下来我们讲讲处理联合查询的步骤,首先我们应该先判断列数

?id=1' union select order by 3#

不断地更改数字来进行判断,假设order by 3回显正常,order by 4回显错误则说明列数应为3列,接下来我们应该判断回显位

?id=1' union select 1,2,3#

我在sqllbs靶场中遇到的情况绝大多数都是回显一个2一个3,这说明什么呢,这说明在2和3那里是可以正常回显的,即当我们在2和3处使用的查询语句是可以把结果正常展现出来的。接下来我们就可以开始愉快的爆库爆数据了

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

这里的database()和version()分别对应数据库名和版本

数据库名知道了,我们接下来就可以进行爆表了

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

这里的group_concat起到一个拼接数据的作用,即将数据拼接为一行,一次全部爆出来,值得注意的是当数据过多,超过一行的时候,我们就不能这么做了。我们就需要使用limit函数一个一个的进行查询了

limit函数的形式一般为

(select column_name from information_schema.columns where table_name='table_name' limit 0,1)

limit后面的两个数字分别查询的起始位置,查询的数量。查询位置以0为起点开始,查询数量以1为最小查询量

接下来我们查询列名

?id=1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

最后我们进行报数据

?id=1' union select group_concat(username),group_concat(password)from users#

至此我们的联合注入就结束了

由于笔者刚学一二十天,所以文章有很多不足之处,望见谅。

标签:语句,sqlilabs,单引号,查询,我们,sql,靶场,心得,id
From: https://www.cnblogs.com/XYY-J/p/16893461.html

相关文章

  • vulnhub靶场之Beelzebub
    准备:攻击机:虚拟机kali、本机win10。靶机:Beelzebub:1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub.com/beelzebub/Beelzebub.zip......
  • vulnhub靶场之DRIPPING BLUES: 1
    准备:攻击机:虚拟机kali、本机win10。靶机:DRIPPINGBLUES:1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub.com/drippingblues/drip......
  • vulnhub靶场之DOUBLETROUBLE: 1
    准备:攻击机:虚拟机kali、本机win10。靶机:DOUBLETROUBLE:1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub.com/doubletrouble/doubl......
  • vulnhub靶场之DRIPPING BLUES: 1
    准备:攻击机:虚拟机kali、本机win10。靶机:DRIPPINGBLUES:1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub.com/drippingblues/drip......
  • DC-2靶场渗透操作
    DC-2靶场实操一、环境配置攻击机(kali):192.168.111.128目的机(DC-2):IP未知,但在同一局域网内(得开启NAT模式)二、实验步骤1.信息收集1.1确定IP地址//通过netdiscover来确定......
  • Android Study 之 极光推送使用心得以及记录
    LZ-says:啧啧,最近风起云淡,快过年喽~~~又是一件纠结的事儿。。。前言最近项目遇到推送,与后台贱人于一合计,果断采用了极光推送。在使用过程中,有爽有不爽,特意再次记录下。使用记......
  • 写点程序员离职的心得
    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进。离职的心态人们在辞退或者被辞退都会对原公司抱有意......
  • Sqlilabs的再次安装
    近段时间疏于对Web知识的应用,关于SQL注入的手法过于生疏之后,便突发奇想再次安装sqlilabs学习SQL注入,以下是简便的安装过程安装环境:Windows11PHPstudy2018sq......
  • 【XAML】WindowChrome的使用心得
    参考:https://blog.csdn.net/WPwalter/article/details/81121829 Windows结构标准窗口由两个重叠的矩形组成。外部矩形(灰色)是非工作区,内部矩形(白色)是工作区。 ......
  • frp 使用心得 亲测
    涉及一共三种设备:中转服务器运行frps受控服务器运行frpc操作终端运行ssh原理及步骤1.中转服务器运行frps开启运行frps服务后,开放frps监听端口(7000),接收frps的......