strQuery = "SELECT ContactName FROM Customers " & _
“WHERE CustomerID = ’" & Request.Form("CustID") & "’"
Set rstResults = cnn.Execute(strQuery)
Response.Write(rstResults.Fields("ContactName").Value)
现在你知道什么地方有问题了吧?如果用户知道一个用户的ID,他可以通过检索来获得全部的相应的名字。现在明白了?
获得额外的数据
当然,对于一个攻击程序,尽管它不知道任何顾客的ID,甚至不用去猜,它也可以获得数据。为了完成这个工作,它将下面的文本输入到应用程序调用顾客ID的textbox中:
customer ID:
’UNION ALL SELECT ContactName FROM Customers
WHERE CustomerID <>’
如果你输入了这个代码,你将会看到返回一个询问语句:
SELECT ContactName FROM Customers
WHERE CustomerID = ’’
UNION ALL SELECT ContactName FROM Customers
WHERE CustomerID <>’’
通过获得空和非空顾客的ID并集,这个查询语句会返回数据库中所有的相关姓名。事实上,这个UNION技术可以被用来获得你数据库中大多数信息,看看这个CustomerID的值:
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/