也许这听起来很奇怪,但有人告诉我 SQL 注入攻击可以分类为:
passive and active
被动SQLi:
- 它与 SQL 语句有关,例如:
SELECT,UNION,GROUP BY,LOAD,HAVING EXECUTE, BEGIN, DECLARE
...等
活动SQLi:
- 它应该更危险,因为它涉及通过以下语句修改 DBMS:
UPDATE,DELETE,INSERT
..etc 所以
在白皮书、学习资料等方面,我还没有找到任何关于它的信息。
也许这听起来很奇怪,但有人告诉我 SQL 注入攻击可以分类为:
passive and active
被动SQLi:
SELECT,UNION,GROUP BY,LOAD,HAVING EXECUTE, BEGIN, DECLARE
...等活动SQLi:
UPDATE,DELETE,INSERT
..etc 所以在白皮书、学习资料等方面,我还没有找到任何关于它的信息。
SQL 注入只是将不需要的文本添加到您的查询中。
您可以根据需要对其进行分组,但这并不重要,简单的事情是,您的查询不会做您想要的,或者不仅仅做您想要的。
OWASP在这里定义了被动和主动 sql 注入
SQL 注入根据数据库信息的暴露(被动)或数据库信息的更改(主动)分为以下两类。
两者都有问题,如果你有一个,你可能有另一个。active 的问题相当明显(有人以您未计划的方式更新/创建/删除您的数据)。不过,被动对您和您的用户来说同样危险。想象一下,如果他们得到一个用户名和密码列表。这些可用于合法登录您的网站或其他网站,因为大多数用户在多个网站上重复使用密码。
我从未听说过将 sql 注入攻击分为几类。正如gdoron如此雄辩地指出的那样,这并不重要。
然而,看看你是如何把它分解的,这几乎是有道理的。我会将该分类稍微更改为:
被动:
涉及以绕过正常安全控制的方式覆盖预期输入的攻击。例如,假设您有一个带有查询字符串的页面,例如:
/accounts/edit.php?id=50
在这种情况下,手动将 id 更改为 1 或 10 可能会提取用户无权访问的记录。前提是编辑页面不执行额外检查以确保用户具有访问权限。
主动:攻击将 sql 语句传递到输入字段以使应用程序执行新语句。
例如,把' or (1=1);drop table users;' 进入登录字段。一些应用程序只是将 sql 与未经处理的用户输入连接起来。这可能允许攻击者绕过安全控制,甚至将 DDL 语句发送到数据库服务器。
我不会说涉及 DELETE 的 SQL 注入一定比涉及 SELECT 的 SQL 注入“更糟糕”。确实,一个可以修改数据,另一个不能。
但是很多可怕的 SQL 注入只是为了读取应该被限制的数据,例如窃取信用卡号码。
Usually the terminology around SQL injection has to do with the methods of attack, such as "blind SQL injection," "union-based SQL injection," etc.
If you want to read a mighty book that covers the subject very well, try SQL Injection Attacks and Defense by Justin Clarke et. al.
Because SQL Injection is a technique used to ATTACK a website, wether it is passive or active is of inconsequence as many of the others members have said already.
No the TERMS you use in the first paragraph are PASSIVE is incorrect, Execute is not passive, its active... its Executing (something or other)
And even a passive term such as SELECT when used with DropTable can cause you to lose data too! So you would still insist on calling it passive? When its ACTIVELY dropping a table?
A good source of further information is wikipedia. http://en.wikipedia.org/wiki/SQL_injection