没有Gerling老师的世界好灰暗 战队WriteUp
一、 战队信息
战队名称:没有Gerling老师的世界好灰暗 战队
战队成员:ranfey、Annms_、236233、liangxi
战队排名:66
二、 解题情况
题目名称 | 解出情况 |
---|---|
PHP的后门 | 解出 |
CTFer Revenge | 解出 |
解个方程 | 解出 |
简单的数学题 | 解出 |
ez_model | 解出 |
ez_log | 解出 |
四重加密 | 解出 |
多情 | 解出 |
小光的答案之书 | 解出 |
追光者 | 解出 |
调查问卷 | 解出 |
三、 解题过程
PHP的后门 解题步骤:
第一步,打开网页,按照网页提示,找到 php 版本为
通过百度可以发现这个漏洞复现的方式
既然这样,执行个 php 代码看看文件目录
$a = scandir('/');
print_r($a);
看这个 flag!
读取出来
$content = file_get_contents('/flag');
echo $content;
CTFer Revenge 解题步骤:
打开文件
不难看出来是顺序完全颠倒了,最后一个字符其实是第一个字符
借助 gpt 编写个脚本
#include <stdio.h>
#include <stdlib.h>
#define CNTL_Z '\\032'
#define SLEN 50
int main(void) {
char input_file[SLEN];
char output_file[SLEN];
char ch;
FILE *input_fp, *output_fp;
long int count, last;
printf("请输入要处理的文件名:");
scanf("%s", input_file);
printf("请输入要输出的文件名:");
scanf("%s", output_file);
if ((input_fp = fopen(input_file, "rb")) == NULL) {
printf("无法打开文件...\n");
exit(1);
}
if ((output_fp = fopen(output_file, "w")) == NULL) {
printf("无法创建输出文件...\n");
exit(1);
}
fseek(input_fp, 0L, SEEK_END);
last = ftell(input_fp);
for (count = 1L; count <= last; count++) {
fseek(input_fp, -count, SEEK_END);
ch = getc(input_fp);
if (ch != CNTL_Z && ch != '\\r') {
putc(ch, output_fp);
}
}
fclose(input_fp);
fclose(output_fp);
printf("已将文件内容逆序输出到 %s 中。\n", output_file);
return 0;
}
很好,颠倒过来了
然后就是提取中间的十六进制,然后编码文件了
保存文件是个压缩包,看来要破密码了
出来了
于是肉眼法观察 flag:qsnctf{b414e3e3a6449ddba0997db259203eb7}
解个方程 解题步骤:
打开文件,可以看到这个
先用工具
得出d然后提交网页
ez_model 解题步骤:
看来是个 pth 文件,py 打开发现报错,显示有不属于文件的key, flag 和 hint ,分别读取出来
import torch
try:
state_dict = torch.load('C:\\Users\\13128\\Desktop\\CTF题目\\新建文件夹 (2)\\easy.pth')
flag_content = state_dict.get('hint', None)
#修改为 flag 再跑一遍
except Exception as e:
print(f"An error occurred: {e}")
flag_content = None
print(flag_content)
出来了
似乎是 ASCII 码,转一下得到
"LidUJ3fQM2FVJoxpDwLvDyF3DwpPdwxOEgbQJoxnEgdnJgnojoZ5mF"
"ZzYyXxAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWw0123456789+/"
似乎是 base64,软件跑一下
出来了!
ez_log 解题步骤:
分析代码可以发现,代码主要是计算 c = g^m mod p 的式子(下图重开容器截图,数据变了)
那么反过来,计算下面就出来 m 了
from sympy.ntheory import discrete_log
from Crypto.Util.number import *
# 你的数值
p = 3006156660704242356836102321001016782090189571028526298055526061772989406357037170723984497344618257575827271367883545096587962708266010793826346841303043716776726799898939374985320242033037
g = 3
c = 1392602158869026314666679989927718604969994655787472626891661327580773425826468932322386070980911978754789339111419162187352698809860445725988800818939096705603695222969251848464355648589702
m = discrete_log(p, c, g)
print(m)
m = long_to_bytes(m)
print(m)
得出来
四重加密 解题步骤:
看到下面的 **OFZW4Y3UMY======** 像是 base32
压缩包密码出来了
打开
先转个编码
看着像维吉尼亚,解码
看着还是一层加密,先盲猜个凯撒密码
出来了!
多情 解题步骤:
一、拿到压缩包
发现里面有两个文件,一是png图片,二是一个压缩包,压缩包打开后后发现内有多个txt文件,根据名称猜测是要对这些文本内容进行排序组合,得到flag
其实这里走了不少弯路,一开始没发现图片有什么作用,在一通乱序排列组合后也没得出结果····
所以不得不重新回到图片上来,重新看文件头和尾巴有没有问题
惊奇的发现有两对文件头尾
遂拆出第二张png
到这里又华丽丽的卡住了,尝试了一通宽高爆破CRC验证之类的操作后也没得出结果,故猜测会不会跟这两句诗句的平仄有关,若设平声为0,仄声为1,则得到序列:
正好对的上文件中0和1的数量!
遂使用控制台合并txt文件,并用产生unicode转中文解密
得到如下字符串:
bv2bnQSNh Lrp5mJcdEbf6H
但是不对·····
只好回到诗句上本身上来看,如果平仄不对的话只好考虑它本身的含义,
只在马蹄下
下?
下?
!
使用pzsolver再次进行宽高爆破,得到完整图片:
将996转换为二进制:
发现其二进制为1111100100
1和0的数量与文件数也对的上
遂相同操作得到flag:qsnctf{Lrp5mJcdEbbv2bnf6HQSNh}
小光的答案之书 解题步骤:
拿到题目,是一段奇妙小故事外加一张图片,可以提取到的关键词是:“答案之书”“一个英文字母!”“真正的答案,永远都在我们自己心中”以及四个菱形三角形字符
先尝试最有可能的信息,一个英文字母,但在将二十六个字母都爆破一遍之后也没有得到答案。。。
可以排除答案是某一个英文字母的可能了,遂尝试在图形字符和答案之书上下功夫
但是也不对,卡了一天后不得不放弃直接在网页上寻找答案,但可以肯定的是密码一定和这些符号有关
尝试检索常用的图形密码,发现了如下博客:
BUUCTF-Crypto-猪圈密码及其变种+银河密码+跳舞的小人_猪圈密码对照表-CSDN博客
可以对应解出“life“
访问公众号即拿到flag
调查问卷 解题步骤:
答题即得到
我超,盒!
追光者 解题步骤:
第一步,下载附件,得到追光者压缩包
第二步,利用7z直接解压,破解伪加密
得到
第三步,观察追光者文件大小不正常,用010打开
发现前面是jpg的文件头
到此处就是文件尾且后接了PK(压缩包头)
将图片尾前面的图片文件删除,得到压缩包
第四步,卡了很久,但是AB和AD应该是关键
hint提示善用查找和数形结合
「数形结合」?想到以前靶场写的一道题隐写在文件里
查找AB和AD看看
认真找出现的奇怪的地方,发现了一大片……
发现图案!
记录下来为iam5thplay
给解压包解密
欸!还是错的(陷入沉思)
第五步,
出题人表示缺少了er
加上er后为iam5thplayer
在修改了密码后解压成功
在光.txt中发现了flag前半部分 为qsnctf{NE73R
第六步,还有一个 看不清的光.zip 加密压缩包
压缩包内有flag.txt的倒写txt.galf
可知道剩下的半截flag在里面
第七步,看到zip内也有 闪.jpg 考虑用明文攻击
将压缩包外的 闪.jpg也压缩为 闪.zip
得到口令为 G3r1ing!
解压成功
第八步,将文件名反转为flag.txt
得到
第九步,根据刚开始的文件名提示,这个应该也是反转了的
一个个反转回来得到
_G1V3_U1o}
将两段flag拼起来得到
qsnctf{NE73R_G1V3_U1o}
解出!
简单的数学题 解题步骤:
第一步,启动题目环境……
第二步,得到nc challenge.qsnctf.com 30878
可以得知是用nc连接容器
第三步,连接上容器后得到计算题
利用在线计算网站https://zh.numberempire.com/equationsolver.php
逐个解出答案分别为8,9,19
得到flag为qsnctf{a86f2de626ed48d59e5cfdae215d5ed2}