[ACTF新生赛2020]SoulLike

28 篇文章 1 订阅
7 篇文章 1 订阅

两个文件

ubuntu运行

IDA打开

清晰的逻辑

很明显,我们要sub83a 返回ture

这里第一个知识点来了

你点开汇编会发现

这里一堆xor巨多

然后IDA初始化设置的函数,根本不能分析这么多

我们要去改IDA的设置

cfg 里面的

 hexrays文件

在max_funsize这 修改为1024,默认是64

等待一会编译就可以看见代码了

主要逻辑

看见这首先肯定想到的就是设置断点,如果没有防动调的话,就可以直接拿到enc了

不出所望,断不下来

难道我们真的要那么多代码一个一个逆吗?

怎么可能,我觉得正常出题人都不可能这么干吧

跟着网上学了个脚本

[ACTF新生赛2020]SoulLike 题解-CSDN博客

尊重作者,我就直接拿他的代码了

from pwn import *
flag = "actf{"
k = 0 
for n in range(12):
    for i in range(33,127):
        p = process('./111')
        _flag = flag + chr(i)
        print(_flag)
        p.sendline(_flag)
        s = p.recvline().decode()
        
        if "on #" in s:
            r = int(s.split("on #")[1].split("\n")[0])
            if r == k+1:
                print(s)
                flag += chr(i)
                k += 1
        p.close()
print(flag)

(我进程改了个名字叫111)

这里我解释下这段代码

from pwn import *  #主要是pwntool
flag = "actf{"#已知的flag头
k = 0#K是当前的已经确认正确的字符(除却actf{)
for n in range(12):#12次循环
    for i in range(33, 127):#遍历可视化字符
        p = process('./111')#打开进程
        _flag = flag + chr(i)#临时flag
        print(_flag)#打印这个临时flag,因为后面不知道为什么会报错
        p.sendline(_flag)#输入临时flag
        s = p.recvline().decode()#将得到的一行回答解码
        if "on #" in s:#IDA里面可以看见报错有wrong on #%d\n
            r = int(s.split("on #")[1].split("\n")[0])#代码在#后面会输出i
            if r == k + 1:
                print(s)
                flag += chr(i)
                k += 1
        p.close()
print(flag)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Nickname

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值