BUUCTF逆向题reverse3

一、 工具:

        1、IDA

        2、编译器(编写脚本)

二、解题过程:

①、首先载入将文件载入IDA(32位)

        (查壳发现程序没有加壳,且是32位的程序)

②、在函数窗口找主函数入口,把滚动条拉到最底下找到 _main_0 函数

③、双击 _main_0 函数得到图表视图

 ④、菜单栏->视图->打开子视图->生产伪代码(注释是我自己写的,不用管它)

 观察代码发现第26行有个函数 sub_4110BE 双击进去

 再双击 sub_411AB0 查看行数的大致实现步骤,不过太复杂,不需要去理会,进去之后双击数组查看内容

 

 进去之后会发现一串字符,这里基本可以判断采用了base64加密(判断技巧:①:字符串里有个等号;②:格式是abcdef.....基本可以判断是base64)

 ⑤、回到主函数的伪代码处,双击 Str2

 e3nifIH9b_C@n@dH  这个字符串是我们拿到正确flag的关键字符串

根据伪代码不难分析出:先对字符串进行了 base64 的加密,然后再通过加法运算又对字符串进行了修改,所以我们可以写一个脚本把过程逆一下就可以得到加密的flag

这里我用的C语言

 这样就把经 base64 加密的flag得到了  e2lfbDB2ZV95b3V9  ,然后通过网上在线工具将这段字符串解密即可得到真正的 flag

 所以最终的结果:flag{i_l0ve_you}

收获:

1.如何判断 base64 加密

也可以通过插件来判断:

  • findcrypt-yara
  • IDASignsrch
  • findcrypt3
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值