ctf——逆向新手题目4 (game) WP

首先还是下载附件,这次是一个exe文件,先打开看一下
在这里插入图片描述
发现这是一个依次输入数字然后点亮所有的符号,得到flag的游戏,然后我们就用Exeinfo PE打开
在这里插入图片描述
发现是一个c++编写的32位程序,然后就用ida32打开
在这里插入图片描述
有时进来之后无法直接找到main函数,那就按 Alt+T 搜索文本 main 就能找到,然后就跟进main函数查看伪代码
在这里插入图片描述
继续跟进main_0函数,跟进后可以看到以下代码
在这里插入图片描述
这些代码是判断输入的数字是否在要求范围内,否则重新输入,下面的代码是根据输入的数字,改变字符
在这里插入图片描述
我们就先跟进 sub_4576D6 函数查看一下改变符号的代码,经过两次跳转后就看到了如下代码
在这里插入图片描述
现在也就不看题中改变字符的代码了,继续查看主函数,下面最后这些代码就是判断每个字符都为1,即都被点亮后执行sub_457Ab4函数,我们猜测这里就是得到flag 的代码,就继续跟进sub_457Ab4
在这里插入图片描述
两次跳转后看到
在这里插入图片描述
猜测下面就是得到flag的代码
在这里插入图片描述
看到这里的最后的一个for循环有v2和v59进行运算,应该就是得到flag的代码
这里对v2和v59进行或运算,逆运算也是或运算,我们把v2和v59地址增加后的数字编写进数组
编写Python脚本得到flag

v59 = [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, 0]
v2 = [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, 0]
flag = ' '
for i in range(56):
    v2[i] ^= v59[i]
    v2[i] ^= 0x13
    flag += chr(v2[i])
print(flag)

脚本写好后运行得出flag
在这里插入图片描述
zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}
本题结束

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值