SQL 注入

简介

SQL 注入利用了未能验证用户输入的 Web 应用程序。黑客可以通过 Web 应用程序传递恶意 SQL 命令,以便由后端数据库执行。

SQL 注入可以获得对数据库的未经授权的访问,或直接从数据库检索信息。许多数据泄露事件都是由于 SQL 注入造成的。

显示最常见漏洞的饼状图:SQL 注入占 50%,跨站脚本占 42%,源代码泄露占 7%。

二级目录1.1

这是一段文章

二级目录1.2

如何实现

带有用户名和密码字段的登录表格的屏幕截图

输入用户名和密码后,在用户界面背后的 SQL 查询类似如下:

"SELECT Count(*) FROM Users WHERE Username=' " + txt.User.Text+" ' AND Password=' "+ txt.Password.Text+" ' ";

假定用户输入用户名“admin”,密码“passwd123”,在点击登录按钮后,会运行这样的 SQL 查询:

"SELECT Count(*) FROM Users WHERE Username=' admin ' AND Password=' passwd123 ' ";

如果凭证是正确的,那么用户就被允许登录,所以这是一个非常简单的(因此也是不安全的)机制。黑客利用这种不安全性来获得未经授权的访问。

黑客可以使用一个简单的字符串,称为“神奇的字符串”:

Username: admin

Password: anything 'or'1'='1

在点击登录按钮后,会运行这样的 SQL 查询:

"SELECT Count(*) FROM Users WHERE Username=' admin ' AND Password=' anything 'or'1'='1 ' ";

只要仔细看看上述查询的密码部分就知道了。

Password=' anything 'or'1'='1 '

密码不是“anything”,因此 password=anything 的结果是 FALSE,但 '1'='1' 是一个恒为真的语句,因此返回 TRUE 值。最后,由于 OR 运算符的作用,条件部分的值(FALSE OR TRUE)为 TRUE,所以成功绕过了认证。仅仅由于一个简单的字符串(“魔法字符串”),整个数据库就被破坏了。

目录三

本博客文章采用知识共享署名 4.0 国际许可协议 (CC BY 4.0) 进行许可。您可以在任何媒介中自由地分享和改编这些材料,但必须给予适当的署名,提供指向许可的链接,并指示是否有更改。使用许可材料时,您不得附加任何限制性条款。

文章来源:https://www.iamlong.top/blog/detail/75ab732b537744c280e64482353ae398

Author Avatar

胖鸟

大家好,我是胖鸟聊技术,一名热衷于探索前沿科技和技术解决方案的技术博主。我拥有超过五年的软件开发经验,专注于人工智能、大数据分析以及云计算等领域。在我的职业生涯中,有幸参与了多个大型项目,从设计到实现再到部署,每个环节我都亲力亲为,积累了丰富的实践经验。

评论列表

wave

您的评论

wave

Press ESC to close