您好我正在阅读一些SQL注入示例,我有以下场景:
在此示例中,意识到SQL注入的风险,开发人员决定通过删除查询中的任何单引号来阻止单引号。但是,仍有一种方法可以打破SQL语法并注入任意SQL。
为此,您需要考虑查询:
document.getElementById('ifrm').onload = function() { // Adjust the Id accordingly
setIframeHeight(this.id);
}
这里的问题是,理论上你不能打破单引号,因为你不能注入任何引号。但是,如果你注入一个反斜杠\,查询中的第二个'(应该完成字符串[username]的那个将被转义并将被第三个关闭(应该启动字符串[password]的那个)
这是不是意味着如果我在用户名字段输入“\”,它会自动中断查询?看起来像
SELECT * FROM users WHERE username='[username]' and password='[password]'
我错过了什么吗?我应该以另一种方式提供反斜杠吗?
答案 0 :(得分:0)
好的,我找到了答案: 用户名应为:\ 和密码:或1# 然后查询将看起来像这样
SELECT * FROM users WHERE username = '\' AND password=' or 1#