欢迎光临
我们一直在努力

什么是SQL注入(SQLi)


什么是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中选择语句



湾 


在ASP.NET中插入声明



C。


在PHP SQL中插入声明

$ stmt  =  $ dbh - > prepare(“INSERT INTO Customers(客户名称,地址,城市)
VALUES(:nam,:add,:cit)“);
$ stmt - > bindParam(':nam',$ txtNam);
$ stmt - > bindParam(':add',$ txtAdd);
$ stmt - > bindParam(':cit',$ txtCit);
$ stmt - > execute();


结论



在这个SQL注入教程中,我们了解了SQL中的注入。


此外,我们讨论了它的例子,代码,工作和解剖。


除此之外,我们还看到了SQL PHP和SQL攻击者可以做的事情。


不过,如果有任何疑问或疑问,请在评论部分询问。 

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。