我有一个运行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应用程序,我没有更新语句和一些受感染的列不是从客户端输入读取的,但它们是外键,它们的值是从数据库读取的,所以没有办法把这些脏值放在它们
我认为这是一次SQL注入攻击。
SQL注入攻击的重点是他们找到一个弱点来执行任意SQL命令。如果您接受来自web的输入,无论是插入/更新/删除/选择查询,并且您不使用参数化查询,攻击者可以访问数据库中的任何表并按照他们的意愿对其进行处理。
如果没有更多的细节,很难准确地说明它是如何工作的-它似乎是一个脚本,因为互联网上有很多具有相同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>'