这次的Misc题里有挺多不会写的题目,这里跟着52yang师傅复现一下这些题目,学习并记录
有兴趣可以看看师傅自己写的wp
2024-GCTF(赣CTF)第二届江西省高校联合新生赛-Misc-wp_江西ctf大赛-优快云博客
checkin
打开附件,一张图片,这里拖进随波逐流里看
一看就是社会主义核心价值观加密
得到flag
嘿嘿,真的是无畏契约呢
附件是.txt文件,打开后明显是base64编码
网上找个解密网站,发现是png的十六进制文本
复制到010里新建一个
码就别扫了,替大家扫过了,真的是无畏契约
再拖进随波逐流里看看
发现是lsb隐写,这里也可以用Stegsolve,就是安装起来有点麻烦
Stegsolve中red0,Green0,blue0的左上角都有些奇怪(图不知道为什么不见了,这里也找不到原图了,将就一下)
然后在这里勾选000,LSBfirst,预览一下
真的是base64哦
一眼base64隐写
这种多行一段一段的,一般就是base64隐写
爱玩原神?
附件是一张jpg
丢进随波逐流里看看
发现藏了个zip,(这里也可以在010看看jpg文件尾之后有没有别的东西)分离一下,发现zip需要密码
有图片,要密码,010里看不到东西的话,看看lsb和盲水印里有没有东西
lsb这里就不展示了,没有东西
盲水印提取一下
发现密码,打开txt后发现是这么个玩意
也很明显可以看出是zip的十六进制文本倒过来了
这里可以自己写个脚本,当然也可以去cyberchef网站文件倒叙
得到一串字符串,丢进随波逐流
可惜雪飘进了双眼
附件是一个txt和一个key文件
txt里面是全白,这里我们就可以猜想是whitespace或者是snow隐写
简单介绍一下,
whitespace是一种由Space(空格)、Enter(回车)、Tab(制表符)代码格式
snow隐写则是通过在行尾附加空格和制表符来隐藏 ASCII 文本中的消息的隐写
这里有key文件存在,就大概率是snow隐写了(snow需要解密)
打开key文件
第一眼什么都看不出来,仔细观察之后发现了98 05 e4 74,这不就是89 50 4e 47(png文件头)反过来吗!!
写个脚本反一下
得到key
然后就是snow隐写了,snow隐写可以去网上搜搜专门的工具然后了解一下使用方法
其实也可以随波逐流一下(yyds)
ez_python?
看看代码,就是和出题人打架,有攻击力和防御力和生命值,一回合下来你的血量要高于他且均不为负数。
然后每战斗一次,你的等级提升一级,各项属性都能得到提升,问你什么时候能打赢他。
flag的内容就是最小能打赢他的等级的md5值
然后我的做法其实就是手动二分法一个一个试,最后试出来
送分的Forensics 1
百度识图一下
额,答案错误,再好好看看
点进图片传送到了一个b站的视频里
查一下湘江边上最著名的景点
试试答案,结果就是杜甫江阁
送分的Forensics 2
百度识图一下
几乎是一样的,答案就是仙女湖
小结
至此,以上都是我本人能写出来的题目,接下来就是重点学习记录的对象。
ez_word
文档文件,看起来像是文本隐写
这里直接全选,然后右键字体,取消掉文字隐藏(我用的是wps)
显而易见,flag还少了一部分
文件放进随波逐流里看看
发现有个zip里面有flag3
打开就是这么个东西,查了一下发现是base100
得到的这个东西,我就不知道是什么了,我把符号都去掉然后ascii了一下,结果有点像base64,然后一通乱搞,最后啥也没得出来。
现在才知道这个是unicode(长姿势了)
然后base64加base58
得到答案
GCTF{welc33me_w0rd@_m1ssccc$$}
坚持不懈的压缩
有个压缩包,有个文档
文档打开是
不知道是个啥
看了师傅的题解之后才知道原来是换了码表的base64
得到了密码,
然后是循环解压缩大概999层
难怪叫做坚持不懈的压缩
这里可以在网上找个脚本解压一下,也可以自己手动一个一个解(我是代码小菜,估计真的写的话就是手动999了
附上前文提到的师傅的脚本(师傅赛高)
import os
import zipfile
def recursive_unzip(zip_file_path, password):
with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
try:
zip_ref.extractall(pwd=password.encode('utf-8'))
except RuntimeError as e:
print(f"解压 {zip_file_path} 时出错: {e}")
return
base_folder = os.path.splitext(zip_file_path)[0]
for root, dirs, files in os.walk(base_folder):
for file in files:
file_path = os.path.join(root, file)
if file_path.endswith('.zip'):
recursive_unzip(file_path, password)
if __name__ == "__main__":
password = "GCTF_yeyeyeye"
zip_file_names = []
for i in range(998, 0, -1): #此处998需要修改为同目录下压缩包的名字,比如我是997就需要改为997
zip_file_names.append(f"temp_{i}.zip")
for zip_file_name in zip_file_names:
recursive_unzip(zip_file_name, password)
我自己尝试的时候失败了,官方题解也是,索性就999了(立一个flag,这里打算好好去学一下py库里的os和request,对杂项对web都有好处)
得到答案
GCTF{the_final_is_me_hahaha!!!}
ez_流量
事出有因,附件被我删了,然后平台还突然关了。。
不过可以讲一下思路
大致浏览一下可以发现是一段sql注入的流量
然后筛选get方式
之后导出分组解析结果为CSV
会出来一个excel表格,是布尔盲注的痕迹(就是一个一个试flag的值,对了会返回)
然后统计一下所有的返回值,ascii码转换一下,就可以得到flag
因为平台突然关闭,还有两道题没写,这里等有机会补充的时候再补上