CommonsCollection4反序列化链学习】的更多相关文章

CommonsCollection4 1.前置知识 由于cc4没有新的知识点,主要是用cc2,然后稍微cc3结合了,所以我们可以看ysoserial源码,自己尝试构造一下,把cc2通过获取InvokeTransformer()获取templatesImpl的newtransformer()方法,改成用cc3的InstantiateTransformer初始化.那就把跟cc2不同的代码学习下. 1.1.transformingComparator 与cc2最大的不容就是transformingCo…
CommonsCollection6 1.前置知识 1.1.HashSet HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合.继承了序列化和集合 构造函数参数为空的话创建一个HashMap(),有一个参数的情况下,要创建指定容量的初始数值的哈希集合. 我们看到add方法会调用map.put()方法.这个map就是HashMap() //定义HashMap,E在泛型表示集合的元素,元素的类型为Object private transient HashMap<E,Obje…
C3P0 c3p0第一次听闻是用于fastjson的回显上,大佬们总结三种方法,后面两种主要就是用于fastjson和jackjson的回显利用(注入内存马) http base jndi hex序列化字节加载器 1.http base 1.1.漏洞复现 package ysoserial.test; import ysoserial.Serializer; import ysoserial.payloads.C3P0; import java.io.*; public class C3P0Te…
CommonsCollections7 1.前置知识 Hashtable Hashtable实现了Map接口和Serializable接口,因此,Hashtable现在集成到了集合框架中.它和HashMap类很相似,但是它支持同步,像HashMap一样,Hashtable在哈希表中存储键/值对.当使用一个哈希表,要指定用作键的对象,以及要链接到该键的值.然后,该键经过哈希处理,所得到的散列码被用作存储在该表中值的索引. //默认没有参数的构造方,新建为11容量的Hashtable public…
URLDNS URLDNS跟CommonsCollections比起来真是眉清目秀,该链主要用于验证漏洞,并不能执行命令,优点就是不依赖任何包. 1.利用链 * Gadget Chain: * HashMap.readObject() * HashMap.putVal() * HashMap.hash() * URL.hashCode() URLStreamHandler.hashCode() URLStreamHandler.getHostAddress() 其实看这个利用链我们就能发现其实跟…
GNU工具链学习笔记 1..so为动态链接库,.a为静态连接库.他们在Linux下按照ELF格式存储.ELF有四种文件类型.可重定位文件(Relocatable file,*.o,*.a),包含代码和数据,可用来连接成可执行文件或共享目标文件;可执行文件(Executable File),ELF可执行文件:共享目标文件(Shared Object File,*.so),包含代码和数据:核心转储文件(Core Dump File),进程意外终止时,系统将该进程的地址空间内容和其他信息保存到该文件中…
安洵杯iamthinking tp6pop链 考点: 1.tp6.0反序列化链 2.parse_url()绕过 利用链: 前半部分利用链(tp6.0) think\Model --> __destruct() think\Model --> save() think\Model --> updateData() think\Model --> checkAllowFields() 后半部分利用链(同tp 5.2后半部分利用链) think\model\concern\Convers…
Fastjson前置知识 Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象. Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象 1.Fastjson基础用法 1.1.序列化与反序列基础用法 //序列化 String text = JSON.toJSONString(obj); //反序列化 VO vo = JSON.parse(); //解析为JSONObject类型或者…
JdbcRowSetImpl 接着继续学习fastjson的第二条链JdbcRowSetImpl,主要是利用jndi注入达到的攻击,而且没有什么利用限制,而且其原理就是setter的自动调用,具体setter调用代码可以参考上篇文章调试的部分 1.漏洞复现 1.1.组件依赖版本 fastjson:1.2.22-1.2.24 1.2.利用方式 不像TemplatesImpl链需要指定的利用方式,JdbcRowSetImpl链只需要可以控制输入就能利用. JSON.parse(evil); JSON…
废话篇: 在js的学习过程中有一大难点就是原型链.学习的时候一直对这一内容不是十分的明白.纠结的我简直难受.,幸好总算给他弄通了,哇咔咔,总算可以不用在睡梦中还想着他了. 正文篇: 要了解原型链我们首先要记住的一点是JS中所有的东西都可以用对象来理解.函数在JS中实际上也是一个对象.然后再去看原型链的东西. 上图是首要的: 实际上我们可以吧JS中的对象看成两种,一种是我们所熟知的一般的对象,还有一种就是JS中所有的方法对象. 一般对象: 对于一般的对象而言,其实际上就是一个方法与属性的集合,而在…
javascript是基于原型的一门脚本语言,那究竟原型是什么? 本文将从以下几个方面重点阐述原型 构造函数是什么? 构造函数和我们常见的Array String有什么关系? 原型的使用? __proto__是什么? constructor是什么? 什么是原形链? 一:请看下面一段代码 //声明一个构造函数 函数名首字母一般大写 function Fn() { } Fn.prototype.a = function() { alert(1); } //得到实例化对象 var f1 = new F…
作用域是javascript老生常谈的问题,在面试题中也经常出现.此文记录本人对js作用域的理解.从以下三个方面深入探讨js作用域和js作用域链. 1.什么是作用域? 2.什么是作用域链? 3.常见面试题. 一.什么是作用域? 熟悉编程的人都接触过作用域,比如全局变量和局部变量之分.作用域是变量和函数可以访问的范围,即作用域控制着变量和函数的可见性和生命周期. var name = "Aralic"; function person () { //局部变量 var age = &quo…
今天主要是学习了区块链在金融和供应链领域的应用,重点体现了区块链多方参与.透明可信.防篡改防抵赖的技术优势 区块链的应用场景最早是在金融行业应用较多,后续逐步扩展到传统行业,如:供应链.政务服务.物联网.新能源.互联网等,同时也出现了一些颠覆性应用场景:CDN.社交.共享经济.云存储.电商等. 案例1:银行间跨境支付/结算 特点:点对点交易.简化操作.易于扩展.高可用 案例2:银行KYC信息共享 特点:KYC(Know-Your-Customer).信息共享.隐私保护.高可用 案例3:供应链金融…
其实很早之前就听过区块链,也看过有关区块链的介绍,那个时候的理解主要还是一句话:分布式记账 然后开始关注比特币,听了有几年了,对于其来历.用途其实一直都是一知半解. 这次的课算是第一次以一个学员的身份去听专家从技术原理角度讲解"区块链",揭开这层神秘的面纱. 老师的讲解也比较通俗易懂,以一个转账的案例,将区块链的几个特性给描述了出来: 1)透明可信 2)防篡改可追溯 3)隐私安全保障 4)系统高可靠 一句话阐述就是:区块链是一种去中心化.去信任化.不可篡改和抵赖的分布式账本技术. 其中…
理解原型和原型链.需从构造函数.__proto__属性(IE11以下这个属性是undefined,请使用chrome调试).prototype属性入手. JS内置的好多函数,这些函数又被叫做构造函数.如:Object---Array---Function---Date---String---Number---Boolean---Symbol---RegExp.... JS里,所有的对象,都是其构造函数的实例.如{}是Object的一个实例,[]是Array的一个实例.fn() {}是Functi…
Hyperledger Fabric 手动搭建 前面我们学习了区块链是什么.还有自动搭建学习东西我们就要从简单到深入(入门到放弃),现在自动部署已经跑通了接下来就是手动搭建Fabric 网络可以更好的理解为什么要这么做. 使用cryptogen(密码生成器)和configtxgen(配置交易生成器)手动生成证书/密钥和各种配置构件(等同于执行./byfn.sh generate) 密钥生成器 cryptogen cryptogen 工具为我们的网络实体生成各种加密材料( x509 证书和签名秘钥…
Hyperledger Fabric 学习 什么是区块链 什么是区块链在我们没有接触的时候,只知道它是一个去中心化的存储方式.当我们发生交易,或者动作的时候我们会将记录通知给所有参与者共同维护,达到去中心化的进行存储.并且我们会将记录使用加密技术保证记录一旦添加到了账本中就无法修改(无法修改的账本就可以追溯信息根源)这个也就是区块链有时候被称为证明系统. 区块链使用场景 多方参与 跨机构数据共享需求 能够除本增收 提高工作效率 智能合约 智能合约也就是我们说的链码,我们可以通过智能合约访问我们的…
☞ ░ 前往老猿Python博文目录 ░ 在Hyperledger Fabric区块链中,有背书节点进行背书,Hyperledger Fabric 使用背书策略来定义哪些节点需要执行交易. Hyperledger Fabric在区块链交易方面采取了一个新颖的思路,将智能 合约的执行与账本的更新分开使它可以提高交易吞吐量,支持更细粒度 的隐私控制,实现更灵活强大的智能合约.而这些特性得以实现的一个 关键因素就是在交易加入账本之前进行显式地交易背书. 1.背书 背书"这个词源来自银行票据业务,传统意…
☞ ░ 前往老猿Python博文目录 ░ 一.超级账本(hyperledger) 超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,成员包括金融,银行,物联网,供应链,制造和科技行业的领头羊. hyperledger项目的目标是区块链及分布式记账系统的跨行业发展与协作,并着重发展性能和可靠性(相对于类似的数字货币的设计)使之可以支持主要的技术.金融和供应链公司中的全球商业交易. 项目采用独立的开放协议和标准,通过框架方法和专用模块,如各…
☞ ░ 前往老猿Python博文目录 ░ 一.智能合约的定义 通俗来说,智能合约就是一种在计算机系统上,当一定条件满足的情况下可被自动执行的合约,智能合约体现为一段代码及其运行环境.例如银行信用卡的自动还款就是一种典型的智能合约. 我们来看看智能合约概念的演进历史: 智能合约概念于1994年由Nick Szabo首次提出,百度上关于智能合约的定义:智能合约(英语:Smart contract )是一种旨在以信息化方式传播.验证或执行合约的计算机协议.智能合约允许在没有第三方的情况下进行可信交易,…
目录 1 基础 ConstantTransformer InvokeTransformer ChainedTransformer LazyMap TiedMapEntry TransformingComparator PriorityQueue TemplatesImpl 2 实现readObject方法的类及其利用链 BadAttributeValueExpExceptionCC PriorityQueueCC PriorityQueueCC2 HashMapCC HashSetCC Hash…
CommonsCollection2 1.前置知识 CmonnosCollection2需要用到Javassist和PriorityQueue 1.1.Javassist Javassist是一个开源的分析.编辑和创建Java字节码的类库 我们添加依赖看看 <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>…
JDK7u21 1.前置知识 jdk7u21是一条不依赖CommonsCollections库依赖的,看利用链所有知识其实跟CommonsCollections也有重复,我们来学习一下以前没学过的类或者方法.环境是jdk7u17. LinkedHashSet 首先入口是LinkedHashSet的readObject方法,LinkedHashSet是HashSet的子类,也继承了序列化接口和集合接口,但是LinkedHashSet是没有重写readObject方法的,所以LinkedHashSe…
作用域链 "JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里." --权威指南 在JavaScript中,一切皆对象,包括函数.函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性.其中一个内部属性是[[Scope]],由ECMA-262标准第三版定义,该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问. 在一个函数被定义的时候, 会将它定义时刻的s…
一.什么是原型?原型是一个对象,其他对象可以通过它实现属性继承.简单的说就是任何一个对象都可以成为原型 prototype属性: 我们创建的每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象包含可以有特定类型的所有实例共享的属性和方法.这个对象就是原型对象(也就是某个对象的原型所引用的对象).1.总之只要创建了函数,该函数都有一个prototype属性,指向函数的原型对象. 如上图,Person是一个函数,右侧的方框就是它的原型. 2.默认情况下所有原型对象都会…
在Iris框架中,封装了mvc包作为对mvc架构的支持,方便开发者遵循mvc的开发原则进行开发. iris框架支持请求数据.模型.持久数据分层处理,并支持各层级模块代码绑定执行. MVC即:model.view.controller三个部分,分别代表数据层.视图层.控制层.控制器层负责完成页面逻辑.实体层负责完成数据准备与数据操作.视图层负责展现UI效果. 在iris框架中,用一张图表示前端请求.服务端处理请求.服务端返回数据到前端的请求过程图,描述如下: mvc.Application iri…
serialize:序列化 unserialize: 反序列化 简单解释: serialize 把一个对象转成字符串形式, 可以用于保存 unserialize 把serialize序列化后的字符串变成一个对象 我们来看一个实例: <?php class F{ public $filename='a.txt'; } $a = new F(); echo $a->filename.'<br />'; echo serialize($a); 上面例子是创建一个类, 并输出 filena…
简单回顾一下构造函数.原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针.那么,假如我们让原型对象等于另一个类型的实例,结果会怎么样呢?显然,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针.假如另一个原型又是另一个类型的实例,那么上述关系依然成立,如此层层递进,就构成了实例与原型的链条.这就是所谓原型链的基本概念. 这样就通过利用原型链让一个引用类型继承另一个引用类型…
一:安装geth客户端 Windows要求必须是64位系统,从官方网站下载编译好的win64客户端,下载解压后只有一个Geth.exe问价,运行安装即可,下载地址如下: https://github.com/ethereum/go-ethereum/releases/ 安装后用cmd命令打开命令行,进入到你安装geth的目录下,输入geth –help 命令,如果输出一大堆关于geth的信息如下图则说明安装成功.当前geth命令只能在geth对应的目录下使用,如果想要在任何目录使用geth命令,…
零.补充: 补充于2018-02-08,之前研究时候有一个疑惑,python的序列化成二进制,打web服务怎么传这个二进制对象呢,今天请教了身边大神(传说的九零后黑客代表),可以使用base64传输. 测试代码: #client.py import os import sys import base64 import socket import cPickle #定义payload类型 class payload(object): def __init__(self,command): self…