轻松理解啥是 SQL 注入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了轻松理解啥是 SQL 注入相关的知识,希望对你有一定的参考价值。

所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
举个简单的例子:
从理论上说,一个验证用户名和密码的功能,会有如下的SQL语句:
String sql = "select * from user_table where username=
\' "+userName+" \' and password=\' "+password+" \'";
然后在这个语句的username=”后面注入 or 1=1 用户名等于 ” 或1=1 这个条件,上面的SQL语句变成:
SELECT * FROM user_table WHERE username=
\'’or 1 = 1 -- and password=\'’
那么不用输入用户名和密码,就可以登陆了。
参考技术A

SQL注入是一种注入攻击,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或者Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。

SQL注入漏洞可能会影响使用SQL数据库的任何网站或Web应用程序。犯罪分子可能会利用它来未经授权访问用户的敏感数据:客户信息,个人数据,商业机密,知识产权等。虽然最古老,但非常流行,也是最危险的Web应用程序漏洞之一。

SQL注入攻击的类型

第一种:带内注入

这是典型的攻击,攻击者可以通过相同的通信通道发起攻击并获得结果。通过两种带内技术完成:

1、基于错误的SQL注入,从显示的错误消息中获取有关数据库的信息;

2、基于联合的SQL注入,依赖于攻击者能够将UNIONALL被盗信息的结果与合法结果连接起来。

第二种:盲注入

也称为推理SQL注入,盲注入攻击不会直接从目标数据库中显示数据;相反,攻击者会仔细检查行为中的间接线索。HTTP响应中的详细信息,某些用户输入的空白网页以及数据库响应某些用户输入需要多长时间,这些都可以是线索,具体取决于攻击者的目标。

第三种:带外注入

这种攻击比较复杂,当攻击者无法在单个直接查询-响应攻击中实现其目标时,攻击者可能会使用此攻击。通常,攻击者会制作SQL语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式,攻击者可以收集数据或控制数据库的行为。

以上是关于轻松理解啥是 SQL 注入的主要内容,如果未能解决你的问题,请参考以下文章

如何轻松获得SQL注入错误

Web安全几行代码轻松搞定SQL注入

轻松了解Spring中的控制反转和依赖注入

简单的几个步骤让你轻松理解SQL

简述啥是SQL注入,写出简单的SQL注入语句

Selenium元素定位不到?JS注入轻松搞定!