首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CVE-2020-14825:Weblogic反序列化漏洞复现

作者:DEADF1SH_CAT@Timeline Sec 本文字数:1891 阅读时长:6~7min 声明:请勿用作违法用途,否则后果自负 0x01 简介 Weblogic是美国Oracle公司出品的一个...选择 12.2.1.4 的 Generic 版本进行下载安装即可,安装过程注意JDK版本造成的安装失败(建议JDK 1.8)以及以管理员权限运行安装包。...0x06 漏洞分析 这个漏洞实质跟 CVE-2020-14645 并无太大差别,前半段的利用链入口是一致的,只不过最后造成代码执行的类不一样。.../docs.oracle.com/middleware/1213/wls/WLACH/taskhelp/channels/EnableAndConfigureIIOP.html 0x08 总结 实质,...不断在跟黑名单博弈,利用链前半段依旧不变,一直找可以替代的Extractor。平时的一些挖洞,类比思路是一个很好的技巧,比起全盘代码审计,显得更加高效。

3.1K30

一文解密所有WebLogic密文

密文,于是查阅大量资料后整理了7种解密weblogic的方法。...WebLogic Server 12cR2(12.2.1.4)-2019年9月27日 WebLogic Server 12cR2(12.2.1.3)-2017年8月30日 WebLogic Server...适用场景:本地和服务器都可以执行,但本地的话要求比较多,该方法我是直接在服务器测试运行。...解密方法3:执行java代码1 本地或服务器都可执行,本地的话需要weblogic环境,且版本要和目标系统版本一致。服务器执行时要求能通过webshell能执行java命令。...但是有些情况下这些环境变量没有加进去(可以通过echo $CLASSPATH 查看是否为),$CLASSPATH为时则需要手工执行一下(linux下,windows一般不会出现这个情况) 手工执行setWLSEnv.sh

2.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

《大型网站技术架构》学习笔记-03案例篇

最后一篇案例篇,"愿站在巨人的肩膀",加油熊二同学。...其和核心是反向代理服务器Squid集群,请求通过LVS分发到每台Squid服务器,热点词条被缓存于此处,同时将关键词条发在CDN服务器,其准则是内容页面不包含动态信息,具有唯一REST风格url,便于...CDN快速查询并避免重复缓存,HTML响应头中写入缓存控制信息。...使用MySQL时,使用较大的服务器内存,使用RAID0加速磁盘访问,将事务一致性设置较低水平,如果Master宕机,直接切换到Slave并关闭写服务,进行服务降级。...不好的变成习惯引发的故障:加强code review,控制好代码质量,比如java的指针异常的判断。 参考资料 李智慧. 大型网站技术架构[M]. 北京:电子工业出版社, 2013.

858100

C# 可类型

可能引发指针异常: 虽然可类型减少了引用异常的发生概率,但如果开发人员不正确地处理可类型,仍然可能引发指针异常,因此需要开发人员小心处理可类型的使用。..."Default Name"; bang运算符 bang运算符其实就是个感叹号,if的布尔表达式里是用来取反的但是类型中它的作用有了些变化,它允许变量被赋予一个可以为的值。...但是,如果你确定一个可类型的变量某一点肯定不会为,你可以使用 !.运算符 来断言它的非空性。...Lambda表达式和委托中使用: Action action = (x) => { int nonNullable = x!...; // Do something with nonNullable }; Lambda表达式或委托中,可以使用!.运算符来断言参数为非。 C#可类型会有性能问题吗?

25650

从Java 9 到 Java 17之Java 13

Switch表达式 我觉得switch表达式日常中开发被使用的太少了,不是因为这个关键字和if比起来太“难”,而是因为它很冗长,而且这种视觉的噪声容易掩盖那些难以调试的错误,特别是那些break语句...WEDNESDAY -> { System.out.println("day = " + day); // 错误的写法,会引发编译错误...// yield 才是正确的 yield 9; }; default -> 11; }; 更合理的指针提示...指针异常是Java最常见的异常之一,Java 14之前的指针异常堆栈信息中只是提示给定行的发生了NullPointerException,不够直观清晰: Exception in thread...int array because "arr" is null at cn.felord.SomeClass.main(SomeClass.java:17) 我们可以明确地知道arr为null导致了指针

30030

第96篇:蓝队分析研判工具箱1.08版本(溯源辅助|解密攻击流量|冰蝎、哥斯拉、天蝎解密|资产测绘搜索)

2 修复“网资产测绘”功能的多处json文本处理不当引发的bug,新增指定域名搜索功能。 3 新增对16进制Hex编码的内存马反编译功能。...域名、ip综合研判(网资产测绘) 此功能还在继续更新,输入xxx.com或者ip地址或者ip段进行搜索,点击“一键查询所有”按钮,程序会自动调用Hunter、佛法、VirusTotal、Censys、...当然,此功能对于红队人员也特别方便,方便大家编写tomcat、springboot、weblogic内存马时进行class文件反编译对比分析。...比如说最简单的URL编码、16进制的Hex编码、Base64编码,很多工具就没有考虑到中文字符的GB2312、UTF-8编码问题,导致解密结果不正确或者是乱码。...后续会加入weblogic日志分析功能,其它web日志分析功能。

23410

【笔记】《C++Primer》—— 第2章

所有对引用的操作与对原对象的操作效果是都是相同的,它们会同时被改变,将引用作为原来变量的另一种表示就可以了 引用由于只能绑定在对象,理解为只能绑定在有名称的对象,所以不能与表达式或者字面值之类的匿名对象绑定...,需要一个解引用符* 要时刻注意所使用的指针是不是指针或无效指针(野指针) C11引入了专门的指针关键字nullptr来替代C风格的预处理量NULL。...其中nullptr是指针void*类型,NULL是整形int=0,虽然NULL也会被视作指针但是有时候会出现区别,例如想要给函数传入指针时,若函数的形参是void*,则无法传入NULL值的指针。...define由于是预处理阶段进行简单的文字替换的预处理操作,所以使用相同define的变量也会申请自己的内存,define还由于是文字替换所以没有类型检查。...之别,但是实际仔细从右到左分析const的修饰就可以理解 我们有时候需要用const指向还没被计算出来的常量表达式,但是巨大的系统中有些表达式我们很难判定是不是常量表达式,C11引入了constexpr

51420

3.Python对象

整型) 0.0(浮点型) 0.0+0.0j(复数) '' (空字符串) [] (列表) () (元组) {} (字典) 值不是上面列出来的任何值的对象的而不知都是True , 例如non-empty...前面提到过Python支持一个表达式进行多种比较操作 ,其实这个表达式本质是由多个隐式的and 链接起来的多个表达式....核心笔记 : Python学习过程中, 偶尔会遇到某个运算符和某个函数是做同样一件事情 ,之所以如此是因为某些场合函数会比运算符更适合使用. 函数比表达式用起来方便 ....: Python替你管理内存,因此没有必要访问指针....你可以用id()得到一个对象的身份号, 这是最接近指针的地址.因为你不能控制这个值,所以其实没有太大意义.Python中,一切都是指针 .

66710

C++中指针和引用的区别

注意:引用作为函数参数时,会引发一定的问题,因为让引用作参数,目的就是想改变这个引用所指向地址的内容,而函数调用时传入的是实参,看不出函数的参数是正常变量,还是引用,因此可能引发错误。...从概念讲。指针从本质讲就是存放变量地址的一个变量,逻辑是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。...C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质的不同的: 指针传递参数本质是 值传递的方式,它所传递的是一个地址值。...指针变量符号表对应的地址值为指针变量的地址值,而引用在符号表对应的地址值为 引用对象的地址值。...对于不可寻址的值,如文字常量,以及不同类型的对象,编译器为了实现引用,必须生成一个临时对象,引用实际指向该对象,但用户不能访问它。

4.9K82

记录

复制 [ a = [ b = 2 ] ] 评估记录表达式时,以下内容成立: 分配给每个字段名称的表达式用于确定关联字段的值。...如果分配给字段名称的表达式计算时产生一个值,则该值将成为结果记录的字段的值。 如果分配给字段名称的表达式评估时引发错误,则引发错误的事实与该字段以及引发的错误值一起记录。...对该字段的后续访问将导致使用记录的错误值重新引发错误。 该表达式类似于父环境的环境中进行评估,仅合并了与记录的每个字段的值相对应的变量,除了被初始化的字段。...访问相应字段之前,不会评估记录中的值。 记录中的值最多被评估一次。 表达式的结果是一个带有空元数据记录的记录值。...表没有文字语法。提供了几个标准库函数来构造二进制值。

48710

Kotlin如何优雅地判断EditText数据是否为详解

快速上手 如果不知道如何在Kotlin中写一个相当简单的Java表达式。...它更加安全:Kotlin是安全的,也就是说我们编译时期就处理了各种null的情况,避免了执行时异常。你可以节约很多调试指针异常的时间,解决掉null引发的bug。...但是就如其他很多现代的语言那样,它使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。其中一个很棒的特性就是Collections的处理方式。我稍后会进行介绍。...它是高度互操作性的:你可以继续使用所有用Java写的代码和库,甚至可以一个项目中使用Kotlin和Java两种语言混合编程。一行Java一行Kotlin,别提有多风骚了。...好了,话不多说了,来一看看本文的正文吧 很多时候我们要判断EditText输入的数据是否为Java中需要以下代码: String mobile = etMobile.getText().toString

1.5K41

PQ语言规范

甲原始值是单部分的值,如数字,逻辑,文本或值可用于指示不存在任何数据。...记录值的文字语法允许不带引号的情况下写入名称,这种形式也称为identifiers。下面显示了包含三个字段的纪录名为“ A”,“ B”和“ C”,其中有值1,2和3。...没有用于创建表的文字语法,但有几个标准函数可用于从列表或记录创建表。...选定的表达式本例中2 + 2)被评估并成为if表达式 ( 4)的结果。 错误 的错误是计算表达式的过程中不能产生的值的指示。 错误由遇到错误条件的运算符和函数或通过使用错误表达式引发。...例如,考虑以下引发错误然后立即处理的表达式: 复制 try error "negative unit count" 该表达式评估为以下嵌套记录值,解释[HasError],[Error]以及[Message

91710

Python3.6.5标准库文档(完整中文版)—内置函数(六)

注意,如果函数不是且函数是 ,则等价于生成器表达式。...更确切地说,删除前后空白字符后,输入必须符合以下语法: ? 这floatnumber是浮点文字中描述的Python浮点文字的形式。...否则,如果参数是整数或浮点数,则返回具有相同值(Python的浮点精度内)的浮点数。如果参数超出了Python浮点的范围,OverflowError则会引发。...版本3.6中更改:允许使用下划线对代码进行分组,如代码文字。 format(value [,format_spec ] ) 将值转换为“格式化”表示,由format_spec控制 。...调用将被转换为 搜索该值的方法时绕过实例字典。一 ,如果该方法搜索到达引发异常 和format_spec非,或者这两个 format_spec或返回值是不是字符串。

58220

CC++数组与指针详解

32位平台,任何指针类型所占用的空间都是都是4字节。比如sizeof(int*)、sizeof(double*)、sizeof(float*)等的值都为4。...指针变量值的合法化途径通常有两个, 一是显示置,二是让指针指向一个已经存在的变量,三是为指针动态申请内存空间。...(2)取地址运算,即获取指针变量的地址,表达式为&p,其数据类型为int**; (3)指针与整数相加减。表达式p+i(或者p-i),实际是让指针递增或递减地移动i个int型变量的距离。...所以,很多情况下,数组与指针的用法是相同的,但是数组与指针本质存在一些重要的区别。 (1)数组空间是静态分配的,编译时决定大小。而指针定义时,可以没有合法访问的地址空间,也就是野指针。...将多为数组转换为指针的时候,一定要注意多为数组的分解方式,以便进行正确的类型转换。 (6)字符数组与字符指针的区别。 字符数组字符指针形式很接近,但在内存空间的分配和使用上还是有重大的差别。

74720

【数据结构】线性表----栈详解

表达式求值: 中缀表达式转换为后缀表达式,以及后缀表达式求值。 撤销操作: 许多软件中的撤销(Undo)功能基于栈实现。 栈的注意事项 溢出问题: 某些编程语言或环境中,栈的大小是有限的。...访问限制: 栈只允许对栈顶进行操作,这意味着栈中间的元素无法直接访问或修改。 异常处理: 在出栈或查看栈顶元素时,需要处理栈为的情况,否则会引发错误。...另一种栈 实际,以上都是栈计算机科学以及数据结构中的解释,而在另一个计算机领域——计算机系统中,栈实际是另一种事物。接下来对其进行简单的介绍。...栈指针(Stack Pointer, SP): 栈指针是一个寄存器,用于指向当前栈的顶端。每次入栈和出栈操作都会更新栈指针。...局部变量存储: 函数的局部变量通常存储栈帧中,便于管理和清理。 递归支持: 栈结构天然支持递归调用,每次递归调用都会在栈创建新的栈帧。

8510

三元运算符引发的自动拆装箱问题 - Java技术债务

问题背景 生产环境出现指针异常,追踪报错位置得知以下代码报错 if (isNull(aiGroup)) { return null; } aiGroup.setNum(isNull...aiGroup.getNum() : param.getNum().doubleValue()); 问题排查 乍一看,真没有什么问题(当然可能是我经验不足),细看会发现自动装箱导致指针异常,上边set...在这里我直接说出来,以上代码获取num时,如果isNull()方法为true时,会从aiGroup获取num,但是aiGroup.getNum()的结果是null,理论是你直接给一个包装类型属性设置null...但是三元运算的时候,如果发现结果类型和表达式中的类型不一致,他会在最外层进行自动装箱,会执行Double.valueOf()的操作,所以会出现指针的现象:Double.valueOf(null)。...Double.valueOf(null)方法了; 问题扩展 根据以上的自动装箱问题,你可以自己试着写个Main方法,试试自动拆箱问题, 比如 总结 最根本的问题就是自动拆装箱导致的问题,而三元运算只是问题的引发

6010
领券