less8

和之前的第五关一样可以用因为正确查询和错误查询的页面不同而使用布尔盲注,脚本如何写后续再更新: )

less9

由于查询正确与否的页面相同,这边得使用时间盲注。

less10

同第九关,不过是双引号闭合。

less11

直接看源码1731767328998

发现这关是通过post传输的账户密码,且为单引号闭合,但换汤不换药,我们使用的查询语句是和之前的一样的。我们在username这进行注入便可以注释掉后面检查密码的语句。

less12

直接看源码

1731807941898(1)

发现和less11一样,不过是被双引号和括号包围。

less13

正确查询时无回显,而报错有回显错误信息,我们可以想到less5,同样可以用盲注或者双查询注入。

less14

同13关,不过是闭合方式变成了双引号。

less15

直接看代码

1731811151864

发现正确查询和错误查询的回显是一样的(除了那个图片),那么我们可以使用盲注。我们这里先尝试时间盲注,我们用if(x,y,z),如果x为true则返回y,否则z。

我们便可以编辑出这样的注入1' or if(查询语句,sleep(1),1)-- ,如果正确查询,则 让页面延迟,如果错误则返回1无延迟。感觉这样效率比1' or if(查询语句,1,sleep(1))-- 高点。后续可以用脚本进行批量测试。

less16

发现和上一关一样,只是变成了双引号+括号闭合。

less17

打开源代码,发现和之前不一样的是多出来了一堆检查输入的代码。

1731917093305(1)

让我们看看各个函数分别是什么意思

**get_magic_quotes_gpc():**检查魔法引号是否有开启,魔法引号就是PHP 会自动对所有通过 $_GET$_POST$_COOKIE 等方式接收到的用户输入的特殊字符进行转义,即在符号前加上\来转义。

stripslashes: 函数移除输入中被魔法引号加入的反斜杠。

ctype_digit:检查输入是否为存数字。

mysql_real_escape_string:在输入中将特殊字符转义,比魔法引号转义的范围小,且是手动引用。**\x00(NULL 字符)** -> 转义为 \\0

反斜杠(\ -> 转义为 \\

单引号(' -> 转义为 \'

双引号(" -> 转义为 \"

\x1a(十六进制) -> 转义为 \\Z

intval:将输入转化成整形。

最后返回修改后的变量。

最后发现他只对用户名的输入进行检查,那么我们便可以在密码中进行注入。但前提是要获取一个合法的用户名。