-2

我有一个使用 SQL Server 2008 r2 运行的数据库。我遇到了一些列值的问题

我注意到某些字段值会自动更新。

它们包含如下数据:

  • 原始值12345
  • 脏值12345<div style="display:none">why do husband cheat <a href="http://blog.businessdating.com/page/How-women-cheat">wifes that cheat</a> why do men cheat on their wife</div>

我不知道这是怎么发生的,又是一种什么样的攻击?知道在我的应用程序代码中,它是一个 ASP.Net WebForms 应用程序,我没有更新语句,并且一些受感染的列不是从客户端输入中读取的,而是它们是外键,它们的值是从数据库中读取的,所以没有办法把这样的脏其中的价值观。

4

1 回答 1

2

我认为这是 SQL 注入攻击。

SQL 注入攻击的全部意义在于他们找到了执行任意 SQL 命令的单一弱点。如果您接受来自网络的输入,无论是用于插入/更新/删除/选择查询,并且您不使用参数化查询,那么攻击者可以访问您数据库中的任何表并按照他们的意愿进行操作。

如果没有更多详细信息,很难准确说明它是如何工作的——它似乎是一个脚本,因为 Internet 上有很多具有相同 URL 的页面,并且它们都使用 .asp 作为后缀。

对我来说记住 ASP 语法已经太久了,但我会试一试。我也没有费心使用 HTML 编码来使它更清晰。

例如,假设您有一个页面,您可以在其中找到有关产品的信息:

http://myapp.com/customers.asp?productID=1

当该页面访问您的服务器时,您将构建一个 SQL 字符串:

Select * from products where productID = & request.productID

然后你执行它,在页面上显示结果。

在正常情况下,您的 SQL 请求是Select * from products where productID = 1

攻击者可能会按如下方式操纵 URL:

http://myapp.com/customers.asp?productID=1 union sp_help

这意味着你执行

Select * from products where productID = 1
union
sp_help

并在生成的网页上显示结果。让 sp_help 结果与产品数据中的列匹配需要一些试验和错误,但最终攻击者会获得完整的数据库模式。

如果攻击者想要操纵数据,他们可能会做类似的事情

http://myapp.com/customers.asp?productID=1; update lookupTable set description = description  + '<div style="display:none">why do husband cheat <a href="http://blog.businessdating.com/page/How-women-cheat">wifes that cheat</a> why do men cheat on their wife</div>'
于 2015-09-01T10:47:01.887 回答