MCP(Model Context Protocol)学习笔记:下一代LLM接口标准
近几年,大模型的发展速度实在太快了。 从最初单纯依赖 Prompt 的阶段,到后来兴起的 AI Agent,再到如今的 MCP(Model Context Protocol),每一次演进都在重塑人们与模型交互的方式。AI Agent 还在半年前是人人讨论的热门话题,如今却随着 MCP 的出现,逐渐淡出了视野。
为了跟上时代的脚步,我决定深入学习 MCP,通过本篇记录下自己的理解过程,并思考它在安全性与安全应用场景上可能带来的新变化。
Prompt,Agent,MCP都是什么Prompt2023 年,OpenAI 发布了 ChatGPT。当时的 AI 主要以聊天框的形式存在,我们输入的消息被称为 User Prompt,即用户提示词,通常是我们提出的问题或指令。
实际上,通过不同的提示词,用户可以在一定程度上塑造AI 的性格。例如:
- 当你说:“帮我修改我的论文。”  
 AI 会以助理的口吻给出中立的建议;  
- 而如果你说:“假设你是我的导师,请帮我修改论文。”  
 它的语气可能会更加犀利、批判性更强(bushi)。
在这种情况下,AI 的“性格”信息其实混在了 User Pr ...
NexusCTF Write-Up By YoSheep
NexusCTF Write-Up By YoSheep
PLACE: 5th
POINTS: 4150
SOLVES: 30
很艰难的一场,毒狼战团队赛,一年多没打手还没算很生。由于本场比赛没有要求交所有题目的Write-up,以下挑了几个题来写。Web的题目和一些我觉得有意思的我会写的尽量细一些。
MiscellaneousAnnoying? No.I obtained a binary string from the file binary.txt. To recover the hidden message, convert each 8-bit chunk into its corresponding ASCII character.
12bits = "01001110 01100101 01111000 01110101 01110011 01000011 01010100 01000110 01111011 01101110 00110000 01110100 01011111 01000000 01110011 01011111 01000000 01 ...
Gap Year Review --- 在路上的一年
Gap Year Review — 在路上的一年度过了很漫长,也很美好的一年。
明天就要去学校注册了,很奇怪,没有实感,心里也没有太多波澜。大四阶段只有一节课,距离上一次真正坐在教室里,已经过去了将近两年。我不知道,逃离校园这么久后,自己是否还能重新沉稳下来。
当初选择 gap 的原因,其实很简单——累了。东亚小孩的一生,总是被社会的时针裹挟着推进。每一个拐点,似乎都只能匆忙做出“最好的”选择,却过着并不喜欢的人生。从高中起,我总是被别人的光鲜经历和短视频里的热词触动——“人生应该是旷野”。我暗暗告诉自己,这才是我向往的生活方式。但转头,迎接我的依旧是成山的试卷、写不完的作业、赶不完的 ddl。矛盾而拧巴。
这一年做过的事,刚开始想不起来几件,甚至一度被吓到。幸好翻开相册,一些画面被定格下来。
离开学校前,和朋友们拍了毕业照。去年忘了发,就补在这一条里吧。翻看时,那天的笑容依旧历历在目。
刚离开学校,就去潮汕自驾。一路吃吃喝喝,实惠又美味,最难忘的是南澳岛:沿环岛公路开车,右手边就是大海。夜里赤脚踩在沙滩上,温热的海浪拍打脚背。因为是淡季,用不贵的价格订到了海景房,阳台还能看到沙滩边的 ...
Java安全篇(3)-CC链
环境使用Java的8u65版本调试该链
下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
mvn版本:
12345<dependency>	<groupId>commons-collections</groupId>	<artifactId>commons-collections</artifactId>	<version>3.2.1</version></dependency>
以上添加至pom.xml文件中
回顾反序列化的攻击思路反序列化的一个基本过程,通常我们需要先找到一个危险方法,例如此处找到的是 r.exec() ,然后找到一个调用该危险方法的对象的方法,此处假设对象为 O3 的 abc 方法,然后去找调用了 O3 的 abc 方法的位置(或者是同名函数),例如找到了 O2 的 xxx ,以此类推找到O.aaa等,最终需要找到一个入口,接收任意对象并执行read ...
XML 外部实体注入(XXE)漏洞基本原理
XML 外部实体注入(XXE)是一种通过在 XML 输入中引用外部实体而利用解析器缺陷的攻击方式。也就是说,当应用程序在处理 XML 文档时,如果没有正确禁用对外部实体(External Entity)的解析,就可能被构造恶意的实体引用所利用 。这种攻击可以导致敏感文件泄露、内网端口扫描、SSRF(服务器端请求伪造)、拒绝服务甚至部分场景下的远程代码执行等严重后果。简而言之,XXE 的根本原因在于 XML 解析器默认允许 DTD(文档类型定义)及外部实体,攻击者可借此构造引用系统或网络资源的实体,而将这些内容注入到解析过程。
XXE 漏洞发生时往往是因为开发者未对 XML 输入进行严格过滤或使用弱配置的解析器。例如,缺少disallow-doctype-decl特性或允许external-general-entities解析,就会让攻击者有机可乘。一旦漏洞被触发,XML 中定义的外部实体就会被解析器读取并替换到 XML 内容中,导致文件内容返回给攻击者。实践中,许多XXE实例往往发生在允许用户上传或提交 XML 文档的位置,如配置文件上传、SOAP/XML API 接口等场景 ...
Java安全篇(2)-ysoserial使用
Ysoserial工具简介与安装ysoserial是一款用来生成Java反序列化漏洞payload的验证工具,其中内置了多种常见的库中的gadget chain,可以直接通过命令和链类型生成序列化数据,一旦目标应用不安全地反序列化这些数据就会触发命令执行。
ysoserial项目地址:https://github.com/frohoff/ysoserial
下载预编译 JAR:访问 GitHub Releases,下载如 ysoserial-all.jar 等可执行 JAR 文件(无需编译)。
从源码编译:使用 git clone https://github.com/frohoff/ysoserial.git 拉取源码,然后进入目录运行 mvn clean package -DskipTests 编译,生成可执行 JAR 。
安装完成后,即可使用 java -jar ysoserial.jar 查看帮助,出现Payload列表即表示安装成功
使用方法使用 Yoserial 生成 payload 的基本方法是调用其主类:
1java -jar ysoserial-all.ja ...
Java安全学习(1)-Java反序列化基础
在Java中,序列化(Serialization)是将对象转换为字节流,从而可以方便地保存到文件、传输到网络或持久化存储;反序列化(Deserialization)则是将字节流重新还原为对象。
注意:如果一个类要支持序列化,必须实现 java.io.Serializable 接口。
序列化与反序列化示例下面通过一个简单的 Student 类,演示对象的序列化与反序列化过程。
Student类(实现了Serializable接口)Serializable 接口是java提供的一个序列化接口,它用来标识当前类可以被ObjectOutputStream序列化,以及可以被ObjectInputStream反序列化。
12345678910111213141516171819202122import java.io.Serializable;public class Student implements Serializable {    private String name;    private int age;    private String studentId;    ...
Python Pickle 反序列化漏洞
1. Pickle 基础1.1 什么是 Pickle?Pickle是Python内置的序列化/反序列化的模块,它能将任意Python对象转换为二进制流并还原。Pickle文档明确警告:“pickle模块不安全;只有在信任数据源时才使用。恶意构造的pickle数据可以在反序列化时执行任意代码” 。Pickle与JSON的主要区别在于:JSON只能表示基本类型(数值、字符串、列表、字典等),而Pickle能够序列化几乎任意Python对象(类实例、函数、复杂数据结构等),因此功能更强但也风险更高。
Pickle支持多种协议版本(目前Python官方支持0–5共6种协议),其中协议0为文本格式(Python 2兼容),协议1–3为历史二进制格式,协议4引入对超大对象和新类型的支持,协议5引入离带缓冲区以加速大对象传输 。不同协议产生的字节流会略有不同,但反序列化时Python自动探测版本。开发者通常只需调用pickle.dumps(obj)(或dump(obj, file))来序列化,以及pickle.loads(data)(或load(file))来反序列化。
各协议详细可见文档 ...
安卓开发基础学习
第一个安卓项目环境:
Android Studio 2024.2 
Java 21.0.5
SDK:API 24 
虚拟机:Pixel 9 Pro API 27 / Android 8.1
项目目录新建项目,可得到目录内容:
app├── manifests│   └── AndroidManifest.xml├── java│   ├── com.dta.first│   │   └── MainActivity.java│   ├── com.dta.first (androidTest)│   ├── com.dta.first (test)│   └── java (generated)├── res│   ├── drawable│   ├── layout│   ├── mipmap│   ├── values│   └── xml└── res (generated)Gradle Scripts
manifests目录其中manifest文件用来存放一些安卓应用程序的配置文件,通常每个安卓应用都包含AndroidManifest.xml,是一个全局配置文件, ...
跨站脚本攻击-XSS
前置基础:XSS 需要懂哪些前端知识?为了更好理解 XSS,我会先快速讲解一些基础的前端知识,哪怕你没写过网页也能跟上。
1. HTML 是什么?
HTML 是网页的“结构语言”,网页上的内容几乎都是用 HTML 描述的。
页面会由一个个标签构成,比如:
1234567<html>  <head><title>网页标题</title></head>  <body>    <h1>主标题</h1>    <p>这是正文段落</p>  </body></html>
看到这种 <标签> 的东西,就是 HTML。
2. HTML 标签的结构:1<tagname attribute="value">内容</tagname>
例如:
1<a href="https://example.com">点我跳转</a>
<a> 是超链接标签,h ...
