当前位置: 首页> 游戏> 网游 > [ACTF新生赛2020]SoulLike

[ACTF新生赛2020]SoulLike

时间:2025/7/14 7:50:31来源:https://blog.csdn.net/wcj126/article/details/139660881 浏览次数:0次

两个文件

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 += 1p.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)#临时flagprint(_flag)#打印这个临时flag,因为后面不知道为什么会报错p.sendline(_flag)#输入临时flags = p.recvline().decode()#将得到的一行回答解码if "on #" in s:#IDA里面可以看见报错有wrong on #%d\nr = int(s.split("on #")[1].split("\n")[0])#代码在#后面会输出iif r == k + 1:print(s)flag += chr(i)k += 1p.close()
print(flag)

关键字:[ACTF新生赛2020]SoulLike

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: