如下所示的 SQL 注入查询是什么意思?这会是什么答案
What does an SQL Injection query such as below means? What will be the answer of this
' AND ascii(substring((SELECT concat(login,0x3a,password) from users limit 0,1),1,1))>96#
我正在研究蜂箱机器并练习盲注 SQL。我知道 ascii 和 substring 的作用,我也知道 concat 的作用,但为什么我们要将登录名和密码连接在一起,因为我们必须生成一个 ascii 字符?为什么我们最后有 1,1。
您可以在此处查看完整的 ASCII 代码:
从网上可以看到,ASCII码96是
`
之后的任何字符(大于96的ASCII码)都是有效的英文字符(小写),不管那些特殊符号,这意味着对于你安全的登录用户,至少应该是一个以那些开头的人名字符(小写)。
所以您使用 SUBSTRING(long_string,1,1)
连接登录字符串的第一个字符,它试图验证登录人的帐户是否以英文字符(小写)开头
它将尝试从名为 'users' 的 table 的第一行获取 'user' 和 'password',并在中间用冒号连接它们(dave :passw), 然后获取第一个字符,并测试第一个字符是小写字母还是字符 { | } ~
不知道为什么这些信息对攻击者有用,但有时即使每个单独的测试都是无关紧要的,但一整套测试加起来就是信息。
' AND ascii(substring((SELECT concat(login,0x3a,password) from users limit 0,1),1,1))>96#
我正在研究蜂箱机器并练习盲注 SQL。我知道 ascii 和 substring 的作用,我也知道 concat 的作用,但为什么我们要将登录名和密码连接在一起,因为我们必须生成一个 ascii 字符?为什么我们最后有 1,1。
您可以在此处查看完整的 ASCII 代码:
从网上可以看到,ASCII码96是
`
之后的任何字符(大于96的ASCII码)都是有效的英文字符(小写),不管那些特殊符号,这意味着对于你安全的登录用户,至少应该是一个以那些开头的人名字符(小写)。
所以您使用 SUBSTRING(long_string,1,1)
连接登录字符串的第一个字符,它试图验证登录人的帐户是否以英文字符(小写)开头
它将尝试从名为 'users' 的 table 的第一行获取 'user' 和 'password',并在中间用冒号连接它们(dave :passw), 然后获取第一个字符,并测试第一个字符是小写字母还是字符 { | } ~
不知道为什么这些信息对攻击者有用,但有时即使每个单独的测试都是无关紧要的,但一整套测试加起来就是信息。