buuctf reverse3

1.判断Str2与Destination是否相等,相等则“right flag”,不等则“wrong flag”

2.v5=Destination长度

3.for():Destination[j]+=j

4.v11 = j_strlen(Destination)

5.Destination=v4

6.对v4进行操作

7.v3=Str长度

8.获取字符串长度存入Str中

9.for()不明意义的操作

跟进第六步的函数

看不懂,但是有特征:出现过很多次BASE64_table_417B30,初步怀疑是base64加密

再打开检查加密的插件

证实是base64加密

程序的大致流程是:输入的字符串先进行base64加密后再进行第j位加上j的加密操作,然后和Str2比对,跟进Str2

flag就是对这个字符串解密,开始写脚本

小细节:解密过程是加密过程的逆向操作,它第j位加上j,我们第j位就减去j

然后base64解密

得到flag{i_l0ve_you}

笔记:

那个不明意义的操作:____report_rangecheckfailure();

检查堆栈溢出

以后不会写逆向推理的过程了,相信刷了几道题已经有逆向分析的能力了,以后只写大致流程了,看注释应该就能看懂

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值