zoukankan      html  css  js  c++  java
  • Ha1cyon-CTF 芜湖

    感觉自己还是很欠缺的,尤其是C++的逆向,对stl的不熟悉,直接误导我静态分析了。。。然后这种题和平常不同的是没有任何混淆和flag验证,需要的是耐心的分析,在过程中,找到线索,这题还考了base64的隐写,2333,开拓了思维,感谢出题师傅,也和出题师傅交流了很久,这种题十分适合动调,注意中间过程,尤其是寄存器和堆栈的变化。
    拖入ida,找到了主函数,整体逻辑很清晰。
    在这里插入图片描述
    重点说下几个函数,这个函数名真的有点难看,最好能改个名字看,不然容易晕。
    这个函数,
    在这里插入图片描述
    这玩意是四个与非门,构成了一个异或门。。。模电nb。
    在这里插入图片描述

    (NAND)

    其实重点在这
    在这里插入图片描述
    相等于把二维数组进行提取,并进行了一波操作,然后打印出来。这里很可疑是出现了一堆的base64,拿去解码是歌词,不对,又因为很多行base64,所以会联想到隐写,模拟执行一下,就打印出一堆base64,base64隐写脚本,跑一下就出来了

    def base64_stego(lines):
        alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
        flag = ''
        temp = 0
        digit = 0
        for i in lines:
            if i[-1] != '=':
                continue
            elif i[-2] != '=':
                digit += 2
                temp = (temp << 2) + (alphabet.find(i[-2]) & 0x3)
            else:
                digit += 4
                temp = (temp << 4) + (alphabet.find(i[-3]) & 0xf)
            if digit == 8:
                digit = 0
                flag += chr(temp)
                temp = 0
            elif digit > 8:
                digit = 2
                flag += chr(temp >> 2)
                temp = temp & 0x3
        return flag
    awd=[]
    with open("1.txt","rb") as f:
        lines=f.readlines()
        for i in lines:
            awd.append(i.replace("
    ","").replace("
    ",""))
    print awd
    print base64_stego(awd)
    
  • 相关阅读:
    工厂模式
    将WebApi Host到控制台和IIS
    模板方法模式
    策略模式
    插件式WebApi服务及自动生成Api帮助文档
    单例模式
    外观模式
    论文序号的结构层次顺序
    计算机面试之Session、Cookie、Token
    Django的日常操作
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779870.html
Copyright © 2011-2022 走看看