BUUCTF reverse [ACTF新生赛2020]SoulLike

首页 > 教育 > 正文
2021-05-12

发表自话题:Soul正式递交招股书

查看无壳,用ida打开。

前面逻辑比较简单,在到了sub_83A函数的时候,会报错无法反编译。

解决办法是将ida /ctg目录下的hexrays.cfg文件中的MAX_FUNCSIZE=64 改为 MAX_FUNCSIZE=1024。

关键函数在这一部分,输入得flag经过多次的异或与v3函数进行比较,如果不匹配则输出wrong on 并输出错误的位置。

我一开始的思路是动态调试输入一样的几个数字,然后进行异或操作之后再与原输入进行异或,希望这样获得进行异或的数值,再与

v3进行异或来获得flag,但是失败了异或好像不能这样用,这样只能进行爆破了。

贴出脚本

from pwn import * import re flag = "actf{" # context.log_level="debug" k = 0 while True: for i in range(33,127): p = process('./SoulLike') _flag = flag + chr(i) print _flag p.sendline(_flag) s = p.recvline() r = re.findall("on #(.*?)\n", s)[0] r = int(r) if r == k: print 'no' print k elif r == k + 1: print s flag += chr(i) k += 1 p.close() p.close() if k > 11: break print (flag)

获得flag后面加上一个}即可。

actf{b0Nf|Re_LiT!}

标签组:[异或

上一篇匠心家居向实控人定向巨额分红,该公司中小股东的权益又该如何保障?

下一篇世界上最成功的心灵鸡汤:Chicken Soup for the Soul

相关阅读

热门阅读