zoukankan      html  css  js  c++  java
  • BUUCTF Youngter-drive

    exe逆向,首先查壳,发现有upx壳,upx -d脱壳,拖进ida
    找到主函数
    在这里插入图片描述
    这里可以看到创建了两个线程,先沿着StartAddress,
    在这里插入图片描述
    一直找到sub_411940,这里有一个问题,当使用f5是,会显示
    在这里插入图片描述
    这是由于堆栈不平衡导致的,看汇编部分
    在这里插入图片描述
    这里要将 -04改为00
    在这里插入图片描述
    改完后
    在这里插入图片描述
    之后再次f5
    在这里插入图片描述
    找到了加密函数,这是将字符串进行了替换,当字符是大写字母时,替换为off_418000处-38,小写则替换后-96
    这时回过头来看第二个线程
    在这里插入图片描述
    这个函数使对字符串的加密是隔一个字加密,也就是在奇数位时加密,偶数位时不变,

    看一下数据
    在这里插入图片描述
    写解密脚本

     
    off_418000 = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"
    
    off_418004 = "TOiZiZtOrYaToUwPnToBsOaOapsyS"
    
    flag=''
    
    for i in range(len(off_418004)):
        if i %2 == 0:
            flag += off_418004[i]
            continue
        for j,k in enumerate(off_418000):
            if off_418004[i] == k:
                if chr(j+38).isupper():
                    flag += chr(j+38)
                else:
                    flag += chr(j+96)
    
    print flag

    得到flag,但最后
    在这里插入图片描述
    在比对时只比对了29位,所以得出的flag少了一位,所以需要再加一位提交。

  • 相关阅读:
    android有点纠结的小问题
    持久化应用程序实例的状态
    preference activity框架
    RISC与CISC比较
    C++ const用法
    虚析构函数
    best-case analysis in real-time system
    jitter
    C/C++中static,const,inline三种关键字详细总结
    #pragma warning(disable 4786)
  • 原文地址:https://www.cnblogs.com/harmonica11/p/11365831.html
Copyright © 2011-2022 走看看