如下所示的 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 代码:

https://www.ascii-code.com/

从网上可以看到,ASCII码96是

`

之后的任何字符(大于96的ASCII码)都是有效的英文字符(小写),不管那些特殊符号,这意味着对于你安全的登录用户,至少应该是一个以那些开头的人名字符(小写)。

所以您使用 SUBSTRING(long_string,1,1) 连接登录字符串的第一个字符,它试图验证登录人的帐户是否以英文字符(小写)开头

它将尝试从名为 'users' 的 table 的第一行获取 'user' 和 'password',并在中间用冒号连接它们(dave :passw), 然后获取第一个字符,并测试第一个字符是小写字母还是字符 { | } ~

不知道为什么这些信息对攻击者有用,但有时即使每个单独的测试都是无关紧要的,但一整套测试加起来就是信息。