如何执行SQL注入攻击?SQL注入的类型
SQL 注入是一种网络攻击,它利用 SQL 查询中糟糕的输入验证。如果应用程序在对数据库的 SQL 查询中使用不受信任的用户输入,那么故意格式错误的用户输入可能会修改查询。SQL 注入攻击可用于访问、修改或删除数据库中的数据。 如何执行 SQL 注入攻击 基于用户输入执行 SQL 查询...
SQL 注入是一种网络攻击,它利用 SQL 查询中糟糕的输入验证。如果应用程序在对数据库的 SQL 查询中使用不受信任的用户输入,那么故意格式错误的用户输入可能会修改查询。SQL 注入攻击可用于访问、修改或删除数据库中的数据。
序列号 | CPU | RAM | HDD | 带宽 | 售价(美元) | 免费试用 |
---|---|---|---|---|---|---|
香港服务器1 | E5-2620 | 32G | 1T HDD | 50M/无限流量 | $196.00 | 立即申请 |
香港服务器2 | E5-2650 | 32G | 1T HDD | 50M/无限流量 | $256.00 | 立即申请 |
香港服务器3 | E5-2680 | 32G | 1T HDD | 50M/无限流量 | $316.00 | 立即申请 |
香港服务器4 | E5-2690 | 32G | 1T HDD | 50M/无限流量 | $336.00 | 立即申请 |
香港服务器5 | E5-2697 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器6 | E5-2620*2 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器7 | E5-2650*2 | 32G | 1T HDD | 50M/无限流量 | $436.00 | 立即申请 |
香港服务器8 | E5-2680*2 | 32G | 1T HDD | 50M/无限流量 | $476.00 | 立即申请 |
香港服务器9 | E5-2690*2 | 32G | 1T HDD | 50M/无限流量 | $556.00 | 立即申请 |
香港服务器10 | E5-2697*2 | 32G | 1T HDD | 50M/无限流量 | $596.00 | 立即申请 |
香港服务器11 | E5-2680v4*2 | 32G | 1T HDD | 50M/无限流量 | $696.00 | 立即申请 |
香港服务器12 | E5-2698v4*2 | 32G | 1T HDD | 50M/无限流量 | $796.00 | 立即申请 |
如何执行 SQL 注入攻击
基于用户输入执行 SQL 查询的应用程序可能容易受到 SQL 注入攻击。例如,Web 应用程序可以使用 SQL 查询来实现身份验证过程。用户提供他们的用户名,应用程序使用该用户名来查找该用户帐户的密码哈希。如果用户提供的密码的哈希与此密码哈希匹配,则用户成功验证并获得对其帐户的访问权限。
如果 Web 应用程序在将用户名包含在 SQL 查询中之前未对其执行验证,则程序可能会误解故意格式错误的用户名。例如,SQL 查询通常使用单引号 (') 或双引号 (") 来表示命令中的数据。例如,根据用户名 user 在数据库中查找客户记录的命令可能是SELECT * FROM customers WHERE username=”user” 。
对他的命令执行 SQL 注入攻击的攻击者可以在他们的输入中包含一个双引号字符,以将他们的一些数据解释为代码。例如,考虑用户名user” OR “1”=”1 。
当插入 SQL 查询时,查询变为SELECT * FROM customers WHERE username=”user” OR “1”=”1” 。此查询将返回匹配两个条件之一的记录,而不是查找用户名与用户提供的值匹配的记录。第一个是预期的测试username=”user” ,它将返回用户的记录。
第二个条件是测试“1”=”1” 。由于这始终是正确的,它将返回数据库中的所有记录。这可能允许攻击者提取有关其他用户的敏感信息,或者可能允许攻击者绕过身份验证或以另一个用户身份进行身份验证。
SQL 注入的类型
SQLi 攻击可用于实现不同的目的,并且可以以多种方式执行。SQLi 的三种主要类型包括:
- 带内 SQLi:带内 SQLi 攻击使用相同的媒介(例如 HTTP 请求)来执行攻击并收集结果。两种常见的入站 SQLi 攻击形式是基于错误的 SQLi 攻击,它尝试生成错误消息,提供有关用于攻击的目标数据库的信息,以及基于联合的 SQL,它使用 SQL UNION 运算符合并 SQL SELECT陈述。
- 盲 SQLi:在盲 SQLi 攻击中,攻击者不会根据他们的请求从服务器接收数据。相反,攻击者会根据服务器的行为修改他们的攻击。例如,不同的输入可能会导致操作成功或失败,或者影响操作执行所需的时间。
- 带外 SQLi:带外 SQLi 攻击通过一种介质执行攻击并通过另一种介质收集数据。这种攻击依赖于数据库服务器上某些功能的可用性。例如,攻击者可以根据是否可以强制数据库服务器向攻击者控制的服务器生成 HTTP 或 DNS 请求来衡量 SQLi 攻击的成功与否。
如何防止 SQLI
SQLi 攻击在对 SQL 命令使用不受信任的数据时利用了较差的输入验证。许多 SQLi 攻击涉及在用户输入中使用意外字符,例如单引号或双引号。
在 SQL 查询中包含用户提供的数据之前执行输入验证有助于减少 SQLi 攻击的威胁。例如,应用程序可以将用户输入限制为一组特定的字符,例如只允许使用字母数字用户名,或者阻止某些字符包含在用户输入中。然而,输入验证虽然很重要,但不足以防止 SQL 注入攻击。攻击者可能能够通过使用意外的字符组合来绕过允许列表或阻止列表来逃避阻止。
出于这个原因,公司还应该在执行 SQL 查询的 Web 应用程序和 API 之前部署Web 应用程序防火墙(WAF),或者理想情况下是Web 应用程序和 API 保护(WAAP)。这些解决方案可以帮助识别和阻止试图利用 SQLi 和其他针对 Web 应用程序和 API 的攻击的恶意请求。
部分网站内容及图片来源于网络,如有侵权或违规内容请联系管理员删除!