【发布时间】:2015-08-28 05:26:01
【问题描述】:
我正在想办法解决以下问题,因为看起来有人这样做了,我想修复它。但是,我真的很想在使用OWASP Recommendation 之类的东西修复它之前了解攻击是如何工作的
Set conn = Server.CreateObject("ADODB.Connection")
conn.open xDb_Conn_Str
sSql = "SELECT * FROM [User]"
sSql = sSql & " WHERE [Username] = '" & CleanSql(sUserId) & "'"
Set rs = conn.Execute(sSql)
CleanSql -
Function CleanSql(str)
Dim sWrk
sWrk = Trim(str&"")
sWrk = Replace(sWrk, "'", "''") ' Adjust for Single Quote
sWrk = Replace(sWrk, "[", "[[]") ' Adjust for Open Square Bracket
CleanSql = sWrk
End Function
单引号显然被转义了。
在此之后,它将检查是否找到用户使用以下内容验证密码:
If UCase(rs("Password")) = UCase(sPassWd) Then
DoStuff()
感谢任何帮助。
【问题讨论】:
-
您不能将准备好的语句与绑定变量一起使用吗?你用的是什么数据库? stackoverflow.com/questions/149848/…
-
“看起来有人做了(使用 SQL 注入绕过密码检查”。你确定吗?证据是什么?难道他们不能只是嗅探、猜测或以其他方式获得密码或会话饼干?
-
DB 是 sql - 我可以使用它。我正在接管应用程序
-
东西已添加到帖子等。这就是我确定@Thilo
-
您可以在不绕过密码检查逻辑的情况下向网站帖子添加内容。被盗的管理员密码。跨站脚本。合法但愤怒的用户。缺少会话验证代码。肯定会转向准备好的陈述,但你的黑客可能会进入其他地方。
标签: security asp-classic sql-injection