作者: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。在平时的一些挖洞上,类比思路是一个很好的技巧,比起全盘代码审计,显得更加高效。
密文,于是在查阅大量资料后整理了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
最后一篇案例篇,"愿站在巨人的肩膀上",加油熊二同学。...其和核心是反向代理服务器Squid集群,请求通过LVS分发到每台Squid服务器,热点词条被缓存于此处,同时将关键词条发在CDN服务器上,其准则是内容页面不包含动态信息,具有唯一REST风格url,便于...CDN快速查询并避免重复缓存,在HTML响应头中写入缓存控制信息。...在使用MySQL时,使用较大的服务器内存,使用RAID0加速磁盘访问,将事务一致性设置在较低水平,如果Master宕机,直接切换到Slave并关闭写服务,进行服务降级。...不好的变成习惯引发的故障:加强code review,控制好代码质量,比如java的空指针异常的判断。 参考资料 李智慧. 大型网站技术架构[M]. 北京:电子工业出版社, 2013.
可能引发空指针异常: 虽然可空类型减少了空引用异常的发生概率,但如果开发人员不正确地处理可空类型,仍然可能引发空指针异常,因此需要开发人员小心处理可空类型的使用。..."Default Name"; bang运算符 bang运算符其实就是个感叹号,在if的布尔表达式里是用来取反的但是在可空类型中它的作用有了些变化,它允许变量被赋予一个可以为空的值。...但是,如果你确定一个可空类型的变量在某一点上肯定不会为空,你可以使用 !.运算符 来断言它的非空性。...在Lambda表达式和委托中使用: Action action = (x) => { int nonNullable = x!...; // Do something with nonNullable }; 在Lambda表达式或委托中,可以使用!.运算符来断言参数为非空。 C#可空类型会有性能问题吗?
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导致了空指针
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日志分析功能。
所有对引用的操作与对原对象的操作效果是都是相同的,它们会同时被改变,将引用作为原来变量的另一种表示就可以了 引用由于只能绑定在对象上,理解为只能绑定在有名称的对象上,所以不能与表达式或者字面值之类的匿名对象绑定...,需要一个解引用符* 要时刻注意所使用的指针是不是空指针或无效指针(野指针) C11引入了专门的空指针关键字nullptr来替代C风格的预处理量NULL。...其中nullptr是指针void*类型,NULL是整形int=0,虽然NULL也会被视作空指针但是有时候会出现区别,例如想要给函数传入空指针时,若函数的形参是void*,则无法传入NULL值的指针。...define由于是在预处理阶段进行简单的文字替换的预处理操作,所以使用相同define的变量也会申请自己的内存,define还由于是文字替换所以没有类型检查。...之别,但是实际上仔细从右到左分析const的修饰就可以理解 我们有时候需要用const指向还没被计算出来的常量表达式,但是在巨大的系统中有些表达式我们很难判定是不是常量表达式,C11引入了constexpr
整型) 0.0(浮点型) 0.0+0.0j(复数) '' (空字符串) [] (空列表) () (空元组) {} (空字典) 值不是上面列出来的任何值的对象的而不知都是True , 例如non-empty...前面提到过Python支持一个表达式进行多种比较操作 ,其实这个表达式本质上是由多个隐式的and 链接起来的多个表达式....核心笔记 : 在Python学习过程中, 偶尔会遇到某个运算符和某个函数是做同样一件事情 ,之所以如此是因为某些场合函数会比运算符更适合使用. 函数比表达式用起来方便 ....: Python替你管理内存,因此没有必要访问指针....你可以用id()得到一个对象的身份号, 这是最接近指针的地址.因为你不能控制这个值,所以其实没有太大意义.在Python中,一切都是指针 .
+0023) 后跟(( U+0028) 双引号转义序列: "" ( U+0022, U+0022)之外的任何字符 以下是文本值的示例: 复制 "ABC" // the text value ABC 在文本值上定义了以下运算符...没有文字格式。提供了几个标准库函数来构造二进制值。...可以使用初始化语法构造列表,如下所示: 列表表达式: {项目列表选择 } 项列表: 项 项 , 项目列表 项: 表达式 表达 .....,可能会引发错误或不会终止。...如果列表不包含任何项目,则称为空列表。
注意:引用作为函数参数时,会引发一定的问题,因为让引用作参数,目的就是想改变这个引用所指向地址的内容,而函数调用时传入的是实参,看不出函数的参数是正常变量,还是引用,因此可能引发错误。...从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。...在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的: 指针传递参数本质上是 值传递的方式,它所传递的是一个地址值。...指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为 引用对象的地址值。...对于不可寻址的值,如文字常量,以及不同类型的对象,编译器为了实现引用,必须生成一个临时对象,引用实际上指向该对象,但用户不能访问它。
复制 [ a = [ b = 2 ] ] 在评估记录表达式时,以下内容成立: 分配给每个字段名称的表达式用于确定关联字段的值。...如果分配给字段名称的表达式在计算时产生一个值,则该值将成为结果记录的字段的值。 如果分配给字段名称的表达式在评估时引发错误,则引发错误的事实与该字段以及引发的错误值一起记录。...对该字段的后续访问将导致使用记录的错误值重新引发错误。 该表达式在类似于父环境的环境中进行评估,仅合并了与记录的每个字段的值相对应的变量,除了被初始化的字段。...在访问相应字段之前,不会评估记录中的值。 记录中的值最多被评估一次。 表达式的结果是一个带有空元数据记录的记录值。...表没有文字语法。提供了几个标准库函数来构造二进制值。
快速上手 如果不知道如何在Kotlin中写一个相当简单的Java表达式。...它更加安全:Kotlin是空安全的,也就是说在我们编译时期就处理了各种null的情况,避免了执行时异常。你可以节约很多调试空指针异常的时间,解决掉null引发的bug。...但是就如其他很多现代的语言那样,它使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。其中一个很棒的特性就是Collections的处理方式。我稍后会进行介绍。...它是高度互操作性的:你可以继续使用所有用Java写的代码和库,甚至可以在一个项目中使用Kotlin和Java两种语言混合编程。一行Java一行Kotlin,别提有多风骚了。...好了,话不多说了,来一看看本文的正文吧 很多时候我们要判断EditText输入的数据是否为空,在Java中需要以下代码: String mobile = etMobile.getText().toString
甲原始值是单部分的值,如数字,逻辑,文本或空。空值可用于指示不存在任何数据。...记录值的文字语法允许在不带引号的情况下写入名称,这种形式也称为identifiers。下面显示了包含三个字段的纪录名为“ A”,“ B”和“ C”,其中有值1,2和3。...没有用于创建表的文字语法,但有几个标准函数可用于从列表或记录创建表。...选定的表达式(在本例中2 + 2)被评估并成为if表达式 ( 4)的结果。 错误 的错误是计算表达式的过程中不能产生的值的指示。 错误由遇到错误条件的运算符和函数或通过使用错误表达式引发。...例如,考虑以下引发错误然后立即处理的表达式: 复制 try error "negative unit count" 该表达式评估为以下嵌套记录值,解释[HasError],[Error]以及[Message
Optional在Java 8中引入,目的是解决 NullPointerExceptions的问题。本质上,Optional是一个包装器类,其中包含对其他对象的引用。...在这种情况下,对象只是指向内存位置的指针,并且也可以指向任何内容。从其它角度看,Optional提供一种类型级解决方案来表示可选值而不是空引用。...如果我们要确保不会出现空指针异常,则需要对每个引用进行显式的空检查。...(name);```静态方法需要一个非null参数;否则,将引发空指针异常。...它会出现空指针异常吗?答案是:是的。当用户只提供了中文名时,此时englishName属性是null,但是在orElse中,englishName.getShortName()总是会执行。
注意,如果函数不是且函数是 ,则等价于生成器表达式。...更确切地说,在删除前后空白字符后,输入必须符合以下语法: ? 这floatnumber是浮点文字中描述的Python浮点文字的形式。...否则,如果参数是整数或浮点数,则返回具有相同值(在Python的浮点精度内)的浮点数。如果参数超出了Python浮点的范围,OverflowError则会引发。...在版本3.6中更改:允许使用下划线对代码进行分组,如代码文字。 format(value [,format_spec ] ) 将值转换为“格式化”表示,由format_spec控制 。...调用将被转换为 在搜索该值的方法时绕过实例字典。一 ,如果该方法搜索到达引发异常 和format_spec非空,或者这两个 format_spec或返回值是不是字符串。
在32位平台上,任何指针类型所占用的空间都是都是4字节。比如sizeof(int*)、sizeof(double*)、sizeof(float*)等的值都为4。...指针变量值的合法化途径通常有两个, 一是显示置空,二是让指针指向一个已经存在的变量,三是为指针动态申请内存空间。...(2)取地址运算,即获取指针变量的地址,表达式为&p,其数据类型为int**; (3)指针与整数相加减。表达式p+i(或者p-i),实际上是让指针递增或递减地移动i个int型变量的距离。...所以,在很多情况下,数组与指针的用法是相同的,但是数组与指针本质上存在一些重要的区别。 (1)数组空间是静态分配的,编译时决定大小。而指针在定义时,可以没有合法访问的地址空间,也就是野指针。...在将多为数组转换为指针的时候,一定要注意多为数组的分解方式,以便进行正确的类型转换。 (6)字符数组与字符指针的区别。 字符数组字符指针在形式上很接近,但在内存空间的分配和使用上还是有重大的差别。
表达式求值: 中缀表达式转换为后缀表达式,以及后缀表达式求值。 撤销操作: 许多软件中的撤销(Undo)功能基于栈实现。 栈的注意事项 溢出问题: 在某些编程语言或环境中,栈的大小是有限的。...访问限制: 栈只允许对栈顶进行操作,这意味着在栈中间的元素无法直接访问或修改。 异常处理: 在出栈或查看栈顶元素时,需要处理栈为空的情况,否则会引发错误。...另一种栈 实际上,以上都是栈在计算机科学以及数据结构中的解释,而在另一个计算机领域——计算机系统中,栈实际上是另一种事物。接下来对其进行简单的介绍。...栈指针(Stack Pointer, SP): 栈指针是一个寄存器,用于指向当前栈的顶端。每次入栈和出栈操作都会更新栈指针。...局部变量存储: 函数的局部变量通常存储在栈帧中,便于管理和清理。 递归支持: 栈结构天然支持递归调用,每次递归调用都会在栈上创建新的栈帧。
例如: 复制 #duration(2,0,0,0) / 32 // #duration(0,1,30,0) 结构组合 组合运算符 ( x & y) 定义在以下类型的值上: X 是 结果 解释 type...type number 一元加 type duration type duration 一元加 null `空 对于其他值,"Expression.Error"会引发带有原因代码的错误。...类型兼容性运算符 类型兼容性运算符x is y 是为以下类型的值定义的: X 是 结果 type any 可空原始类型 type logical 表达式x is y返回true如果的冲高类型x可兼容...如果x为非空,则如果 的原始类型x与 相同,则它是兼容的y。 评估表达式时,以下内容成立x is y: x传播评估表达式时引发的错误。...,以下内容成立x as y: x传播评估表达式时引发的错误。
在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。...由于 null 代表的是空指针(大多数平台下值为0x00),因此,null的类型标签也成为了0,typeof null就错误的返回了"object". 2. obj instanceof constructor...的原型链上,这时原表达式的值就会成为false。...另外一种情况下,原表达式的值也会改变,就是改变对象obj的原型链的情况,虽然在目前的ES规范中,我们只能读取对象的原型而不能改变它,但借助于非标准的__proto__魔法属性,是可以实现的。...这可能会引发一些问题。比如,表达式 [] instanceof window.frames[0].Array 会返回false,因为 Array.prototype !
问题背景 生产环境上出现空指针异常,追踪报错位置得知以下代码报错 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方法,试试自动拆箱问题, 比如 总结 最根本的问题就是自动拆装箱导致的问题,而三元运算只是问题的引发
领取专属 10元无门槛券
手把手带您无忧上云