首页 > 其他 > 详细

BUUCTF reverse [ACTF新生赛2020]SoulLike

时间:2021-02-07 18:09:40      阅读:78      评论:0      收藏:0      [点我收藏+]

查看无壳,用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!}

BUUCTF reverse [ACTF新生赛2020]SoulLike

原文:https://www.cnblogs.com/sk2rw/p/14385030.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!