自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 pwn知识点——接收泄露地址的多种形式对比

本文将详细对比分析两种常见的地址接收语句,并探讨32位与64位环境下的差异与处理技巧,以及pwntools中的常用接收函数及其使用。

2025-10-12 22:50:46 1052

原创 BUUCTF ciscn_2019_n_5 wp

本文是基于BUUCTF平台ciscn_2019_n_5一题的题解。

2025-10-10 18:42:01 600

原创 BUUCTF [OGeek2019]babyrop wp

本文是基于BUUCTF平台[OGeek2019]babyrop一题的题解。

2025-10-04 18:12:03 1767

原创 BUUCTF others_shellcode wp

本文是基于BUUCTF平台others_shellcode一题的题解。

2025-10-03 17:57:49 1000

原创 BUUCTF [HarekazeCTF2019]baby_rop wp

本文是基于BUUCTF平台[HarekazeCTF2019]baby_rop一题的题解

2025-10-01 16:49:01 1389

原创 BUUCTF get_started_3dsctf_2016 wp

本文是基于BUUCTF平台 get_started_3dsctf_2016 一题的题解

2025-09-29 21:03:36 1689 2

原创 BUUCTF jarvisoj_level2_x64 wp

摘要:本文详细分析了64位系统下ROP攻击的实现方法,重点讲解了与32位系统在参数传递上的差异。通过BUUCTF jarvisoj_level2题目,展示了如何利用pop_rdi gadget设置寄存器参数,构造ROP链调用system函数获取shell。文章包含漏洞分析、偏移计算、gadget查找、payload构造等关键步骤,并对比了elf.symbols和elf.plt获取函数地址的区别,最后给出了完整的利用脚本及栈对齐问题的解决方案。该技术适用于NX保护开启但无其他防护措施的64位程序。

2025-09-26 07:45:00 694

原创 BUUCTF ciscn_2019_c_1 wp

本文分析了64位程序ciscn_2019_c_1的漏洞利用过程。通过checksec发现程序仅开启NX保护,IDA静态分析发现encrypt函数存在gets栈溢出漏洞。由于没有直接的后门函数,采用ret2libc技术分两个阶段攻击:首先利用puts函数泄露libc地址,通过LibcSearcher匹配版本后计算system和/bin/sh地址;随后构造ROP链执行system("/bin/sh")获取shell控制权。详细说明了64位系统下参数传递规则、gadget的使用方法,以及处理多

2025-09-25 07:30:00 1903

原创 BUUCTF bjdctf_2020_babystack wp

显示除了NX保护均未开启或完全启用 ,说明此题难度系数不高,而NX开启说明数据区域(如栈、堆)不可执行,是防止将写入数据区后跳转执行,所以可优先考虑不利用注入且简单直接的方式寻找漏洞。main函数中提示我们可以通过,所以此题可以优先考虑使的攻击手段。同时,我们也可以得知buf的偏移量是[rbp-10h] = 16 + 8。从 backdoor 函数中也可以发现 system("/bin/sh") 的调用及其地址0x4006E6,那么我们就可以通过栈溢出实现 backdoor 函数地址的覆盖。

2025-09-24 07:45:00 373

原创 pwn知识点——基于C语言函数调用的底层逻辑与栈帧变化

32位(x86)和64位(x86-64)架构的函数调用核心区别在于参数传递方式和栈帧管理理念​:​32位 (x86)​​:参数主要通过栈传递,ebp常作为帧指针明确界定栈帧,栈帧结构清晰固定。​64位 (x86-64)​​:前6个整型参数优先通过寄存器​(rdirsirdxrcxr8r9) 传递,栈的使用减少。rbp通常不再作为帧指针,而是作为通用寄存器,栈帧常通过rsp直接管理,可能更灵活。理解这些差异对分析漏洞(如栈溢出)和构造利用(如ROP链)至关重要。【前置知识:EBP、EIP和ESP】

2025-09-23 17:51:06 1558

原创 BUUCTF jarvisoj_level2 wp

显示除了NX保护均未开启或完全启用 ,而NX开启说明数据区域(如栈、堆)不可执行,是防止将写入数据区后跳转执行,所以可优先考虑不利用注入且简单直接的方式寻找漏洞。main函数中显示调用了函数,进入分析:可以发现此题函数存在溢出漏洞(buf容量136小于read可读入容量100u(=256)),同时没有明显的后门函数(如system("/bin/sh")),所以此题大概率需要用到利用system/bin/sh,通过设置函数参数,然后调用该函数。IDA软件中使用查看程序中关键字符串的相关信息。

2025-09-23 07:45:00 1144

原创 BUUCTF ciscn_2019_n_8 wp

显示STACK CANARY 、NX 、PIE 均开启 ,说明此题 非常难 或者只是 “下马威” 而已。main函数中直接出现了system("/bin/sh");,且该命令调用条件是(*(_QWORD *)&var[13] == 17LL),即varvar[13]: 这表示数组var的第14个元素(索引从0开始)。&var[13]: 使用取地址运算符获取var[13]的​。: 这是一个。它将获取到的地址(原本可能是指向某种类型的指针,比如char*或int*)强制转换为_QWORD *类型的指针。

2025-09-22 21:44:07 1262

原创 pwn知识点——字节流

摘要:字节流(ByteStream)是Pwn技术中的核心概念,指原始字节序列。在漏洞利用中,攻击者通过构造特殊字节流(Payload)触发漏洞,如缓冲区溢出、格式化字符串等。关键点包括:1)字节流是数据传输和漏洞利用的载体;2)需考虑字节序(小端/大端)和内存布局;3)使用pwntools的p32/p64/u32/u64函数处理整数与字节流转换;4)危险函数(如gets)和相对安全函数(如fgets)的对比。理解字节流操作是分析漏洞和编写利用代码的基础。

2025-09-19 17:27:55 1212

原创 pwn知识点——动态调试:GDB配合Pwndbg详解

​:在脚本中编写Payload,在调试器中运行程序并观察其是否按预期跳转或执行shellcode。,如CANARY、FORTIFY、NX、PIE、RELRO等。,显示堆块(chunks)的分配情况。分析堆漏洞(如UAF、堆溢出)时极其有用。,查看各段(如栈、堆、代码段、libc)的地址范围及权限(读/写/执行)。递归解析指针链(类似WinDBG的dps命令),便于查看链表或结构体。,包括寄存器、反汇编、堆栈等。Pwndbg增强了GDB,提供了许多更直观、强大的命令。在内存中搜索指定的字节序列或字符串。

2025-09-18 07:45:00 956

原创 BUUCTF [第五空间2019 决赛]PWN5 wp

显示 STACK CANARY 和 NX 开启,说明此题不可用简单直接的栈溢出来解决。(此题仅关注main函数即可,其他调用函数无直接提示)可以发现,main函数中存在指令的调用,向前分析 system 调用条件是输入的,但 dword_804C044 的内容是利用,并不固定,我们无法得知。不过main函数中出现了的调用,这是这一漏洞类型的关键标志:【printf函数的执行​:printf函数依据格式化字符串中的说明符(如%s、%d、%n)​从栈上按顺序获取参数。

2025-09-17 22:32:45 1070

原创 pwn知识点——pwn题目常见漏洞类型概览

在实际的CTF比赛中,题目往往会将多种漏洞组合在一起,并启用多种安全防护机制(如PIE、NX、Stack Canary等),这就需要。在反汇编代码(如Ghidra、IDA Pro的伪代码视图)中,追踪这些输入数据后续被传递到了哪里,又被哪些函数处理。​:在可疑的拷贝操作后,检查目标缓冲区后方内存是否被意外覆盖(如覆盖了返回地址或堆块元数据)。​:例如,先利用一个漏洞泄露libc的基地址,再通过另一个漏洞劫持控制流执行。一个已知的地址(如GOT表中的函数地址),计算出基址。

2025-09-17 15:42:48 1177

原创 BUUCTF jarvisoj_level0 wp

显示除了NX保护均未开启或完全启用 ,说明此题难度系数不高,而NX开启说明数据区域(如栈、堆)不可执行,是防止将写入数据区后跳转执行,所以可优先考虑不利用shellcode注入且简单直接的方式寻找漏洞。main函数的伪C代码提示调用了函数,那么接下来可以进入 vulnerable_function 函数进行分析。(对于write函数的调用,我们放到后续分析)10xDuLL0xD\n函数中使用了read函数:0: 文件描述符。​,通常来自键盘输入或程序重定向bufbuf0x200uLL0x200这是。

2025-09-17 07:45:00 2477

原创 BUUCTF pwn1_sctf_2016 1 wp

显示除了NX保护均未开启或完全启用 ,说明此题难度系数不高,而NX开启说明数据区域(如栈、堆)不可执行,是防止将。写入数据区后跳转执行,所以可优先考虑不利用shellcode注入且简单直接的方式寻找漏洞。字符串,就可以精确覆盖返回地址,从而劫持程序的执行流程。来看,它本身并不会直接导致栈溢出,所以漏洞的关键在于后续对字符串的处理和复制操作。,实现 strcpy 的溢出。函数的设计是安全的,它的工作方式如下:从指定的流 (所以,关键就是利用安全输入的字符串经过替换操作后的。中写入超过 32 字节的数据​。

2025-09-16 21:22:32 1308

原创 pwn知识点——python脚本中数据类型转换为字节流

Python的struct.pack函数用于将数据按指定格式转换为字节流,常用于二进制数据处理、网络通信和文件操作。通过格式字符串定义数据类型(如i表示4字节整数)和字节序(<小端序,>大端序),可精确控制数据存储方式。例如struct.pack('<f',11.28125)会按IEEE754标准将浮点数转为小端字节序列。使用时需注意跨平台字节序一致性、格式字符串匹配,以及字符串需编码为字节。该函数是实现底层数据操作的关键工具。

2025-09-15 07:30:00 581

原创 BUUCTF ciscn_2019_n_11 wp

显示除了NX保护均未开启或完全启用 ,说明此题难度系数不高,而NX开启说明数据区域(如栈、堆)不可执行,是防止将 shellcode 写入数据区后跳转执行,所以可优先考虑不利用shellcode注入且简单直接的方式寻找漏洞。​:在二进制安全、漏洞利用、逆向工程等领域,经常需要直接操作内存中的原始字节数据。例如,x86/x64 常用小端序,而网络传输通常规定使用大端序(网络字节序)。函数PLT(过程链接表)条目的地址是0x4006C8(PLT中的代码会通过GOT(全局偏移表)委托给动态链接器,由其解析。

2025-09-14 22:21:41 1293

原创 pwn知识点——简单栈溢出问题中payload的底层实现分析

步骤正常函数返回流程 (以 x86-64 为例)栈溢出攻击劫持后的流程​1. 执行ret指令​CPU 执行ret指令。CPU 执行ret指令。​2. 弹出返回地址​从当前栈顶​(rsp指向的位置)弹出一个值(即当初call指令保存的返回地址)到RIP。从当前栈顶​(rsp指向的位置)弹出一个值(已被覆盖为你 payload 中的)到RIP。​3. 更新栈指针​rsp寄存器的值会 ​+8​(64位下,因为从栈中弹出了8字节)。rsp的值同样 ​+8。​4. 跳转执行​CPU 从。

2025-09-14 21:39:07 1062

原创 pwn知识点——命令篇

是功能强大的命令行调试器,用于动态分析程序行为,如跟踪执行流、查看内存、修改寄存器等,是漏洞分析的核心工具。在构造 ROP 链时,你需要将这些 gadgets 的地址按照执行顺序排列,覆盖到栈上。这些是二进制漏洞利用的核心工具,并非系统内置命令,但通常需要在 Linux 环境下安装和使用。增强插件,提供了更友好的界面和更强大的命令(如堆分析、漏洞利用辅助等),强烈建议安装使用。确认这是一个可以在Linux系统上运行的程序,是Pwn分析的主要对象。): 显示当前的调用栈(函数调用链),在分析崩溃时非常有用。

2025-09-12 11:30:30 1684

原创 BUUCTF PWN warmup_csaw_2016 wp

经过在左侧 Function name 中对调用函数的依次查找分析,不难发现在 sub_40060D 这个函数中出现了 system 命令的使用,因此我们只要利用gets函数使 system("cat flag.txt");对于gets函数的参数v5,可以发现其地址偏移量为40h,即64位,而rbp提示文件适配64位环境,那么rbp本身占8位,则总偏移量为 64+8 位;同时,sub_40060D 也提示 system 命令地址为0x40060D(不放心的话可以跳转到 sub_40060D 本身进行查看)

2025-09-11 23:18:27 328 1

原创 pwn知识点——面向栈溢出问题的python脚本知识点

Pwn脚本通常使用Python 3。以下是几个需要特别注意的语法点,它们在与二进制程序交互时至关重要:​bytes​:Python 3 中,字符串和字节是不同类型。与二进制程序交互时,我们主要处理。在字符串前加b前缀,如b"Hello",或使用.encode()方法将字符串转换为字节,例如。​​:构造 payload 时,常用操作符或format方法进行格式化,例如"A" * 64生成 64 个 'A' 用于填充。​struct模块的pack。

2025-09-10 17:44:25 1343

原创 pwn知识点——栈

​(LIFO, Last In First Out)的数据结构,在内存中从高地址向低地址生长。在漏洞利用中,偏移量指的是从你所能控制的缓冲区(如数组s)的起始地址,到你想覆盖的目标数据(这里就是返回地址)之间的字节距离。​:基指针寄存器,指向当前栈帧的底部,用于定位参数和局部变量。​ 的垃圾数据,之后写入的 8 字节数据才会覆盖到返回地址。的值通常保持固定,为局部变量和参数提供稳定的参考基点。​:指令指针寄存器,存放下一条要执行的指令的地址。,因为它不受栈操作的影响,能更可靠地定位目标数据。

2025-09-10 16:43:25 877

原创 BUUCTF PWN test_your_nc1 wp

这是一道CTF PWN入门题,主要流程为:下载测试文件并启动靶机,通过IDA静态分析发现程序直接提供了获取Shell的途径(system("/bin/sh"))。由于题目设计简单,无需复杂攻击,仅需使用nc命令连接靶机,获取Shell后通过ls和cat命令查找并读取flag文件。该题目旨在帮助新手熟悉CTF PWN的基本操作流程:分析程序、连接靶机、执行命令获取flag。靶机环境提供了安全可控的漏洞测试场景,无需担心影响真实系统。

2025-09-09 23:35:52 626

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除