[ACTF新生赛2020]SoulLike
- ELF文件,应该没壳儿,在ubuntu里运行一下看看大概的情况
- 直接上ida了
如果能满足sub_83A()的条件,就能输出flag
看一下sub_83A()
sub_83A(),将传进去的v8进行了3007行的异或操作,然后得到v3里的值,如果不对,会将错误的地方的下标打印出来
拿v3里的值反向异或一下应该就能得到flag,但是将sub_83A()里的代码复制出来后还要修改好一会儿,既然会将错误的那一位给打印出来,那就干脆爆破每一位吧,也不多,12位
贴一下爆破exp
from pwn import *
import re
flag = "actf{"
# context.log_level="debug"
k = 0
for n in range(12):
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+1:
print s
flag += chr(i)
k+=1
p.close()
print(flag)
不懂为什么最后结束的时候会报错,但是能爆破到正确的flag
flag{b0Nf|Re_LiT!}