' AND ascii(substring((SELECT concat(login,0x3a,password) from users limit 0,1),1,1))>96#
我正在蜜蜂盒机器上工作,并练习盲目SQL注入。我知道ascii和substring的作用,也知道concat的作用,但是为什么我们必须将登录名和密码连接在一起,因为我们必须生成一个ascii字符?为什么最后要有1,1。
答案 0 :(得分:0)
您可以在此处检查完整的ASCII代码:
从网上可以看到,ASCII码96是
`
此后的任何字符(ASCII数大于96)都是有效的英文字符(小写),无论这些特殊符号如何,这意味着对于安全的登录用户而言,至少它应该是以这些字符开头的人名(小写)。
因此,您使用SUBSTRING(long_string,1,1)
来获取连接的登录字符串的第一个字符,该字符串试图验证登录用户的帐户是否以英文字符(小写)开头
答案 1 :(得分:0)
它将尝试从名为“ users”的表的第一行中获取“ user”和“ password”,并在中间用冒号(dave:passw)合并它们,然后采用该字符的第一个字符,并测试第一个字符是小写字母还是字符{| }〜
不知道为什么这些信息对攻击者有用,但是有时候,尽管每项测试都是无关紧要的,但一连串的测试会增加信息。