我试图了解经典 ASP 页面的行为,通过查看 IIS 日志和浏览器上的行为来深入了解注入向量。
在浏览器中,我注意到有时从不请求页面,具体取决于查询字符串中的拼写。
例如,https://example.com/test.asp?id=convert()
打开页面,我可以使用 Request.Querystring 读取查询字符串。当然它可能是一个 sql 注入向量,但我的页面会读取它(并丢弃请求)。
但是,https://example.com/test.asp?id=conveert()
永远不会传递给页面。该页面未打开,并且浏览器上出现一个完全空白的页面。
IIS 服务器是否预处理查询字符串并基于拼写“拒绝”某些 QS?这两个请求都在 IIS 日志中,状态为 200。但只有一个进入 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”时,没有条目,这意味着该页面从未被引用。为什么会这样?
感谢您在这里的任何见解。