我到处阅读有关SQL注入的内容,据说如果SQL查询是:
SELECT * FROM table_name where username='xxxxx' AND password ='xxxx'
如果您想输入“始终为真”的条件,则必须使用'OR 1=1--,则查询如下:
SELECT * FROM table_name where username=''OR 1=1--' AND password ='xxxx'
SQL查询背后的逻辑很简单,因为OR 1=1总是正确的,这就是它被执行的原因。然而,2>1,3>2总是被认为是真的,但是为什么我们不在SQL注入中使用'OR 2>1,'OR 1表达式呢?
发布于 2020-05-18 10:03:07
它只是一个用于测试SQL语句的简单字符串。不需要精确地使用1=1。就像你说的,5>3将以完全相同的方式工作。
不幸的是,1=1是如此普遍,以至于它会触发保护代码。受到弱保护的代码可能容易受到SQL注入的攻击,并且无法通过or 1=1;测试。所以有时候变化是有道理的。
发布于 2020-05-17 20:04:24
您可以使用计算结果为true的任何表达式,它不必是1=1,根据这,我认为SQL不包含true的文字值。
1=1是我最容易写的,我习惯了它。
https://security.stackexchange.com/questions/231804
复制相似问题