CTF学习笔记 Reverse篇(2) BUUCTF-reverse3

之前看的题对本小白来说有点难度,最近决定从最基本题目入手找感觉~

题目地址 BUUCTF-reverse3

首先查看exeinfo PE,无壳,32位,拖入IDA查看反编译代码:

在这里插入图片描述
分析如下:
在这里插入图片描述
查看Str2的值

在这里插入图片描述

先通过最后两步得到v4的值,每个字符减去j个偏移量即可,得到值为e2lfbDB2ZV95b3V9 (脚本一起放到最后)

重点是第三步如何对Str操作得到v4的,查看函数sub_4110BE,发现返回值为另一个函数,继续查看sub_411AB0
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
这里我就有点发懵,但是感觉有点像一种变换,是通过那个aAbcdefghijklmn字符串得到的v12返回值,查看字符串内容
在这里插入图片描述

一般结尾为运算符的比较像base64加密,尝试一下,通过python的base46库解码,具体函数讲解可以查看此博客 python中base64库用法详解

最后通过对v4的值解码得到输入字符串应为{i_l0ve_you},脚本如下:

import base64
a = "e3nifIH9b_C@n@dH"

d = ""

for i in range(len(a)):
    d += chr(ord(a[i])-i)
    
print(base64.b64decode(d))

运算得到结果

在这里插入图片描述

最终flag为flag{i_l0ve_you}

总结一下,这题的核心就是判断base64加密,主要是尝试和观察,一是在变换函数中有一个if判断,两个循环,可以猜测为base64,二是通过字符串的特征

收获了判断base64的基本方法,base64库的使用~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值