实际运行 SQL 命令的 SQL 注入(inject)是一回事。但是,注入(inject)的数据实际上并没有运行有害查询,但可能会告诉您有关数据库的一些有值(value)的信息,这是否被视为 SQL 注入(inject)?或者它只是用作构建有效 SQL 注入(inject)的一部分?
一个例子可能是
set rs = conn.execute("select headline from pressReleases
where categoryID = " & cdbl(request("id")) )
传递一个无法转换为数值的字符串会导致
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'cdbl'
这会告诉您所讨论的列只接受数字数据,因此可能是整数或类似类型。
我似乎在很多讨论 SQL 注入(inject)的页面中都发现了这一点,但如果这本身被认为是 SQL 注入(inject),就没有真正得到答案。我的问题的原因是我有一个扫描工具报告 SQL 注入(inject)漏洞并报告 VBScript 运行时错误“800a000d”作为发现的原因。
最佳答案
这显然是一个 SQL 注入(inject)漏洞,需要修复。
在您的场景中有几个原因:
- 找出您描述的附带信息可能对攻击者有用,尤其是当他们有其他攻击媒介时。
- 发现此漏洞的攻击者会被鼓励去寻找更多漏洞。这里马虎可能意味着其他地方马虎。
- 在安全方面,不要太聪明很重要。您的攻击者可能比您知道的更多,或者更多。因此,在您看来像是一个封闭的漏洞可能对其他人来说是一扇敞开的大门。
是的,您的工具正在做正确的事情。
关于sql - 报告的错误代码是否被认为是 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3005404/