BugKu逆向之04-游戏过关

BugKu逆向之04-游戏过关

一、文件描述

  1. 正儿八经的exe文件,,可执行,如下图
  2. 911KB
  3. 32位在这里插入图片描述
  4. 这个游戏程序的大致意思是,,有8个灯一起围成一个圈,,它们有亮和不亮两种状态,,按了某一个灯比如n,,它左右两边的灯的状态就会变。。游戏通过就是你按了数次后这8个都得亮,,然后你才能拿到flag、、、
  5. 比如灯亮与不亮用1和0表示,,一开始全都是暗的,用0 0 0 0 0 0 0 0表示,如果我按了2,,就变成1 1 1 0 0 0 0 0;接着继续按5,,变成1 1 1 1 1 1 0 0。这里还剩两个没亮,,
  6. 由于这个灯是围成一个圈圈,此时我按7 或者按8 都会将旁边一个变成0…
  7. 这。。。。
  8. 算了,还是破解试试看能不能拿到flag。。。

二、解题思路

  1. OD中打开,,,查看有没有明显的字符串,,,
  2. 这里我注意到两个,一个是“done!!!, the flag is”,
    在这里插入图片描述
  3. 另一个是sorry,n error, try again\n
    在这里插入图片描述
  4. 所以,,很明显,,第1张图中给出了,,the flag is 巴拉巴拉,我们在反汇编窗口中找到这句话,,,
    在这里插入图片描述
  5. 反汇编窗口中,the flag is 这句话下面跟着好多字符串,,直觉告诉我,,这就是FLAG!!!
  6. 但是,要运行到这里是需要通过game的,,那我们就需要找到game的跳转,,然后给它直接跳转到这里,,记住这个address,,00C5E968h。
  7. 根据第二个字符串“sorry,n error, try again\n”,,我们直接定位到代码中
    在这里插入图片描述
  8. 我们不想看到“sorry,,,”这句话,所以要在它之前,在输入n字符串之后,跳转到第一个字符串那里,,
  9. 在sorry上面,,有【jle】跳转和【cmp】(2)比较,再往上有个【jl】跳转和【cmp】(1),【cmp】(1)是拿着我们输入的n与正确的n进行比较。。如果输入小于0,就直接通过jl到“sorry,,”。
  10. 我们当然是关注第一个跳转【jl】, 一个简单&粗暴的方法就是直接将【jl 巴拉巴拉】跳转直接改为【jmp 00C5E968h】,,直接跳过输入失败也跳过输入成功,,嘎嘎,,试一波看看
  11. 然后F9运行,随便输入一个数字,,我输入的是4,然后就打印结果到DOS界面了。。
    在这里插入图片描述
  12. 这里说明一下,这个方法因为粗暴,输出到dos后程序会中断,,然后,你点击忽略就行了。。。
  13. 另一个不那么粗暴的方法就是你去断点调试,,在原来那个地方【00C5E986】下个断点,然后F8调试到这个位置【00C5EBC1】就会在堆栈里看到
    在这里插入图片描述
  14. Ok,,结束。。FLAG如下:zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值