本文收集C# 漏洞挖掘过程中使用的一些知识点
.Net Remoting 导致的反序列化漏洞
.....
动态代理在java反序列化中的应用
动态代理在Java反序列化中的应用
动态代理简介
何为代理?在日常生活中我们或多或少都接触过房产中介、4S店以及各种各样的代理商,他们在经济社会运行当中扮演着代理的角色,负责对接厂商与客户。
用户如果想要投诉产品、寻求赔偿等,可以统一找到代理商,由代理商向厂商提出,这样便极大的节约了用户的各方面成本。
在编程中所谓的代理模式也是同样的道理,当我们想要对某一个类进行功能扩展而又不想直接修改当前类的代码的时候,我们可以创建一个代理类来对目标类进行包装。
通过在当前类的运行前、运行后、运行异常时添加新的代码从而实现目标类功能的增强与拓展。这便是代理模式的运行。如下图,A表示被代理类,B表示代理类,当A没有被代理时,外界的其他方法可以直接调用A的方法,
当A被代理后,C的方法如果要想调用A的方法就需要先通过B类再由B类调用A类的方法,那么我们便可以在B类中增加一些其他的功能。B类此时就类似一个收保护费的,要想从此过,留下买路钱,正所谓漫天要价,坐地还钱。
BinaryFormatter反序列化漏洞之ActivitySurrogateSelector利用链
从三味书屋到百草堂、从XmlSerializer到BinnaryFormatter之BinaryFormatter反序列化漏洞TextFormattingRunProperties利用链
利用链分析
TextFormattingRunProperties
实现了System.Runtime.Serialization.ISerializable
接口,故其在序列化以及反序列化过程中会自动执行GetObjectData
以及特定的构造方法internal TextFormattingRunProperties(SerializationInfo info, StreamingContext context)
我们直接从反序列化时执行的特殊构造方法创建对象的过程开始。
在调用构造方法创建对象期间会调用GetObjectFromSerializationInfo
方法从serializationInfo
中获取属性值。
从三味书屋到百草堂,从XmlSerializer到BinnaryFormatter之XmlSerializer反序列化漏洞ObjectDataProvider利用链
本文详细介绍了 XmlSerializer 反序列化漏洞利用的 ObjectDataProvider 调用链路
Java动态代理在反序列化漏洞中的应用
本文总结了一些常见的Java动态代理InvocationHandler在反序列化中的作用,这些InvocationHandler根据其功能的不同往往能达成奇妙的效果,本文对这些类进行了梳理总结,方便漏洞挖掘时能够快速有效地串联其各个Gadgets形成有效的利用链。
Java HashMap 实现方法
成员变量含义
变量名 | 默认值 | 含义 |
---|---|---|
DEFAULT_INITIAL_CAPACITY | 16 | 默认初始化容量 |
MAXIMUM_CAPACITY | 1 << 30 | 最大容量 |
DEFAULT_LOAD_FACTOR | 0.75 | 默认加载因子,当数组中元素数量超过总长度的0.75的时候会进行自动扩容 |
TREEIFY_THRESHOLD | 8 | 当链表长度超过8的时候会将链表转换为红黑树 |
UNTREEIFY_THRESHOLD | 6 | 当链表元素少于6的时候会将红黑树转换为链表 |
MIN_TREEIFY_CAPACITY | 64 | 只有当数组长度大于64的时候才会执行链表的树化,因为链表树化会增加空间复杂度,如果只要某一个链表长度超过8就进行树化得到的查询时间优化与增加的空间消耗两相比较是得不偿失的 |
从头开始挖掘Java RMI漏洞
xxxxxx
Apache Struts2 原理学习
过滤器初始化
Struts2 的访问从配置的org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
过滤器开始。
过滤器在程序加载过程中首先被执行的是init
方法
1 | public void init(FilterConfig filterConfig) throws ServletException { |