【网络安全学习】 SQL注入01:基础知识(网站sql注入漏洞)

【网络安全学习】 SQL注入01:基础知识💻 1. 什么是SQL注入
SQL注入是一种针对Web程序中数据库层的安全漏洞的攻击方式。它利用了程序对用户输入数据合法性的判断或过滤不严,允许攻击者在设计不良的程序

1. 什么是SQL注入

SQL注入是一种针对Web程序数据库层安全漏洞的攻击技术。它利用程序对用户输入数据合法性的不严格判断或不严格过滤,允许攻击者向设计不良的程序添加额外的SQL 语句,以执行计划外的命令或允许未经授权的数据访问。攻击者可以恶意组合SQL语句,欺骗数据库服务器执行任意未经授权的查询并获取相应的数据信息。

2. SQL注入的原理

SQL注入利用应用程序中对用户输入数据的不当处理,破坏应用程序与数据库之间预期的正常交互,并操纵输入来执行恶意SQL操作。

SQL注入基本满足以下条件:

参数是用户可控的。这意味着你可以控制前端传递到后端的参数内容。

将参数合并到数据库查询中:传递的参数必须合并到SQL语句中并合并到数据库查询中。

当应用程序构造SQL 查询语句并将用户输入的数据直接加入到SQL 语句中而不进行适当的验证、过滤或转义时,攻击者可以创建,这可能会更改预期结果。

例如,如果您的应用程序查询数据库以根据用户输入的用户名验证登录,则典型的SQL 语句将如下所示:

SELECT * FROM users WHERE username=\’John\’ 。

然而,如果用户输入没有被处理并且攻击者输入OR 1=1 — ,最终的SQL 语句将是:

SELECT * FROM users WHERE username=\’\’ OR 1=1 –\’ 。

OR 1=1 在这里始终为真,并且– 是用于注释掉其余部分的注释字符。因此,有可能绕过正常的身份验证逻辑,获取所有用户信息,并执行其他非法数据库操作。

3. 简单演示

如果您正常查询Vince 字段,结果将照常显示。

通过输入:Vince\’ Union select user(),database() #

将显示数据库帐户和密码。

4. 判断是否存在注入

您可以首先使用一些简单的方法来确定您的应用程序是否容易受到SQL 注入攻击。例如,在输入框中输入**单引号\’**等特殊字符,观察系统的反馈。如果您的系统显示错误消息,并且该错误消息包含与数据库相关的详细信息,则这可能是潜在的注入点。

此外,您可以尝试输入逻辑运算符,例如:

id=1 和1=1

ID=1 且1=2

id=1 或1=1

id=\’1\’ 或\’1\’=\’1\’

id=\’1\’ 或\’1\’=\’1\’

检查返回的结果是否不同。如果前者返回正常结果,后者返回异常或无结果,也可能表明存在注入漏洞。

几种sql注释符

井号#:单行注释。必须与URL中的#区分开,通常写为%23。

–空格:单行注释。请注意,它是两个破折号和一个空格的组合。

/*()*/:多行注释。至少有两次注入,/**/常用作空格。

5. 注入流程

决定是否进行注射以及注射类型。

确定字段数量:order by

确定回波点:Union select 1,2

查询数据库信息:@@version @@datadir

查询用户名、数据库名:user(),database()

读取文件:Union select 1,load_file(\’c:\\\\windows\\\\win.ini\’)#

写入Web shell: select.inoutfile.

PS:如果你的转义字符串在使用SQL注入时包含单引号或双引号,你可以使用HEX编码来绕过它们。

6. SQL注入分类

根据SQLMap中的分类,SQL注入分为以下几种类型。

UNION 查询SQL 注入:堆叠查询SQL 注入:多语句查询注入、堆叠查询基于布尔的盲SQL 注入:布尔注入基于错误的SQL 注入:错误报告注入基于时间的盲SQL 注入:基于时间的延迟注入

7. 注入数据类型的区分

int 整数类型

从id=1 的用户中选择*

字符串字符类型

从用户名=\’admin\’的用户中选择*

类似于搜索类型

从tables_01中选择*,其中标题如“%title%”

#以上【网络安全学习】SQL注入01:基础知识相关内容摘自网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93753.html

(0)
CSDN's avatarCSDN
上一篇 2024年7月26日 下午1:41
下一篇 2024年7月26日 下午1:41

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注