文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

什么是SQL注入(SQLi)

2024-04-02 19:55

关注

什么是SQL注入?

SQL注入(SQLi)通常被认为是一种注入攻击,其中攻击者可以执行恶意 SQL 语句。 它控制Web应用程序的数据库服务器。 由于SQL注入无助可能会影响使用基于SQL的数据库的任何站点或Web应用程序。 弱点是最成熟,最普遍和最危险的Web应用程序漏洞之一。

通过使用SQL注入无助,在给定正确条件的情况下,攻击者可以使用它来回避Web应用程序的验证和批准组件并恢复整个数据库的实质内容。 SQL注入同样可以用于包含,更改和删除数据库中的记录,从而影响信息正直性。
在这种程度上,SQL注入可以为攻击者提供未经批准的访问精细信息的权限,包括客户信息,可识别数据(PII),交换谜团,受保护创新和其他敏感数据。

SQL注入功能

记住针对数据库服务器运行恶意SQL查询的最终目标,攻击者应该首先在Web应用程序中发现包含在SQL问题中的贡献。
一起发生SQL注入攻击,无助站点需要直接在SQL解释中包含客户端贡献。 然后,攻击者可以嵌入有效负载,该有效负载将作为SQL查询的一个组件并入,并继续针对数据库服务器运行。
随附的服务器端伪代码用于验证Web应用程序的客户端。

#定义POST因子


ü Ñ 一米ë  = - [R Ë q Ü Ë 小号吨。P O S T [ ' u s e r n a m e ' ]

p 一个小号小号瓦特d  = - [R Ë q Ü Ë 小号吨。P O S T [ ' p a s s w o r d ' ]

#SQL问题对SQLi无能为力


sql = “SELECT id FROM clients WHERE username ='” + uname + “'AND password ='” + passwd + “'”

#执行SQL说明


数据库.execute(sql)

以上内容是使用用户名确认客户端的基本情况。 此外,对于具有名为clients的表的数据库以及用户名和关键字部分的秘密词。
SQL注入有效负载的基本情况可能就像将关键字字段设置为密钥'OR 1 = 1一样简单。
这将导致伴随的SQL问题继续针对数据库服务器运行。
SELECT id FROM clients WHERE username ='username'AND password ='password'OR 1 = 1' 

攻击者同样可以注释掉SQL解释的剩余部分,以进一步控制SQL查询的执行。
- MySQL,MSSQL,Oracle,PostgreSQL,SQLite


'或' 1 '=' 1 ' -

'或' 1 '=' 1 '/ *

- MySQL


'或' 1 '=' 1 '#

- 访问(使用无效字符)


'或' 1 '=' 1 '%00

'或' 1 '=' 1 '%16

一旦问题执行,结果i-访问(使用无效字符)将返回到要处理的应用程序,从而产生确认回避。 如果可以设想验证回避,应用程序将无疑地将攻击者从问题结果中记录到主记录中 - 数据库中的主记录是监管客户端的大部分。

攻击者最糟糕的是SQL可以做什么?

SQL是一种编程方言,用于监视放在RDBMS中的信息,以这种方式,SQL可用于获取,更改和删除信息。 此外,在特定情况下, RDBMS 同样可以从SQL公告中对工作框架进行收费。
记住上面的内容,在考虑附带的情况下,看看有效的SQL注入攻击对攻击者来说有多赚钱的要求不高。
攻击者可以使用SQL注入来回避确认甚至模仿特定客户端。

One of SQL’s essential capacities is to choose information in light of an inquiry and yield the consequence of that question. A SQL Injection weakness could permit the entire exposure of information dwelling on a database server. 
Since web applications use SQL to modify information inside a database, an attacker could use SQL Injection to adjust information put away in a database. Modifying information influences information honesty and could cause denial issues. For example, issues, for example, voiding exchanges, adjusting balances and different records. 
SQL用于擦除数据库中的记录。 攻击者可以使用SQL注入漏洞来清除数据库中的信息。 无论我们是否使用合适的强化方法,信息的擦除都可能影响应用程序的可访问性,直到重新建立数据库为止。
一些数据库服务器设计(有目的或其他)允许在数据库服务器上自由执行工作框架订单。 在正确的条件下,攻击者可以使用SQL注入作为攻击防火墙后面的内向系统的基础向量。

SQL注入攻击的剖析

SQL注入只需要存在两个条件 - 一个利用SQL的社交数据库,以及一个可以直接用作SQL问题一部分的客户端可控信息。
在下面的情况下,它将接受攻击者可能通过滥用Web应用程序中的SQL注入无防御性展示来从数据库中泄漏信息。
提供具有不恰当贡献的SQL清晰度,例如在SQL查询期望数字时给出字符串,或者在SQL语句中故意嵌入标点符号错误会使数据库服务器抛出错误。
在进步中,失误对工程师非常有帮助,但如果在现场网站上授权,他们可以向攻击者发现大量数据。 SQL错误具有图形趋势,即攻击者可以获取有关数据库结构的数据。 有时甚至只是通过将数据与错误消息分开来指定整个数据库 - 这个系统基于SQL注入被称为错误。 在这种程度上,数据库失误应该在现场网站上失效,或者登录到访问受限的记录。

SQL注入示例

一个。 在ASP.NET中选择语句

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯