Openvpn archlinux Cheetsheet
openvpn在archlinux上安装默认为最新版,对于一些比较老旧的ovpn配置会连接不上,例如以下实际碰到的例子 DCO 不适配1234567891011121314151617181920212223❯ openvpn --config ./twb2026-team22.ovpn2026-08-13 09:37:54 Note: --cipher is not set. OpenVPN versions before 2.5 defaulted to BF-CBC as fallback when cipher negotiation failed in this case. If you need this fallback please add '--data-ciphers-fallback BF-CBC' to your configuration and/or add BF-CBC to --data-ciphers. E.g. --data-ciphers DEFAULT:BF-CBC2026-08-13 09:37:54 OpenVPN...
copy fail笔记
copy.fail 漏洞信息无需条件竞争,稳定提权。只需要732字节大小的python脚本即可实现2017年后的大部分发行版提权。 该漏洞是 authencesn 模块的一个逻辑漏洞,从 AF_ALG 以及 splice() 导致4字节的 page-cache 写入。 exp: 12345678910#!/usr/bin/env python3import os as g,zlib,socket as sdef d(x):return bytes.fromhex(x)def c(f,t,c):...
Kernel提权逻辑漏洞总结
漏洞 影响模块 漏洞成因 copy fail crypto/aead 4字节page-cache覆写 Dirty Frag crypto/aead xfrm rxrpc 4/8字节page-cache覆写 Fragnesia xfrm espintcp 1字节page-cache覆写 PinTheft net/rds double free CIFSwitch cifs description检验逻辑缺失 DirtyDecrypt rxrpc/rxgk CoW检查缺失 ssh-keysign-pwn ssh 访问权限控制逻辑缺失 dirtyclone net/core page-cache覆写 peditCoW net/sched page-cache覆写 IonStack rtmutex stack uaf bad epoll epoll UAF powerVR powervr oob write Frag...
内核模块依赖图
内核模块的依赖是装载时的大问题。大部分时候可以通过 Modules.deps 或者 Modules.order 进行依赖模块的自动加载。但是有时候可能没有这些依赖配置(例如树外编译),以及其加载过程不透明(不知道到底是哪个符号依赖于哪个模块)。 modtree对树外编译模块依赖写了一个简单的脚本,仓库地址:https://github.com/Eknight-Eutopia/mod_tree效果如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253msm-kgsl ├── socinfo │ └── smem ├── llcc-qcom │ └── socinfo │ └── smem ├── qcom-dcvs │ └── dcvs-fp │ ├── qcom-rpmh │ │ ├── qcom-ipc-logging ...
Android NoMali 驱动模拟
安卓mali驱动模拟。 环境配置 arm mali_kbase源码 linux-kernel 6.12.93 源码 busybox qemu-aarch64-system aarch64-linux-gnu-gcc 编译编译 linux-kernel 源码(linux 6.12.93 版本)编译mali源码 123456KDIR=/mnt/Data/Android/mali_fuzz/external/linux-6.12.93 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \ CONFIG_MALI_MIDGARD=m \ CONFIG_MALI_EXPERT=y \ CONFIG_MALI_REAL_HW=n \ CONFIG_MALI_NO_MALI=y \ CONFIG_MALI_NO_MALI_DEFAULT_GPU=\"tMIx\" 模拟busybox相关配置参考之前的内容,buildroot 也可以(适配...
Android KGSL 加载流程解析
跟着源码和qemu模拟过程研究下KGSL模块的加载流程。 环境配置 真机xiaomi 14 pro设备树(pineapple 6.1.75) qcom-kernel 源码:KERNEL.PLATFORM.4.0.r12-00400-kernel.0.xml graphic-kernel 源码 模拟流程 获取目标模块依赖树以及设备树; 加载目标模块所有依赖模块,先满足目标模块能够insmod的条件; 通过源码或者IDA反编译分析目标模块以及依赖模块需要的硬件属性,添加设备树设置; 记录硬件属性的数据流 硬件属性分为必要/非必要,均可以存储到数据库中 设备树应该为dts格式,而非dtb反编译 设备树每一个节点 qcom 有官方说明 txt 注意设备树地址是否与virt本身冲突,冲突部分需要进行地址迁移,同时在 QEMU 侧注册相应 MMIO...
Android Qcom KGSL模块编译
Environment SetupPull qcom-kernel12repo init -u https://git.codelinaro.org/clo/la/kernelplatform/manifest -m KERNEL.PLATFORM.5.0.r28-00700-kernel.0.xmlrepo sync create soft link vendor/qcom 1ln -s vendor/qcom ../qcom Pull graphics-kernelsimply clone it from codelinaro 12git clone https://git.codelinaro.org/clo/la/platform/vendor/qcom/opensource/graphics-kernel.gitgit checkout gfx-kernel.lnx.16.0.r10-rel Additional dependenciesmm-drivers1234cd...
安卓自定义内核编译
近期想尝试一下安卓 kernel 的 kgsl 模块编译以及模拟。 实验环境基于 Debian 12,clone 了 android-kernel repo 来进行试验。由于Android 14以后不再支持 ./build.sh,我们这里集中学习如何使用 Bazel 来进行定制化编译。 编译实际上高通有自己维护的 manifest 开源仓库,直接在 pull 下来全量编译即可(不过最新版的芯片型号是缺了一些库的)。 建立ddk工作区ddk 工作区是 (Driver Development Kit),用于内核模块开发编译的工作区。该工作区的目录结构为: 1234567.repotoolsexternal/kleaf # 完整 android_kernel 源码external/prebuiltsMODULE.bazeldevice.bazelrcWORKSPACE.bzlmod 以下命令是创建一个 ddk 工作区的命令,会在目录下创建 MODULE.bazel, device.bazelrc, tools/bazel 等文件 1curl...
SJTU26校赛出题记录
此次出题过于执着于防AI以及AI agent工具使用,反而忽略了碳基古法解题的做题体验,线上赛看大家问卷反馈也是发现此次出题效果很差,在此向大家谢罪 XD。 【Stack UAF】NekoGarden题目预期难度:简单题目评价:该题目是一道防 agent 题目,虽然是在第三天凌晨就被 b0ar 大佬拿下一血(结合该选手其他题目解题情况合理怀疑是编排了很强力的 agent 自动解题。但是整场比赛七天下来在最后两天放出提示后才两解(另一解看wp应该是真人手打的),基本上可以认为是防住了 AI 大人。但是没想到的是把真人也防住了,导致最后解数太低(该题目预期难度简单,考验手动调试),实在惭愧。 起因是看到一个漏洞:CVE-2024-23354该漏洞是内核中 kgsl gpumem 逻辑中,op 结构体 op->data 成员被赋值为栈上变量地址,可以通过提前kill进程导致栈对应函数提前释放。因此考虑在用户态对此种情况进行复现,通过 pthread_t 的生命周期管理导致子线程函数提前退出然后触发栈上变量UAF。这也就是这道题目的由来,题目的漏洞点在于...
CVE-2026-21385漏洞复现
实验环境 小米15 (snapdragon 8 Elite) 漏洞分析漏洞位于 kgsl 驱动上,相关 patch commit 有关 kgsl 的基本介绍可以阅读:Attacking the Qualcomm Adreno GPU 根据其描述可知为整数下溢。在 kgsl_sharedmem.h 中 kgsl_memdesc_get_align 函数内容如下 123456789101112/* * kgsl_memdesc_get_align - Get alignment flags from a memdesc * @memdesc - the memdesc * * Returns the alignment requested, as power of 2 exponent. */static inline intkgsl_memdesc_get_align(const struct kgsl_memdesc *memdesc){ return FIELD_GET(KGSL_MEMALIGN_MASK,...
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)