zoukankan      html  css  js  c++  java
  • BuuCTF难题详解| Misc | 我爱Linux

    栏目介绍

    这个栏目是负责写,比较难的Misc,日常记录,如果有错误请及时指出。谢谢
    Python 3.7版本
    脚本临时学的可能没有那么完美,自己码出来还有很大问题,请见谅。

    BuuCTF难题详解| Misc | 我爱Linux

    这一题目研究的比较久,现在详细的说一下:
    本题要点就是python 序列化内容的存入。
    至于序列化是啥:

    Python中的Pickle模块实现了基本的数据序列与反序列化。 一、dump()方法 pickle.dump(obj, file,
    [,protocol])
    注释:序列化对象,将对象obj保存到文件file中去。参数protocol是序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)。file表示保存到的类文件对象,file必须有write()接口,file可以是一个以’w’打开的文件或者是一个StringIO对象,也可以是任何可以实现write()接口的对象。
    二、load()方法 pickle.load(file)
    注释:反序列化对象,将文件中的数据解析为一个python对象。file中有read()接口和readline()接口

    转自:https://blog.csdn.net/Yangxing_ch/article/details/105492762

    只要明白,他把序列话存进去,我们现在要把它提取出来,所以我们先进行第一部操作,寻找图片中的序列化
    在这里插入图片描述
    当中我们找到jpg的结尾FFD9
    在这里插入图片描述
    大概能知道,后门都是序列化文件了。我们把他复制出来全部粘贴出来
    在这里插入图片描述
    就会是一堆看不懂的序列化文件,我们通过脚本转换一下

    import pickle  
    
    fp = open("2.txt","rb+")      ''' 打开序列化文件 '''
    fw = open('pickle.txt', 'w')  ''' 打开保存文件 '''
    a=pickle.load(fp)             ''' 反序列化文件编译 '''
    pickle=str(a)                 ''' 转换成字符串要不然不能保存 '''
    fw.write( pickle )            ''' 写入文件 '''
    fw.close()                    ''' 关闭文件 '''
    fp.close()                    ''' 关闭文件 '''
    

      

    在这里插入图片描述
    成功获得坐标代码,然后使用脚本跑一下

    fw = open("pickle.txt","r")
    text=fw.read( )
    i=0
    a=0
    
    
    while i<len(text)+1:
        if(text[i]==']'):
           print('
    ')
           a=0
        elif(text[i]=='('):
            if(text[i+2]==','):
                b=text[i+1]
                d=text[i+1]
                b=int(b)-int(a)
                c=1
                while c<b:
                    print(" ", end="")
                    c += 1
                print(text[i+5], end="")
                a=int(d)
            else:
                b=text[i+1]+text[i+2]
                d=text[i+1]+text[i+2]
                b=int(b)-int(a)
                c=1
                while c<b:
                    print(" ", end="")
                    c += 1
                print(text[i+6], end="")
                a=int(d)
        i +=1
    

      

    在这里插入图片描述

    描一下
    在这里插入图片描述

    flag{a273fdedf3d746e97db9086ebbb195d6}

    感谢大家浏览,要是有帮助点个赞呗~谢谢惹在这里插入图片描述

  • 相关阅读:
    poj 3253 Fence Repair (优先队列,哈弗曼)
    容斥原理 (转载)
    poj 1088 滑雪 DP(dfs的记忆化搜索)
    饭卡 01背包 + 贪心
    N分之一 竖式除法模拟
    poj2325 大数除法+贪心
    优先队列重载运算符< 以及初始化列表
    POJ 2718 Smallest Difference(贪心 or next_permutation暴力枚举)
    HASH算法
    字符串匹配算法——KMP算法
  • 原文地址:https://www.cnblogs.com/Mercurysur/p/13324911.html
Copyright © 2011-2022 走看看