2025年终总结
...
Geek2025出题小记
...
Newstar2024
前言感觉基础有点问题,但是因为参加了25Newstar的出题还帮测了一些题目,于是干脆重新打一遍Newstar2024了。 应该主要是Reveres,cry、misc、pwn看情况复现(web吗也加到todolist里吧),感觉Newstar2025 Reverse有些我没测的题目还想做一下,总之这是一个todolist,新生赛的广度确实好玩,适合入门,赞美newstar! 逆向的可能写的简略一点,逆向主要练代码能力,其他方向以学习为主 复现入口:https://ctf.xidian.edu.cn/training/14 我的复现进度比我想的慢好多可恶TT Week1CryptoBase14C4A575851324332474E324547554B494A5A4446513653434E564D444154545A4B354D45454D434E4959345536544B474D5134513D3D3D3D cyberchef from hex + magic1flag{B@sE_0f_CrYpt0_N0W} Strange...
梯度泄露攻击
阅读笔记 引言1、深度神经网络(DNNs)面临的两个问题:(i)如何在一个私密敏感数据的集合上训练模型,以便能够安全部署,同时最大限度地减少敏感训练数据的披露? (ii)使用差分隐私训练的 DNN 模型能否被信任,以防止其输出侵犯隐私? 2、深度学习的隐私风险深度学习在训练阶段和预测阶段都容易受到多种隐私攻击,这些攻击利用了其庞大的模型参数数量,这些参数足以编码个人数据的细节。在模型训练过程中可以无声地使用相同的监视过程和未经授权的读取操作而不被发现,并且可以使用相同的重建算法从泄露的梯度中披露私人训练数据。 3、差分隐私深度学习 差分隐私:...
强网杯 2025 WriteUp + 复现ing
虽然逆向大失败了但是真打爽了,决定全复现 Reversebutterfly程序对输入文件按每 8 字节块进行如下变换(加密流程): t = B XOR K (按位异或,B 为 8 字节明文块,:key为 "MMXEncode2024" ) u = swap16(t)(在每个 16-bit lane 内交换字节:[b0 b1 b2 b3 ...] -> [b1 b0 b3 b2 ...]) v = ROL64(u, 1)(对整个 64-bit 做循环左移 1 位) out = bytewise_add(v, K)(对每个字节做 (v_byte + K_byte) & 0xFF) 写回并对整个文件的每个 8 字节块重复此操作。程序还在内存中于 buf[file_size] 写入一个 16-bit 的 file_size(原始长度)。 因此解密(逆操作)为: tmp = bytewise_sub(C, K) rot = ROR64(tmp, 1) swapped = swap16(rot) B = swapped XOR...
LilCTF 2025 WriteUp (Reverse方向)
LilCTF 2025:https://lilctf.xinshi.fun/games/ ASM ASMMainActivity123456public class MainActivity extends AppCompatActivity { public native String check(String str); static { System.loadLibrary("ez_asm_hahaha"); } 定义了一个 native 方法 check(String),加载so 12345678910111213public void m1789lambda$onCreate$1$workpangbaiez_asm_hahahaMainActivity(EditText input, Button btn, View v) { String txt = input.getText().toString(); // 获取输入 ...
L3HCTF 2025 WriteUp (Reverse方向) (更新中)
因为好久没更新博客被SW拷打了,思来想去决定还是把Writrup放在blog上,一个是催自己复现喵,一个是能整理一下思路练练代码能力。下周ciscn的PPT还没做,能不能天降一个PPT高级工程大师来救救我TT 为什么暑假会比上学忙啊,暑假回来连轴转TT 当时打l3h的时候在做手术,两天都只有半夜摸了一下电脑,只打了两道TT 但是我应该会全复现的! TemporalParadoxOne day I made a request, but I forgot what it was. Can you help me find it? 12Decompilation failure:140001D20: positive sp value has been found 1234.text:0000000140001D20 loc_140001D20: ; CODE XREF: sub_140001D05+16↑j.text:0000000140001D20 168 call ...
llvm&ollvm初探
LLVMLLVM的核心思想是将编译器分为前端和后端两个部分,前端负责将源代码转换为中间表示LLVM Intermediate Representation (IR)(以库的形式提供接口),后端负责将中间表示转换为目标机器的汇编代码。 LLVM IR三种表示: .ll 格式:人类可以阅读的文本。 .bc 格式:适合机器存储的二进制文件。 内存表示 LLVM Pass https://llvm.org/docs/WritingAnLLVMPass.html#the-immutablepass-class Pass就是“遍历一遍IR,可以同时对它做一些操作”的意思,Pass 是 中间 IR 处理环节的主要模块。llvm pass的作用: 插桩 优化机器无关的代码 ModulePass (基于模块)如果函数传递不需要任何模块或不可变传递,则模块传递可以使用接口的函数级传递(例如支配者)来提供检索分析结果的函数。 FunctionPass (基于函数)CallGraphPass (基于调用图)LoopPass (基于循环)PASS 注册方式1、修改...
Linux中的进程通信与多线程
进程与线程 线程是 CPU 调度的最小单位,进程是资源分配的最小单位。 进程(Process) 资源分配的基本单位。 每个进程拥有自己独立的地址空间(代码段、数据段、堆、栈)和文件描述符表。 进程之间不能直接访问彼此的内存空间,只能通过 IPC(如 pipe、shm、socket)通信。 切换进程涉及完整的上下文切换,开销相对较大。 一个进程挂掉不会影响其他进程 线程(Thread) CPU 调度的基本单位。 一个线程属于某个进程,多个线程共享进程的地址空间、堆、文件等资源。 每个线程有自己独立的栈空间和寄存器上下文。 使用线程可以更轻量地实现并发(上下文切换比进程快)。 线程之间通信无需系统调用,效率高;但一个线程崩溃可能拖垮整个进程。 协程(coroutine)协程是在用户态调度的更轻量级的执行单元,不涉及系统调用或上下文切换,因此更快,但不适合多核并行。 线程通信 vs 进程通信 线程之间通过共享内存通信,进程之间通信必须借助系统提供的 IPC 机制。 线程通信:基于共享内存 + 同步控制 线程间共享内存,不需要...
Heaven's Gate
天堂之门前置知识Windows 架构概览 用户层 内核层 32 位或 64 位进程 始终为 64 位内核 Windows 的内核(ntoskrnl.exe)永远是 64 位。 即使运行的是 32 位程序,它也是通过 WOW64 子系统(Windows-on-Windows64) 模拟运行的 WOW64WOW64 是 Windows x64 系统的一个兼容子系统,用于支持 32 位应用的运行。 在 64 位系统中为 32 位程序提供一个运行时环境。 WOW64 的三大组件:| 模块 | 位数 | 作用 || ———————— | —— | ———————————- || wow64.dll | 32 位 | 桥接层,将 32 → 64 位参数封装 || wow64win.dll | 64 位 | 处理 GUI / 用户模式接口 || wow64cpu.dll | 64 位 | CPU 上的 thunk 机制(切换执行模式) | 拦截 32...









