- 博客(16)
- 收藏
- 关注
原创 [PWN] Linux中的pkeys安全机制及绕过
本文介绍了内存保护键(pkeys)机制及其在CTF PWN中的应用。pkeys通过页表键标识和线程局部寄存器实现高效内存权限切换,相比传统mprotect性能更优。x86_64架构下每个保护键占用4位,提供16种权限组合,通过PKRU寄存器管理。arm64架构则使用3位编码8个键,支持读写执行权限控制。文中结合?CTF题目"弥达斯之触"展示了pkeys的实际应用,该题通过随机生成保护键并配合seccomp限制系统调用,考察选手绕过保护机制的能力。系统调用pkey_alloc()、pkey
2025-11-26 22:56:29
708
原创 fmt_str练习
利用pwntools的fmt_str模块,将printf的got劫持为system的got。开启了部分RELRO,那么可以劫持printf的got为system的got,那么执行。先通过测试找到该格式化字符的偏移是4。然后泄露setvbuf的got地址。只有这里一个格式化字符串漏洞。开启了NX,部分RELRO。
2025-11-22 12:50:04
239
原创 一文讲透PWN中格式化字符串漏洞的可变参数
本文深入解析了pwn中格式化字符串漏洞利用的核心原理,重点阐述了可变参数机制在x86_64 System V ABI下的实现方式。文章从固定参数与可变参数的区别入手,详细介绍了va_list、va_start、va_arg等关键宏的工作机制,揭示了参数如何通过寄存器与栈传递。特别分析了漏洞利用时如何通过%k$p等格式控制符泄露内存数据,解释了"找偏移"的本质是追踪va_arg对寄存器区和栈空间的参数读取过程。全文系统性地梳理了格式化字符串漏洞背后的底层原理,为安全研究人员提供了深入理解这
2025-11-22 12:47:51
965
原创 安卓逆向上手(一)工具安装
本文介绍了多款安卓应用分析与逆向工具。雷电模拟器和夜神模拟器用于运行安卓应用;ADB是官方安卓调试工具;JADX和JD用于APK反编译;Apktool可反编译资源文件;GAD专注字节码分析;JEB能处理复杂加固APK;Frida需要root权限配置使用。每款工具都有其特定用途,如逆向分析、资源提取等,并附上了下载地址和相关教程链接。
2025-10-06 12:57:54
1244
原创 【万字详解】PWN canary绕过和相关技术
canary是一种防范栈溢出的程序保护机制,设计思想就是在一个栈溢出高危区域的尾部插入一个类似cookie的值,在函数返回时检测这个canary值是否发生改变来检测是否有溢出发生。
2025-09-04 19:32:44
1216
原创 2025磐石行动初赛_account分析
那么exp分两次利用漏洞,第一次泄露libc地址,第二次执行system(“/bin/sh”)获取 shell。这个transform函数的作用是将 32 位无符号整数转换为对应的有符号整数表示(补码形式)循环逻辑为:用户输入整数到v1[0],若输入非 0,则执行v1[++v2] = v1[0]。32位没有canary。
2025-08-11 00:24:30
323
原创 Rust入门(一)_开发环境配置及格式化
比如 “会叫” 是一种行为,狗和猫都有这个行为,但具体叫的方式不同(汪汪 vs 喵喵)。去官网下载https://www.jetbrains.com/rust/,因为RustRover的个人非商用版免费,所以也不需要找破解版,正常使用就行。如果想使用 0 以外的字符(比如字母、符号或其他数字)作为填充符,需要在宽度前直接指定该字符,且该字符必须是非数字(因为数字会被解析为宽度的一部分)。比如现实中的 “狗”“猫” 是具体的动物,在代码中可以用结构体表示它们的属性(名字、年龄等)。(“{}(猫)喵喵叫!
2025-08-09 17:31:56
1461
原创 栈劫持_x86(stack pivoting)(一)
(stack pivoting)是将栈转移到固定可控的目标上的一种方法,比如转移到bss段上或者是转移到堆上。一般来说,我们可能在以下情况中需要使用栈劫持。在某些技巧中,也可以通过栈劫持这种方法来进行一次性的不需要返回到main函数的Payload。还有一些其他情况,比如能在bss段输入大量数据,但是栈溢出的时候只能控制返回地址甚至只能控制rbp的情况。当然,特殊情况下,只能控制rbp的一个字节。下面通过一个例子解释。
2025-08-03 09:56:47
468
原创 格式化字符串漏洞_x86详解
格式化字符串函数接受可变数量的参数,并将第一个参数作为格式化字符串,根据其解析之后的参数。格式化字符串的利用分为三个部分(1)格式化字符串函数(2)格式化字符串(3)后续参数(可选)其中,printf()函数就是格式化字符串函数"output1:%s,output2:%p,output3:%4,2f"就是格式化字符串a,b,c就是后续参数格式化字符串最常见的漏洞就是参数未写全,比如这样一个语句。
2025-07-29 11:44:32
1082
原创 ret2libc3_x86
这里要进行两次溢出,第一次先用puts泄漏某个函数(这里是gets)的got地址,然后再用计算出的libc库偏移找到system和“/bin/sh”ret2libc3中,只有一个gets的溢出,system和“/bin/sh”都需要自己获取。实际题目中常常要用到LibcSearcher之类的小工具来寻找libc库版本。答案是动态链接库中的函数和字符串。先用gdb的vmmap找到库地址。与retlibc2保护相同。
2025-07-17 03:09:36
415
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅