BuuCTF難題詳解| Misc | 我愛Linux
阿新 • • 發佈:2020-07-16
欄目介紹
這個欄目是負責寫,比較難的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('\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<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}
感謝大家瀏覽,要是有幫助點個讚唄~謝謝惹