2022年的个人计划&小目标
2022个人计划&目标🤞现在已经是上一年了,去年的目标貌似是在去年定的,哈哈哈,不知不觉已经入行一年多了,还是个脚本小子。
2021过去了 在这制定一下2022的小目标 以及对2021进行一个总结吧
大概看一下去年的小目标,基本都完成的差不多了,除了冲知名SRC的排行榜(准备移到今年),因为确实难,到现在也没挖到过一个专属SRC的洞,只能希望说在2022年继续努力吧,内网渗透在2021年确实是有所接触,但是只是了解了一点点,今年依旧继续努力,为了今年的国hvv做准备吧,CNVD通用证书目前以及下来两张了,估计后面还会有,这块应该算是超额完成任务,找女朋友确实是不可能了,上学期确实也没挂科, 协会的话大一的不知道学的怎么样,确实是摸不清楚底,只能说在2022年多带带SRC和CTF吧,主要还是得看自己的自学能力了。2021年证书和获奖不多,一张ISCC三等奖,浙江省赛二等奖,还有十几张CNVD,其他没什么荣誉,摸鱼参加了几次市级和省级的hvv,输出也不咋多,还是太菜了,脱离了弱口令就日不了站哈哈。属实是弱口令战士了。总结完了2021的成果,暂时来制定一下2022的目标吧,制 ...
commons-collections6反序列化链分析
commons-collections6反序列化链分析整体分析cc6这条链我们先来ysoserial看看他的源码,源码如下
我们可以看到,他也是使用了LazyMap,但是不同的是,他是通过其他方式调用到了LazyMap的get方法,我们可以深入来看看,这里由于前面学过cc1的LazyMap的那条链了,关注LazyMap前面的部分就不再赘述,如果有师傅不懂的可以看看前面的文章
细节分析咱就从 LazyMap的get方法开始吧,因为前面的和之前的链子是一样的。先找到谁调用了get方法,这里直接锁定TiedMapEntry的getValue方法,他这里返回了map.get(key),并且构造函数是publice,可以直接new TiedMapEntry这里的map对应的应该是之前的lazymap
接下来是寻找调用getValue的位置,找到同个类下的hashCode方法
这里调用了getValue()方法,我们得继续往上找,最好能直接找到在readObject方法中调用getValue(),ysoserial中给的是HashMap,那我们就在HashMap中找找
在HaspMap的ha ...
commons-collections3反序列化链分析
commons-collections3反序列化链分析前言这是我的第二篇CC链分析的文章,希望师傅们能喜欢,如果我有说错的或者不足的地方,希望师傅们多多指点
类加载器CC3这条链的话得引入类加载器的相关内容,这里也就稍微说一下吧,因为我也是先自己分析一两遍,再写一下文章当作笔记来加深一下印象。
类加载器是Java Runtime Environment 的一部分,负责动态加载Java类到Java虚拟机的内存空间中,用于加载系统,网络或者其他来源的类文件
如上图,把Test.java编译成Test.class文件,但是如果Test.class文件要再java虚拟机内存中运行需要经过一系列的类操作(加载 验证 准备 解析,初始化)
加载器一共有4种加载器,分别是引导类加载器BootstrapClassLoader,扩展类加载器ExtensionsClassLoader,App类加载器/系统类加载器AppClassLoader和自定义类加载器UserDefineClassLoader
需要使用类的时候,会将生成的class文件加载到内存当中生成class对象进行使用
这里加载过程是使用的双 ...
commons-collections1反序列化链分析
commons-collections1反序列化链分析前言最近入了P牛的知识星球,打算搞Java安全这一块了,所以有了这一篇CC链的分析结果,从0到1学习java安全,在学习的路上碰到了不少坑,这里一起记录一下这几天的学习成果,用到的环境是jdk1.7以及commons-collections3.1,这是我第一篇关于java安全的文章,我才疏学浅,希望师傅们多多指点
有关的类介绍ConstantTransformer
ConstantTransformer类实现了Transformer接口,其transform方法作用是获取一个对象类型
InvokerTransformer
InvokerTransformer类实现了Transformer和Serializable接口,重写了transform方法,他的transform方法是用反射调用指定的方法并且进行返回他的结果,这里我们可以来写个小demo
123456public class demo { public static void main(String[] args) { Transfor ...
从CTF题了解Servlet的线程安全问题
前言VNCTF2022_easyJ4va 源于前几天打的VNCTF,这题自己尝试做了一下午,感觉确实可以,就拿来复盘一下,比赛做一下午没做出来,这里直接拿他读出来的源码进行复现吧,如果有想学习的师傅可以加我公告里的qq来拿源码试着做一下
正文涉及知识点个人感觉其中获取key的过程涉及到Servlet的线程安全问题,这里具体可以看一下Y4师傅的文章,给出文章地址 Servlet的线程安全问题,获取flag的过程涉及到java-Transient关键字的问题,这里给出文章地址 java-Transient关键字、Volatile关键字介绍和序列化、反序列化机制、单例类序列化
然后接下来具体看题吧
复现过程打开环境,提示我们/file?,可以想到这里应该是让我们在/file路径下get传入一个参数,访问/file提示输入url,大概就是让我们访问/file?url=xxxx,这里有经验的师傅就大概可以猜到存在类似于SSRF或者读文件漏洞,这里直接上了file协议,读取出他的源码。这就一步带过了,因为太简单了。
读出来源代码以后我们直接进行审计,这就是一个Servlet对象,具体来看一下 ...
PHP原生类在CTF当中的应用🛴
PHP原生类的应用前几天打了浙江省赛,拿了个省二,明年努努力冲个省一。发现浙江省赛出了两题POP链,这就是为啥博客持续在更新反序列化的内容的原因哈哈哈(因为我两题都没解出来),之前练了一下pop链的构造,现在来研究一下PHP原生类的利用
本篇文章总结于https://blog.csdn.net/qq_38154820/article/details/121112935
报错类Error在PHP7版本中,因为Error中带有__toString方法,该方法会将传入给__toString的参数原封不动的输出到浏览器。在这么一个过程中可能会产生XSS。
我们来随便弄一个DEMO试试
1234<?php$a=$_GET['a'];$b=$_GET['b'];echo new $a($b);
ERROR类中自动带有tostring魔术方法,我们如果这里把他当字符串输出,会自动触发tostring方法,如果这里是echo,即可造成XSS
Payload:
1http://127.0.0.1/?a=Error&b=<script> ...
PHP反序列化之POP链构造🛴
PHP反序列化之pop链POP链介绍POP 面向属性编程(Property-Oriented Programing) 常用于上层语言构造特定调用链的方法,与二进制利用中的面向返回编程(Return-Oriented Programing)的原理相似,都是从现有运行环境中寻找一系列的代码或者指令调用,然后根据需求构成一组连续的调用链,最终达到攻击者邪恶的目的
说的再具体一点就是 ROP 是通过栈溢出实现控制指令的执行流程,而我们的反序列化是通过控制对象的属性从而实现控制程序的执行流程,进而达成利用本身无害的代码进行有害操作的目的。
魔术方法介绍
反序列化的常见起点
__wakeup 一定会调用
__destruct 一定会调用
__toString 当一个对象被反序列化后又被当做字符串使用
反序列化的常见中间跳板
__toString 当一个对象被当做字符串使用
__get 读取不可访问或不存在属性时被调用
__set 当给不可访问或不存在属性赋值时被调用
__isset 对不可访问或不存在的属性调用isset()或empty()时被调用。形如 $this->$func();
...
BUU题目练习
2021.10.23打了浙江省省赛预赛,web全程坐牢
结果fmyyy师傅说都是基础题我绷不住了,决定继续刷题之路
[HCTF 2018]WarmUp拿到代码,先进行一波代码审计,这里我直接贴上我审计好的图
总体来说,大概是三次白名单检测,两次截取第一个问号前面的内容,并且还有个hint.php,提示flag在ffffllllaaaagggg中,只要在三次白名单检测里其中任何一次检测成功即可,其中page变量中途被截取以后变成了_page变量,并且最后_page变量经过了一次url解码,我们就想办法让他在三次白名单检测当中检测到我们的source.php或者hint.php,这里他既然有第三次,应该是安排在了第三次检测到,我们逆向推回去,第三次在第一个问号前面检测到了hint.php,原来就是file=hint.php?第三次检测之前就是第二次截取,第二次截取之前是一次url解码,但是我们geit请求提交以后网站自动会进行一次url解码,所以这里手动给问号加两次次url编码得到file=hint.php%253F这样看下来大概是没问题了,然后进行我们的目录穿越达到一个文件包含的目 ...
Struts2-013RCE漏洞复现(CVE-2013-1966)
Struts2-013RCE漏洞复现(CVE-2013-1966)影响版本1Apache Group Struts 2.0.0 - 2.3.14
漏洞描述12345CVE(CAN) ID: CVE-2013-1966Struts2 是第二代基于Model-View-Controller (MVC)模型的java企业级web应用框架。它是WebWork和Struts社区合并后的产物。Apache Struts2的s:a和s:url标签都提供了一个includeParams属性。此属性允许使用的值包括none、get、all。当该属性被设置为get或all时,Apache Struts2会将用户提交的参数值作为Ognl表达式执行。攻击者可以提交带有恶意的Ongl表达式,达到执行任意Java代码的目的。只要基于Apache Struts2开发的JSP代码中使用了url/a标签并且设置了includeParams属性为all或get,远程攻击者即可利用此漏执行任意命令。
复现地址:http://vulfocus.fofa.so/
漏洞复现
访问首页,点击”s:a”tag http:// ...
phpmyadmin 后台sql注入漏洞复现(CVE-2020-5504)
phpmyadmin 后台sql注入漏洞复现(CVE-2020-5504)影响版本123Phpmyadmin <= 5.00Phpmyadmin <= 4.94
漏洞复现复现地址:http://vulfocus.fofa.so/
拿到环境使用给出的账号密码进入后台,开启Burpsuite抓包,获取到一个token,保存下来
直接将请求的地址替换成poc即可。poc如下,记得需要替换token
1server_privileges.php?ajax_request=true&validate_username=1&username=1'and extractvalue(1,concat(0x7e,(select user()),0x7e))--+db=&token=3c7c5b2b7f3a7621394d6c733e35705f&viewing_mode=server