Kali linux在DVWA靶场的SQL注入

  • Post author:
  • Post category:linux



前言



SQL注入

是一种常见的攻击方式,攻击者通过利用Web应用程序或其他应用程序对数据库的查询进行注入,掌控数据库系统,甚至控制整个应用程序。为了加强Web应用程序的安全性,学习SQL注入攻击技能的同时也要了解防御措施。


概念



SQL注入

是一种常见的Web应用程序安全漏洞攻击。它利用输入验证不足或不正确的代码实现,通过向Web应用程序输入恶意的SQL语句来利用应用程序的漏洞,从而执行非授权的操作或访问敏感数据。攻击者可以利用SQL注入攻击来破坏或窃取数据库中的信息,或者通过更改或删除记录来破坏应用程序的功能。SQL注入攻击可由手动输入SQL语句或使用自动化工具实现。为预防SQL注入攻击,开发者需要正确地实施输入验证和合理的安全编码实践。



1、环境准备



(1)开启OWASP靶机和Kali虚拟机



(2)kali中登陆dvwa,进入 SQL Injection

在这里插入图片描述



(3)将安全等级调为low

在这里插入图片描述



2、基于错误的 SQL 注入案例



(1)检测SQLI并获取列数

在检测到 SQLi 存在后,还需要获取结果的列数。在“User ID”框中输入任意数字,然后单击

Submit

(提交)按钮。

在这里插入图片描述



(2)在User ID继续输入

现在继续输入,将输入栏的值替换为 1’order by 1 #并提交

1'order by 1 #

在这里插入图片描述



(3)增加order by数值且直到报错

继续增加

order by

后面的值并执行请求,直到页面发生了报错。在此示例中, 报错信息发生在它在按列数 3 时。这意味着查询的结果只有两列,因为尝试按不存在的列对其进行排序时会触发错误。(2和3步骤:order by语句用于排序,使用超出范围的数字,获取实际检索的列数)

在这里插入图片描述



(4)使用UNION语句提取信息

现在知道数据有两列。然后尝试使用

union 语句提取

一些信息。将输入的值设置为 1’ union select 1,2–’并执行。(查看显示位,union 作用是将多个select语句的结果整合到一个结果中返回,union 语句使得输入多个select语句成为可能,union 语句后的select语句是我们想要注入的代码)

1' union select 1,2--'

在这里插入图片描述



(5)查看数据库版本和当前用户

这意味着要使用 union 查询中请求两个值。查看

数据库版本和数据库当前用户

。 输入为:

1' union select@@version,current_user() -- '

然后执行(获取数据库版本和数据库当前用户信息)

在这里插入图片描述



(6)获取数据本

随后寻找与之更相关的东西,例如应用程序的用户。首先需要找到用户的表(获取数据本)。输入为:

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

翻译出来就是:

从information_schema数据库中的tables表中查找当前数据库所含有的表有哪些

在这里插入图片描述

(7)知道数据库名称为user并获取表中的列

到这一步,可以知道数据库(或模式)名称为

dvwa

,正在寻找的表是 user。由于只有两个位置来设置值,需要知道表中可能有哪些列(获取表中的列), 将输入改为:

1' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' #

在这里插入图片描述



(8)获取用户名和密码的哈希值

知道了 user 表的内容,将 输入为:

1'union select user,password FROM dvwa.users -- '

在这里插入图片描述



3、学习小结:

SQL注入是一种常见的安全漏洞,攻击者通过将恶意代码注入到应用程序的输入参数中,可以绕过应用程序的安全检查,并获取或破坏数据库中的敏感数据。总的来说,SQL注入可通过输入验证、数据绑定、最小化权限、日志记录和更新软件等措施来防止。



4、学习心得:

1、了解SQL注入原理和攻击方式

要想有效地防范SQL注入攻击,首先必须了解SQL注入的原理和攻击方式。通过学习SQL注入攻击工具、常用的注入语句和攻击方法,可以更好地理解SQL注入攻击的本质和危害,为防御提供基础。

2、掌握常见的SQL注入检测技术

在检测Web应用程序存在SQL注入漏洞时,可以使用常见的SQL注入检测技术,如手工注入、工具辅助注入、盲注等。掌握这些技术可以更好地了解SQL注入攻击的过程和方法,同时可以有效地发现和修复SQL注入漏洞。

3、深入学习SQL语句

SQL语句是SQL注入攻击的关键,深入了解SQL语句的结构和运作方式可以更好地理解SQL注入攻击的原理和方法。同时,了解SQL语句的基础知识也能够帮助我们更好地编写安全的SQL语句,提高Web应用程序的安全性。

4、学习常用的防御措施

为了有效防御SQL注入攻击,要了解常用的防御措施,如输入过滤、参数化查询、防注入函数等。这些措施可以有效地减少SQL注入攻击的风险,提高Web应用程序的安全性。同时,了解常用的防御措施也可以为我们提供更多的保障,提高安全性和效率。



5、总结:

学习SQL注入攻击技能是加强Web应用程序安全防范的必要技能。在学习过程中,我们应该了解SQL注入的原理和攻击方式,掌握常见的检测技术和防御措施,同时深入学习SQL语句的知识,不断提高自己的安全意识和能力。总而言之,SQL注入攻击的威胁不容忽视,我们需要通过多方面的学习和掌握防护措施,不断巩固网络安全防线,确保用户信息和数据安全。


以上就是学习SQL注入的全部内容了,本文主要是学习kali linux的相关操作,后面关于各种操作底层实现及重定向原理,将会在之后的文章讲解


如果你觉得本文写的还不错的话,期待留下一个小小的赞👍


如果本文有不足或错误的地方,随时欢迎指出,我会在第一时间改正



版权声明:本文为qq_74298120原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。