为什么 IIS 会关心查询字符串中的“convert”是否拼写错误?

问题描述

我试图了解经典 ASP 页面的行为,通过查看 IIS 日志和浏览器上的行为来深入了解注入向量。

从浏览器中,我注意到有时从不请求页面,这取决于查询字符串中的拼写。

例如,https://example.com/test.asp?id=convert() 打开页面,我可以使用 Request.Querystring 读取查询字符串。当然它可能是一个 sql 注入向量,但我的页面读取它(并丢弃请求)。

然而,https://example.com/test.asp?id=conveert() 永远不会传递到页面页面打不开,浏览器出现一个完全空白的页面

IIS 服务器是否会根据拼写对查询字符串进行预处理并“拒绝”某些 QS?这两个请求都在状态为 200 的 IIS 日志中。但只有一个可以访问 test.asp 页面。这是服务器上的正常行为吗?服务器人员告诉我他没有过滤“convert()”。

记录查询字符串的代码示例:

Dim conn,incomingQS
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open Application("ConnectionString")
conn.Execute("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED")
incomingQS = Request.Querystring
incomingQS = DoubleApostrophes(incomingQS)
conn.Execute("INSERT INTO tabLog(qsDate,qsContent) VALUES (getdate(),'" & incomingQS & "')")
conn.Close
Set conn = nothing

在IIS日志中,当查询字符串使用“CONVERT”时,我的日志中有一个条目。当完全相同的查询字符串使用“CONVEERT”时,没有条目,这意味着永远不会引用该页面。为什么会这样?

感谢您在这里提供任何见解。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)