蓝帽pickle反序列化新方法
蓝帽杯file_session(pickle反序列化新方法)
伪造cookie
这题考点很多,最后的pickle反序列化做法确实很新颖,让人学到了很多东西。
官方wp
pickle反序列化原理
可以控制读取的offset从哪开始,尝试读取内存文件。这部分参考wp,注意别忘了时间戳不一样,伪造了cookie后就能进行pickle反序列化了。
pickle反序列化
题目在_loads中将R i o b
全部ban了,所以需要寻找新的方法。
payload为bytes.__new__(bytes,map.__new__(map,eval,['print(11111)']))
利用方法很新颖,学到了属于,具体调用可以参考wp。题目最终的opcode是这样的,利用的是_loads
函数,但是其实还有一个loads
函数,所以这里尝试了用loads
函数写了另外一种opcode
1 |
|
用loads
函数的话,其实只需要给参数都改为元组形式,因为上面的opcode在loads
函数下会报一个错误.
回到pickle源码可以看到loads
函数其实是从_pickle
中引进的,而_loads
函数就在pickle
里实现了,两者的实现过程是不一样的。看_pickle
的源码就能发现它要求你的参数为元组而不能是列表,所以用t
操作码即可。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!