[reverse]软件密码破解2

0x00 已知条件

给了一个CTF_100_1.exe。

0x01 思考过程

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


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



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

    • 调试,发现写入函数的参数是一个.text地址,那里下面一点还有不可解释的数据。
      于是patch过去,再看情况调调函数结尾位置,main和这部分就都能反汇编了。
image.png
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 细节

  • 记得小端序
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容