ctf show-misc
1.超级玛丽
是nes文件
如何打开/运行 NES 文件?
你不能像打开一个文档或图片那样直接“打开”它。你需要一个特殊的软件来模拟 NES 游戏机的硬件环境,这个软件就是模拟器。
下载virtuanes官网,然后载入文件,是这个界面

在工具里,加入作弊码
# 079E-01-03 透明无敌# 0756-01-02 能发子弹# 079F-01-09 金身无敌# 0754-01-00 人物大小00大01小02穿墙# 0704-01-01 空中游泳# 07FA-01-00 时间锁定
开挂之后通关就行了

flag:flag{superdalao}
2.魂斗罗 游戏flag 终结篇
同样是nes文件,用模拟器打开

使用金手指

直接到最后一关,将地上的符号拼起来
flag{上上下下左右左右baba}
3.听说你喜欢爆破
描述:来,爆个痛快!!!
hint: md5爆破的第一位是i(只需爆破后6位),链接只包含小写字母和数字
下载压缩包,在压缩包里查看文件注释

你能猜到这8位日期数字吗?
使用outguess隐写,密码为18961210,这是炸药的发明时间

拿到一串地址https://www.lanzous.com/ia38dcb
这个网站需要将lanzous改为lanzoui,就可以访问了
拿到一个超小图片
修复图片高宽

md5('https://www.lanzous.com/???',16) = 'fd7e8e47cd47f001'
接下来就是脚本爆破了
import hashlibimport strings = string.ascii_lowercase + string.digitsfor i in s:for j in s:for k in s:for l in s:for m in s:for n in s:url = "https://www.lanzous.com/i" + i + j + k + l + m + nif hashlib.md5((url).encode()).hexdigest()[8:-8] == 'fd7e8e47cd47f001':print(url)exit(0)
![]()
https://www.lanzous.com/ia35tmj 还是将s改i
拿到一个加密文件,同样在注释找到提示


基本都是用箭头与点组成,点转0 箭头转1
二进制01110010011011110110001101101011011110010110111101110101
解码结果
rockyou
这还不是密码,这是个提示
由rocky联想到kali自带的rocky爆破字典
kali中使用fcrackzip对Blasting it.zip进行字典爆破
这么烦
密码:darkdumymohamed0351409575
拿到文件还是加密,啊!!!!
最后使用AOPR爆破4位数字得到密码:6765

flag:flag{y0u_4re_4_geniu5}
4.交通繁忙
拿到一张动图
使用随波逐流gif动图分解帧,

一共1167张图片,灰色不用管,主要看红黄绿
找到其中规律
绿红红绿绿红红绿黄
绿红红绿红红绿绿黄
每8个红绿给一个黄,是二进制
使用脚本
from PIL import Image
import osbinstr = ""
flag = ""def decode(s):return ''.join([chr(i) for i in [int(b, 2) for b in s.split(' ')]])# 检查目录
file_path = './202011/0.jpg'
if not os.path.exists(file_path):print(f"错误:文件 {file_path} 不存在")exit()success_count = 0
for i in range(1168):try:image = Image.open(f'./202011/{i}.jpg')tmp1 = image.getpixel((115, 55))tmp2 = image.getpixel((115, 150))print(f"图片 {i}: (115,55)={tmp1}, (115,150)={tmp2}")if tmp1[0] > 250: # 红色通道binstr += '1'success_count += 1elif tmp2[1] > 250: # 绿色通道binstr += '0'success_count += 1else:binstr += ''except FileNotFoundError:print(f"警告:图片 {i}.jpg 不存在")continueexcept Exception as e:print(f"处理图片 {i} 时出错: {e}")continueprint(f"\n成功处理 {success_count} 张图片")
print(f"二进制字符串长度: {len(binstr)}")
print(f"二进制: {binstr}")# 解码
for i in range(0, len(binstr), 8):if i + 8 <= len(binstr):byte_str = binstr[i:i+8]flag += chr(int(byte_str, 2))print(f"\n解码结果: {flag}")
0110011001101100011000010110011101111011010100000110110000110011001101000111001100110011010111110111000000110100011110010101111100110100011101000111010000110011011011100111010000110001001100000110111001011111011101000011000001011111011101000111001000110100011001100110011000110001011000110101111101110011001101000110011000110011011101000111100101011111011101110110100000110011011011100101111101111001001100000111010101011111001101000111001000110011010111110011000001110101011101000111001100110001011001000011001101111101
flag{Pl34s3_p4y_4tt3nt10n_t0_tr4ff1c_s4f3ty_wh3n_y0u_4r3_0uts1d3}
5.Everyday One Cat
找到这个gif作者的个人主页,http://motions.cat/,主页上有每一张gif(编号)的上架日期(中间那个小框框里),然后找到gif图片的编号就找到日期了。
flag{20190915}
