litCTF
easy_file
admin/password后台是文件上传经过尝试发现是白名单,那么就只好找文件包含或者解析漏洞了。在index的源码发现file查看文件在admin.php使用file参数可以文件包含,文件内容也有过滤直接短标签即可
nest_jsadmin/password
啊{%print(url_for.__globals__.__builtins__['__import__']('os').popen('tac /flag').read())%}
123{"settings":{"theme":"asd","language":"asd","isAdmin":true}}
123{"settings":{"theme":"asd","language":& ...
fastjson&&snakeyaml不出网利用
FastJsonBCEL首先就是要介绍一下BCEL链
apache-BCEL
在类加载时我们可以将,类转为字节码然后实验classloader来加载字节码,像是我们的CC3中的defineCLass。而这个我们要学的这个链,其就是利用加载字节码的方法来命令执行。但又有点不同,因为CC3是直接加载字节码,而我们这个链是利用了forName来加载
链子分析其payload如下1234567{"@type": "org.apache.tomcat.dbcp.dbcp2.BasicDataSource","driverClassLoader": {"@type": "com.sun.org.apache.bcel.internal.util.ClassLoader"},"driverClassName": "$$BCEL$$$l$8b......"}我们直接看可以发现其实这个很短,就涉及到了两个类org.apache ...
春秋ThermalPower
shiro+heapdump首先先拿fscan扫一下ip
可以发现存在heapdump的泄露
这个页面长的就很想shiro,扫一下指纹
果然是shiro解密一下heapdump,可以得到shiro-key,这样就可以打shiro反序列化了直接上线vshell拿到flag1
工程师个人主机然后再用fscan扫一下c段可以扫到一下ftp。还有一个web,先看一下web
目录结构和ftp一样应该是把ftp的目录也给放到web了再内部资料里发现了admin的账号密码还有内部通知和exel表格看通知我们可以知道账号密码是由姓名+@+工号组成的,二表格是工程师的姓名加工号使用第一个chenhua@0813即可登陆成功
我们可以发现其是再Backup Operators组内的,但是其并没有这给组内的特权,我用网上的提权方法都无法成功,应该是环境的问题,我这里就记录一下这个提权方法
https://github.com/k4sth4/SeBackupPrivilege再GitHub上下载两个dll,进行如下操作就可以备份admin的目录了,而且可以使用dir来 ...
palu
ezblog首先看源码可以看到
只要访问blcakdoor输入指定key就可以得到flag
但是看不了有什么绕过逻辑,所以我看了眼app这个main类发现指定了某个静态文件夹。这时候我想到会不会有静态目录穿越,所以就试了一下..%2Fapp.jar发现成功读取了读取到app.jar也就知道了key,这题就结束了。
漏洞分析出于好奇我就看了一些依赖发现这个是solon框架的,而且版本还不低,所以我在网上查了一下,发现在今年有个 CVE-2025-1584,但是没有分析文章,所以就只好看一下代码改了啥自己分析了我们可以看到其主要更改了solon-projects/solon-web/solon-web-staticfiles/src/main/java/org/noear/solon/web/staticfiles/StaticMappings.java的路径判断检测了../来防止目录穿越。3.08是没有检测的,当路径有../时也可以进入
工具分析ysoSerial
感觉最近学啥都没什么劲,应该是iscc后遗症。
java开发
JDBCJDBC全称Java DataBase Connectivity。
JDBC再进行sql查询的步骤如下123451.注册驱动(如mysql的驱动)2.进行数据库连接,获取连接对象3.获取sql语句执行对象4.执行sql语句5.释放资源(直接close即可)
注册驱动(如mysql的驱动)注册驱动有两种方法123DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());Class.forName("com.mysql.cj.jdbc.Driver")一种是直接使用驱动管理器DriverManager的registerDriver的方法来注册驱动,而另一种是直接使用forName来加载com.mysql.cj.jdbc.Driverr这个类。
可以发现其类的static块调用了DriverManager.registerDriver(new Driver());所以这两个从本质上其实没区别。
DriverManagerDriverManager 是 Java JDBC(Java Database C ...
SnakeYaml
SnakeYamlSnakeYAML 是一个用于 Java 平台的 YAML 处理库,能够解析和生成符合 YAML 1.1 规范的数据格式。它广泛应用于 Java 生态系统中,尤其是在需要处理配置文件(如 Spring Boot 的 application.yml)或数据序列化的场景中。
SnakeYAML出现安全问题的原因和fastjson很像,都是英文其可以序列化和反序列化对象,再反序列化时会触发类的构造方法和set方法。
示例123456789101112131415161718192021222324252627282930313233343536373839404142434445464748package sankeYaml;public class User { private String name; private int age; public User() { System.out.println("无参构造"); } public int getAge() ...
FCTF
写点有意思的题目吧ez_time这题的重点代码如下1234567891011121314151617181920212223$flag = file_get_contents("/flag");// 这是一个可爱的加密函数~function encrypt($string){ $string = substr($string,0,time()%20); return sha1($string);}// 这是一个可爱的校验函数~function compare($encryptedString, $string){ if (encrypt($string) === $encryptedString){ return true;// 你过关! } return false;// 再接再厉~}$guessMyFlag = $_POST['guessMyFlag'];if (compare(encrypt($guessMyFlag),$flag)) ...
JDK7u21
AnnotationInvocationHandler我们都知道在java反序列化中最重要的是找到应该类方法的动态调用,如cc中的各种transforme,TemplatesImpl的字节码加载而JDK7u21的命令执行点就是在AnnotationInvocationHandler。AnnotationInvocationHandler是一个代理类,而其有一个equalsImpl方法其存在一个反射调用。我们可以发现其memberMethod是遍历了getMemberMethods()。而getMemberMethods的返回值其实是type.getDeclaredMethods();而type我们可控,那么我们只要传入TemplatesImpl的接口Templates就可以调用到newTransformer了不可以直接传入type为TemplatesImpl.class这是因为在遍历方法时第一个遍历的是writeObject,直接抛异常退出了
但是其是一个私有类所以我们要找一下哪里调用了而在其重写的invoke只要当member.equals(“equals”)时就可以调用到equal ...
ACTF
下午打取证晚上打ACTF就牢了一题就牢不动了,其他题看来一下有两题是有思路的但是队友打了我也就没打了upload随便输都可以登陆成功,然后上传文件后发现了文件读取./upload?file_path可以目录穿越12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182import uuidimport osimport hashlibimport base64from flask import Flask, request, redirect, url_for, flash, sessionapp = Flask(__name__)app.secret_key = os.getenv('SECRET_KEY')@app.route('/')def index(): if session.get ...














