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 ...
SQL注入---常见分类攻击方式总结与绕过
近期由于准备学校培训内容,对SQL注入的基础知识进行了一些总结,同步一下博客。
SQL基础一、数据库的基本概念
什么是数据库(Database)
一个存储和管理数据的容器,比如:学生信息管理系统的核心。
什么是表(Table)
数据库中用于存储数据的结构化格式,每张表有若干“行”和“列”。
行(Row)和列(Column)的区别
一行:表示一条记录(例如一个学生)
一列:表示一个字段(例如“姓名”字段)
二、SQL基础语法1. SELECT语句 - 查询数据select [列名/*] from [表名] where [限制条件]
示例:
select * from students;
假设students表:
id
name
age
1
Alice
18
2
Bob
19
查询 age = 18 的所有同学的姓名
SELECT name FROM students WHERE age = 18;
2. INSERT语句 - 插入数据insert into students(name, age) values ('Sunny& ...
让AI也懵圈:一次CTF中的对抗样本生成与应用
让AI也懵圈:一次CTF中的对抗样本生成与应用同步一下推送发的内容
题目来源:GHCTF。感谢GHCTF主办方的师傅们,特别是公开赛道的设置和提供的高质量赛题。
引言在当前人工智能的应用中,模型通常会基于大量的数据进行训练,以帮助其做出准确的预测。然而,既然是预测,就难免会出现失误。因此,如何确保模型的鲁棒性和安全性成为了一个至关重要的话题。
对抗样本(Adversarial Examples)攻击是AI安全中不可忽视的一个隐患。对抗样本是指通过精心设计,对输入数据进行微小修改,通常这些修改对人眼几乎无法察觉,但却能导致模型产生错误的分类或判断。例如,下图展示了这种情况:最左侧是原始图像,中间是添加的微小扰动,右侧则是生成的对抗样本。模型在识别原始图像时,会返回结果为猫(虽然这个数据集分辨率很低,就姑且当图里是猫吧),但是模型识别对抗样本时,则会将其识别为狗。
但是这时候就有人要问了,“学长学长,你上面讲的东西还是太抽象,太难理解了,有没有更贴近生活的例子?”
有的兄弟,有的。这样的例子还有两个。
例如新能源汽车的自动驾驶系统,我们都知道,很多新能源汽车的自动驾驶都会依赖于摄像头和 ...
