我爱linux图片,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

只要明白,他把序列话存进去,我们现在要把它提取出来,所以我们先进行第一部操作,寻找图片中的序列化

60023188bf4d365f7cb8d42fdbc51e6b.png

当中我们找到jpg的结尾FFD9

08acd5650e7434068b5a9300301d487c.png

大概能知道,后门都是序列化文件了。我们把他复制出来全部粘贴出来

a890afeebc8df998f7ead987fb0c808c.png

就会是一堆看不懂的序列化文件,我们通过脚本转换一下

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() ''' 关闭文件 '''

aca083298e0f921944078a6434627d74.png

成功获得坐标代码,然后使用脚本跑一下

fw = open("pickle.txt","r")

text=fw.read( )

i=0

a=0

while i

if(text[i]==']'):

print('\n')

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

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

print(" ", end="")

c += 1

print(text[i+6], end="")

a=int(d)

i +=1

5c1c86ea0cf6f94e499fcc8b43771e46.png

描一下

d3633f3f66769c9ea97a01ed03c2e50b.png

flag{a273fdedf3d746e97db9086ebbb195d6}

感谢大家浏览,要是有帮助点个赞呗~谢谢惹

6ed88291d689a4e6a9c0e0e3c99d823d.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值