java_serialize
结构jar(Java Archive)文件,是一个打包了Java类文件、资源文件(如配置文件、图片)、元数据(如MANIFEST.MF)等的zip格式归档文件 BOOT-INF是Spring Boot打包后特有的目录结构,一般出现在可执行JAR中 Spring Boot的标准打包结构中: BOOT-INF/是核心,包含: classes/——编译后的.class文件(应用程序代码) lib/——所有依赖的第三方库(.jar文件) META-INF/包含MANIFEST.MF,指定了主类,以及一下Spring Boot特有属性 还可能有org/文件夹,——由于项目使用了某些框架或库,其类被直接打包在根目录下 。。。 反序列化主要的是ObjectInputStream 序列化和反序列化协议 XML&SOAP JSON(Javascript Object...
java_cc1
cc1准备 [!IMPORTANT] 用jdk8u65 要用到mvn的版本是3.2.1 有的只是.class文件,没有源码(公司不一样),看到的是反编译出来的(命名随便的),要自己加对应版本的源码(8u65中/src/sun已经加了) 利用点终点 从接口Transformer的transform方法入手 找接口的实现(看看有没有可进行反序列化的(重写readObject()方法、implements了Serializable)) 找到InvokerTransformer 可以看到参数都是可控的,而且利用反射进行了方法执行,所以可以用来进行任意类的任意方法。 123456789101112import org.apache.commons.collections.functors.InvokerTransformer;import org.apache.commons.collections.Transformer;public class cc1 { public static void main(String[] args) { ...
基于MCP的轻量级AI工具调用系统
基于 MCP 协议构建可插拔的 AI 工具调用系统:以天气查询为例 本文将带你从零实现一个基于 Model Context Protocol (MCP) 的轻量级 AI 工具调用系统,展示如何让大模型安全、标准化地访问本地或远程数据源,并通过百炼(DashScope)的 Qwen 大模型完成自然语言交互。 什么是 MCP?MCP(Model Context Protocol)是一种新兴的标准化协议,用于连接大语言模型(LLM)与外部工具服务。其核心思想是: 将真实世界的功能(如查询天气、读取数据库)封装为“工具”(Tool) 通过统一协议(如 stdio)暴露给 LLM 客户端 LLM 仅需理解工具的元信息(名称、参数、描述),无需关心底层实现 MCP 架构包含三个关键角色: 角色 说明 MCP 主机(Host) 如 Claude Desktop、IDE 插件等,发起对工具的请求 MCP 客户端(Client) 负责与 LLM 和 MCP 服务器通信,协调工具调用流程 MCP 服务器(Server) 轻量级程序,封装具体业务逻辑(如调用...
python原型链污染
python原型链污染 不是所有类的属性都可以被污染的; 对所有类的方法无效 [!IMPORTANT] ——注: 我们只能更改对应区域的参数内容**(改属性、变量)**,并不能自己实现命令的执行; 要有其他区域来协助实现回显/执行。 合并函数——实现污染的一种方式 123456789101112131415def merge(src, dst): # Recursive merge function for k, v in src.items(): if hasattr(dst, '__getitem__'): if dst.get(k) and type(v) == dict: merge(v, dst.get(k)) else: dst[k] = v elif hasattr(dst, k) and type(v) == dict: merge(v, getattr(dst,...
GAN_代码生成
基于tensorflow依赖 3个外部库:tensorflow、numpy、matplotlib 用Sequential搭网络,用Model做GAN的链式模型??? 超参不会在反向传播里更新,但直接决定模型能否收敛、生成质量、训练速度 这些参数是要可重复,为了调参方便,可自动化搜索 [!IMPORTANT] 这三个参数是生成对抗网络(GAN)或深度学习模型训练中最核心的超参数,常用于控制模型的训练过程和输入数据形态,简要解析如下: EPOCHS = 50“EPOCHS”(迭代次数)指整个训练数据集被模型完整训练一遍的次数。 50表示训练时,所有训练样本会被模型“过”50次; 作用:太少会导致模型“欠拟合”(没学会数据规律),太多可能导致“过拟合”(只记住训练数据、泛化能力差),50是常见的中等迭代次数,适用于数据量适中、模型复杂度一般的场景。 BATCH_SIZE = 128“BATCH_SIZE”(批次大小)指每次模型参数更新时,输入的样本数量。 ...
ssti内存马
Flask环境(旧版)#1app.add_url_rule() //创实现一个路由 12345678910111213141516171819202122Flask.add_url_rule can now also register a view function.——Version 0.2The endpoint for the Module.add_url_rule method is now optional to be consistent with the function of the same name on the application object.——Version 0.6Flask no longer internally depends on rules being added through the add_url_rule function and can now also accept regular werkzeug rules added to the url map.——Version 0.7Flask...
反序列化
什么是反序列化 反序列化过程将不可信的数据(字节流)重新构建为内存中的对象时,如果程序对反序列化的内容、类型或过程缺乏严格控制,攻击者可以构造恶意数据来欺骗程序执行非预期的代码或操作,从而引发严重的安全风险。 序列化与反序列化的本质(基础) 序列化: 将内存中的对象(包含数据及其状态、甚至可执行代码的引用)转换(编码)成一个可以存储(如文件)或传输(如网络)的字节流格式(如二进制、JSON、XML等)。 反序列化: 将接收到的字节流数据重新解析、还原(解码)成内存中的活动对象,恢复其原有的数据、状态和结构。 漏洞来源 过度信任: 程序在反序列化时,通常默认接收到的数据是合法的、由可信来源生成的、结构正确的,其按照序列化格式的规则去重建对象。 魔术方法/钩子函数: 许多面向对象编程语言(如 Java, Python, PHP, .NET)在反序列化过程中会自动调用对象的特定方法。这些方法原本是为了方便开发者在对象重建时执行必要的初始化操作(如连接资源、设置状态)。 攻击者的切入点:...
ssti
...
Litctf2025
webnest_js 抓个包看看, 响应包 直接有password的了,那就爆破一下就好了 发现密码为password时 就ok了 在页面上输入password即可 多重宇宙日记 注册一个看看先 (当然,我这个admin名字是自己取的) 试了试功能 上面是改设置的,下面也是,但下面是用json来改了, 这样子,可以考虑考虑多加一点奇妙的东西,看看情况 同时,我们也可以看看源代码 发现有”isAdmin”这个参数,还有setting 构造 1234567{ "settings": { "theme": "dark", "language": "en","isAdmin": true ...
浏览器的自动下载
...









