bugku-reverse题目-游戏过关

下载附件,打开让我们玩个小游戏,通关就能拿到flag。

游戏不会玩,谈判失败,开始攻坚。使用 exeinfo 查看文件信息,发现是32位的。

因此,我们选择使用32位版本的 ida 对文件开始分析

先使用 shift + f12 打开strings窗口, ctrl + f 查看一下关键字符串 "flag"。发现有完成游戏时,给出提示语"done!!! the flag is "

双击进去看看,发现它被引用了,那就接着去看看是谁引用了它。继续双击箭头所指的函数

这里已经进入了引用"done!!! the flag is "的函数

按 F5 将汇编语言转换为伪c代码,这里就能看到 flag 的构成逻辑。

flag 整体的解密逻辑核心为:将两组长度均为 56 的数组按对应位置逐元素进行异或运算,运算结果再与十六进制常量 0x13(十进制 19)做异或运算,最终将每一位运算结果转换为对应的 ASCII 字符,拼接后即可得到由 56 个 ASCII 字符组成的完整 flag。

直接照着样子写个python脚本,flag就能出来

python 复制代码
a = [18, 64, 98, 5, 2, 4, 6, 3, 6, 48, 49, 65, 32, 12, 48, 65, 31, 78, 62, 32, 49, 32, 1, 57, 96, 3, 21, 9, 4, 62, 3, 5, 4, 1, 2, 3, 44, 65, 78, 32, 16, 97, 54, 16, 44, 52, 32, 64, 89, 45, 32, 65, 15, 34, 18, 16]
b = [123, 32, 18, 98, 119, 108, 65, 41, 124, 80, 125, 38, 124, 111, 74, 49, 83, 108, 94, 108, 84, 6, 96, 83, 44, 121, 104, 110, 32, 95, 117, 101, 99, 123, 127, 119, 96, 48, 107, 71, 92, 29, 81, 107, 90, 85, 64, 12, 43, 76, 86, 13, 114, 1, 117, 126]

flag = ""
for i in range(56):
    c = a[i] ^ b[i]
    c = c ^ 0x13
    flag = flag + chr(c)

print(flag)

zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}

相关推荐
金銀銅鐵2 小时前
用 Pygame 实现 15 puzzle
python·数学·游戏
零零信安2 天前
零零信安荣登数世咨询《新质·数字安全专精百强(2026)》暗网情报领域,彰显专业实力与创新引领
安全·网络安全·数据泄露·暗网·零零信安
两水先木示2 天前
【Unity3D】小游戏启动优化、发热优化、蒙皮网格优化
游戏
资源分享助手2 天前
杀戮尖塔2下载、Slay the Spire 2中文版、卡牌肉鸽游戏、杀戮尖塔2联机、杀戮尖塔2攻略
游戏
憧憬成为web高手2 天前
l33t-hoster
学习·web安全·网络安全
HackTwoHub2 天前
Sqli-Scanner SQL注入SKILL自动化挖掘SQL注入,零依赖自动化SQL注入挖掘,赏金猎人
数据库·人工智能·sql·web安全·网络安全·自动化·系统安全
爱网络爱Linux2 天前
网络安全与渗透测试实用工具大全
web安全·网络安全·信息安全·cisp-pte·cisp·cissp
xsc-xyc2 天前
用 Tailscale + Syncthing 实现手机、电脑与 NAS 的跨网络文件同步
linux·网络·网络安全·智能手机·电脑
持敬chijing2 天前
Web渗透之SQL注入-常用sql语句
sql·安全·web安全·网络安全
Swift社区2 天前
当 AI 接管游戏世界:鸿蒙游戏 Workspace Runtime 架构揭秘
人工智能·游戏·harmonyos