-3 sql sql-injection
尝试学习和理解 SQL 注入。
谁能向我解释为什么' or 1=1; --- 允许我绕过身份验证但or 1=1没有?
考虑使用字符串连接构建的查询:
"select * from myTable where id = '" + txtIdEnteredByUser +"'"
Run Code Online (Sandbox Code Playgroud)
如果最终用户输入:
' or 1=1; --
Run Code Online (Sandbox Code Playgroud)
那么查询就变成:
select * from myTable where id = '' or 1=1; --'
Run Code Online (Sandbox Code Playgroud)
这是一个有效的查询,并且由于 (OR 1=1) 始终评估为 true,因此返回整个表值。
但是,如果用户输入是:
or 1=1;
Run Code Online (Sandbox Code Playgroud)
查询变为:
select * from myTable where id = ' or 1=1;'
Run Code Online (Sandbox Code Playgroud)
这是不会返回某些内容(可能)的查询。