WindowsTerminal仿Ghostty终端外观风格设置
原文章来自 lostsheep 佬友的终端精致小玩具 - Ghostty
后经过 ai 帮我生成了 Windows 端的相关文件设置
效果图:
Windows Terminal settings.json 设置
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798{ "$help": "https://aka.ms/terminal-documentation", "$schema": "https://aka.ms/terminal-profiles-schema", "actions": [], "copyFormatti ...
第三届“长城杯”总决赛Web题目部分wp
eznginx
源标题不是这个,但是这里只保留了附件
访问根路由,提供了以下 /api
123456{ "app": "theme-assets", "preview": "/api/v2/preview/demo/download", "ops": "/api/v2/preview/admin/sync/job", "upload": "/api/v2/preview/admin/sync/upload"}
其中 preview 功能只是摆设,实际并没有实现任何后端逻辑
至于另外两个功能,由于请求的路径会通过 buildAuthCandidate 方法处理检测是否匹配以下正则表达式,该配置在 application.yml 中
1auth-pattern: "^/api/v2/preview/[A-Za-z]+.*?/download$"
123456789101112131 ...
CommonsCollections4-5-6-7链分析
CommonsCollections 4
CC 4 依赖于 commons-collections4 : 4.0,基础版本其实很简单,在 CC 2 TemplatesImpl 链子的基础上将 InvokerTransformer 替换为 CC 3 中使用的 InstantiateTransformer 来触发 newTransformer() 方法
1234567891011121314Transformer[] transformers = new Transformer[] { new ConstantTransformer(TrAXFilter.class), new InstantiateTransformer(new Class[]{Templates.class}, new Object[]{templates}) }; ChainedTransformer chainedTransformer = new ChainedTransformer(transformers); ...
CommonsCollections3链分析
既 CC 1 和 CC 2 的学习之后,两者本质上还是去触发 InvokerTransformer.transform() 来反射调用方法,在引入了 TemplatesImpl 之后,是否能找到一种链子可以直接触发其 newTransformer 方法来加载字节码?CC 3 就是为此而生
既然如此,我们依旧对 newTransformer Find Usages,关注 TrAXFilter 类
1234567public TrAXFilter(Templates templates) throws TransformerConfigurationException { _templates = templates; _transformer = (TransformerImpl) templates.newTransformer(); _transformerHandler = new TransformerHandlerImpl(_transformer); _useServicesMechanism = _transfor ...
CommonsCollections2链分析
既 CC 1 分析后,了解了 Transformer 的基础知识后,后面的链子就可以快些分析了,CC 2 的利用是基于 commons-collections 4,因此我们引入依赖
12345<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.0</version> </dependency>
配合 ChainedTransformer 触发 Runtime.exec()
我们以 ChainedTransformer 作为开始
12345678910111213141516171819package org.example; import org.apache.commons.collections.Transformer; import org.apache.commons.collec ...
Transformer及CommonsCollections1链分析
在 Apache Commons Collections(以下简称 CC 链)反序列化漏洞中,Transformer 接口及其实现类是整个攻击链路的“执行类”
在解决 Java 反序列化漏洞时,我通常更喜欢将其分解为三个部分:
入口类(source):指反序列化漏洞利用的起点,通常是一个攻击者可以控制的类;重写 readObject 类、调用常见的函数(触发常见的 Java 方法,为攻击者提供了执行任意代码的机会),参数类型宽泛,最好 jdk 自带
调用链(gadget chain):是由一系列类和方法组成的链条,通过反序列化时自动调用的方法被触发,逐步调用这些类和方法,从而最终达到攻击者的目的。(相同名称相同类型:在调用链中,每个类和方法需要具有特定的签名,方法的名称和参数类型必须匹配,以确保在反序列化过程中被正确地链接和调用)
执行类(sink):是调用链的最终目的地,也是执行恶意代码或完成攻击者意图的地方
Transformer 在源码中只是一个接口类,其核心作用可以归结为:将输入对象(保持不变)转换为某个输出对象
12345package org.apache.commo ...
DIDCTF-应急响应
流量日志分析
linux-basic-command
Info
获取2015年访问请求 排名前五的ip地址
格式:flag{ip1,ip2,ip3,ip4,ip5}
附件下载下来是 HTTP 流量日志,一万多行,写个脚本好了
1234567891011121314151617181920from collections import Counter import re log_file = r"C:\Users\23800\Downloads\Compressed\access.log\access.log" pattern = re.compile(r'^(\S+) .+\[.+/(\d{4}):.+\]') counter = Counter() with open(log_file, "r", encoding="utf-8", errors="ignore") as f: for line in f: ...
Nodejs原型链污染
单独提出来是方便自己下次看到能快速浏览,之前的笔记太混乱了,链路逻辑有点混乱,一些细节也忽略掉了,借此重构一下;再者是自己本身对 nodejs 这一块的认识没有那么深刻
JavaScript 原型链
继承属性
JavaScript 对象有一条指向原型的链,当访问其属性时除了该对象,还会在其原型甚至是原型的原型中去查找该属性,直到到达原型链的末尾
想要访问一个对象的原型有两种方法,函数标准形式:通过 Object.getPrototypeOf() 和 Object.setPrototypeOf() 来访问和修改;非标准形式:JavaScript 访问器 __proto__
12let o ={} console.log(o.__proto__ === Object.getPrototypeOf(o)); // true
Note
根据 ECMAScript 标准,符号 someObject.[[Prototype]] 用于指定 someObject 的原型
这不是代码中可写的语法,而是规范中指定一个对象的记法
对于以下例子,我们显式设置 o 的 ...
第十九届CISCN暨第三届长城杯半决赛WP
第二次参加长城杯了,这次我们队伍获得第 9 名,也还好 AWDP 分拿的比较多,还有一道二进制的 fix,但本人是 web 手就没端上来了;ISW 被拉爆了,渗透这一块确实还得练,至于后面的决赛尽力而为吧。感恩一切!
AWDP
MediaDrive
break
看到反序列化函数应当警觉
这里我们可以改变 basePath,通过 file_get_contents 函数来获取内容
123456789101112131415<?phpclass User { public $name = "guest"; public $encoding = "UTF-8"; public $basePath = "/"; public function __construct($name = "guest") { $this->name = $name; }}$user = new User();echo seriali ...








