[reverse]软件密码破解2

0x00 已知条件

给了一个CTF_100_1.exe。

0x01 思考过程

  • 随便给一个输入,发现一个像是加密的函数,改名成check_input。


    [reverse]软件密码破解2_第1张图片
    image.png
  • 发现里面做的事是把当前路径和所给的输入字符串连接起来,然后开了子线程。
    • 如果调试的话,看不到子线程里面的过程,且check_input最后会返回result = -1
    • 而且最后还把Buffer跟这一堆进行比较,不通过则check_input最后也返回result = -1,看着像最终的目标串
    • 主函数(还没法反汇编)得到-1后会exit
image.png
  • 注意到上述过程中有这个部分:



    调试时先跳到114行,再跳上去做了4个赋值操作。

    • 调试,发现写入函数的参数是一个.text地址,那里下面一点还有不可解释的数据。
      于是patch过去,再看情况调调函数结尾位置,main和这部分就都能反汇编了。
[reverse]软件密码破解2_第2张图片
image.png
[reverse]软件密码破解2_第3张图片
image.png
  • 看看main和这个函数就很清楚了,目标串多半就是前面提到的那个。把这个加密过程反着写个脚本,求出flag。
[Python]
target = '\x25\x5c\x5c\x2b\x2f\x5d\x19\x36\x2c\x64\x72\x76\x80\x66\x4e\x52'
xor = 'elcome to CFF te'
len = len(xor)
flag = ''

for i in range(len):
    flag += chr(ord(xor[i]) ^ (ord(target[i])-1))

print flag

0x02 细节

  • 记得小端序

你可能感兴趣的:([reverse]软件密码破解2)