反序列化漏洞的入门知识总结

1.概念定义

序列化与反序列化的目的是让数据在传输和处理的时候更简单,更快,反序列化出现在多种同面向对象语言所开发的网站和软件上,比如java,php,python等等,如果有语言一个都没学的,可以先去补一下面向对象编程的概念

序列化:把对象转化成字节流(java),或者字符串(php,python)和数组(php)

反序列:把字节流,字符串,数组转换成对象

2.反序列漏洞出现的根本原因

我们可以通过给变量赋值序列化内容去定义一个对象,比如变量a赋值成了类A的对象的序列化内容,则变量a是类A的一个对象

这里可以看我的代码:初学php反序列化漏洞使用的代码-CSDN博客

于此同时,如果我们可以提交这个被反序列化的内容,我们可以通过序列化内容去定义某个对象的属性,通过魔术方法和接口去触发这个对象的方法,如果这个对象的某个方法或者魔术方法中出现了漏洞,我们就可以直接使用,当然触发魔术方法可能更简单,这里也可以看上方我的代码。

3.针对于三种语言常用的方法

1.php

魔术方法;原生类;语言自身的漏洞

魔术方法可以在我的代码中看见,可以自己调整代码,查看魔术方法的触发条件

原生类:php环境自带的类,这个很大程度依赖于网站的环境,我的代码中有检测固定魔术方法的类的代码,当然是运行在本地的,我们可以去设置贴近于网站的环境和php版本去尝试

语言自身漏洞:在某些版本下语言自身可能产生漏洞,比如php报过wakeup魔术方法的绕过漏洞

2.java

主要出现在第三方组件和引用库和接口上面

3.python

魔术方法:之后我会去补一下代码

而且由于python不需要一定和网站本身具有的类相同才可以创建对象的特性,所以造成的漏洞往往更加严重

3.三个语言序列化的函数与库

php:serialize序列化,unserialize反序列化

java:

java.io.ObjectOutputStream:表示对象输出流 它的writeObject(Object obj)方法可以对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。

java.io.ObjectInputStream:表示对象输入流 它的readObject()方法从源输入流中读取字节序列,再把它们反序列化成为一个对象,并将其返回。

这里的不全的,要用的时候直接搜,java中序列化和反序列的接口很多

python:pickle.loads pickle.load 反序列化

pickle.dumps pickle.dump 序列化

带s的是直接转换成,不带s的是要指定输出的文件

4.三个语言序列化之后的特点

php:这个可以直接看我的php反序列代码,和前面的链接是一样的

java:16进制后开头为AC ED base64加密之后 rO0AB

python:没有特殊的特点

5.黑盒白盒

黑盒:比较难挖掘到,一般都是在数据传输的位置

白盒:功能追踪,重点函数,类名的追踪

6.案例

PHP:

1.ctfshow(对不起还是没钱买,大家可以自己复制代码到电脑上做)看看大佬的:ctfshow web 反序列化(web254-278)_ctfshow php反序列化-CSDN博客

2.ctf赛题:极客大挑战2019 php(直接在平台上搜索就可以做了,我做完之后没截图):

BUUCTF在线评测 (buuoj.cn)

思路总体上:通过wakeup的绕过去突破

3.typecho:先看看大佬的CVE-2018-18753 Typecho 反序列化漏洞 分析复现 - FreeK0x00 - 博客园 (cnblogs.com)

java:

CTF网鼎杯2020朱雀组 thinkjava思路记录-CSDN博客

python:

CTFCISCN2019华北Day1 ikun 思路记录-CSDN博客

相关推荐
黎阳之光6 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
上海云盾-高防顾问6 小时前
网络安全防护发展趋势:从被动防御到主动赋能
安全·web安全
CCTI_Curran6 小时前
UL4200A是美国针对纽扣电池安全标准
安全·纽扣电池·ul4200a·纽扣电池gcc认证·美国亚马逊
做个文艺程序员6 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
是罐装可乐6 小时前
深入理解“句柄(Handle)“:从浏览器安全到文件系统访问
前端·javascript·安全
Figo_Cheung7 小时前
Figo义商本体约束推理引擎 (CRE):基于已部署CRE本地模型的技术实践研究——迈向AGI时代的AI伦理安全框架
人工智能·安全
信创DevOps先锋8 小时前
DevOps工具链选型新趋势:本土化适配与安全可控成企业核心诉求
运维·安全·devops
ayt0078 小时前
Netty AbstractNioChannel源码深度剖析:NIO Channel的抽象实现
java·数据库·网络协议·安全·nio
三七吃山漆9 小时前
BUUCTF-[BJDCTF2020]Mark loves cat
web安全·网络安全·buuctf
盟接之桥10 小时前
盟接之桥®制造业EDI软件,打通全球供应链“最后一公里”,赋能中国制造连接世界
网络·安全·低代码·重构·汽车·制造