- 博客(65)
- 收藏
- 关注
原创 buuctf-pwn [极客大挑战 2019]Not Bad(orw+jmp)题解(学习过程持续更新)
本文记录了一次PWN题的自学过程,目标为64位无保护程序。通过IDA64分析发现存在栈溢出(0x18字节),且通过mmap申请了可写可执行内存。利用jmp_rsp跳转至shellcode区域,结合orw(read、open、write)攻击链,使用shellcraft.read读取flag,最终通过ROP链执行shellcode获取flag。脚本基于pwnchecksecpwn检测与gadget定位,实现完整exploit。
2026-10-28 21:36:15
179
原创 buuctf-pwn [NewStarCTF 2023 公开赛道]orw&rop(shellcode+orw)题解(学习过程持续更新)
摘要:本文记录了一次 pwn 二进制漏洞利用的完整学习过程。通过 checksec 确认目标为 64 位程序,开启了 Canary 和 NX 保护;随后使用 IDA64 逆向分析,发现程序通过 mmap 分配了一块可读可写可执行的 4096 字节内存,并存在 printf 格式化字符串漏洞和 read 栈溢出漏洞。利用格式化字符串泄露 canary 与 libc 地址,再借助栈溢出构造 ROP 链调用 read 函数,将 orw shellcode 写入可执行内存区域并跳转执行,最终完成利用。
2026-09-20 21:03:49
353
原创 buuctf-pwn ciscn_2019_sw_1(32位只有一次格式化机会)题解(学习过程持续更新)
摘要:本文记录了一道 32 位 PWN 格式化字符串漏洞题目的完整解题过程。题目开启了 NX 保护,存在一次 printf 格式化字符串漏洞,且程序内置 system 函数但没有 "/bin/sh" 字符串。解题思路是:第一次利用格式化字符串漏洞将 fini_array 改写为 main 函数地址,同时将 printf@got 改写为 system@plt,从而获得第二次 printf 机会;第二次输入 "/bin/sh" 字符串触发 system 调用,最终获取 flag。
2026-09-19 21:03:01
325
原创 buuctf-pwn PWN8题解(学习过程持续更新)
摘要:本文记录了一道 pwn 栈溢出题目的完整解题过程。首先通过 checksec 查看保护机制,确认目标为 64 位文件且开启了 NX 保护;随后使用 IDA64 反编译分析程序逻辑,发现可利用 buf 覆盖 nbytes 变量实现栈溢出。接着通过 ROPgadget 查找 pop rdi; ret 等 gadget,利用 ret2libc 思路泄露 read 函数真实地址,进而计算出 system 函数和 "/bin/sh" 字符串地址,最终构造 payload 获取 shell 并读取 flag。
2026-09-17 22:09:02
253
原创 buuctf-pwn [NewStarCTF 2023 公开赛道]stack migration(64位栈迁移)题解(学习过程持续更新)
摘要:本文记录了一道 pwn 栈迁移题目的完整解题过程。题目为 64 位程序且开启了 NX 保护,存在 read 栈溢出漏洞,但溢出长度仅 16 字节,无法直接覆盖返回地址,因此采用栈迁移思路。通过两次栈迁移,第一次利用 printf 的 %p 泄露 read 函数真实地址,进而计算出 system 函数和字符串 "/bin/sh" 的地址;第二次构造 system("/bin/sh") 获取 shell,最终成功拿到 flag。
2026-09-17 19:49:44
522
原创 buuctf-pwn hahapwn(canary+orw)题解(学习过程持续更新)
摘要:本文记录了一次基于格式化字符串漏洞和栈溢出漏洞的 pwn 题目解题过程。通过 printf 格式化字符串漏洞泄露 canary 与 libc 基址,再利用 read 栈溢出漏洞构造 ORW(open、read、write)链,最终读取并输出 flag。文中详细展示了 gdb 调试定位参数偏移、筹备 ROP 链所需寄存器与 syscall 地址,以及完整 exp 的编写与运行过程。
2026-09-14 22:10:48
398
原创 buuctf-pwn jarvisoj_level5(64位ret2libc)题解(学习过程持续更新)
摘要:本文记录一次 pwn 入门题目的完整解题过程。题目开启了 NX 保护,存在明显的 read 栈溢出漏洞,且未提供 system 函数、/bin/sh 字符串和 libc 文件。作者通过 ROPgadget 查找 pop 指令,利用 write 函数泄露 write@got 中的真实地址,进而计算 libc 基址并推导出 system 函数和 /bin/sh 的地址,构造 ROP 链完成攻击,最终获取 flag。
2026-09-08 21:07:58
491
原创 buuctf-pwn bypwn(ret2shellcode)题解(学习过程持续更新)
摘要:本文记录了一道 pwn 入门题的完整解题过程。题目文件未开启任何保护机制,通过 IDA 逆向分析发现 scanf 栈溢出漏洞,利用 printf 输出 rbp 地址来泄露栈地址,进而将 shellcode 写入栈中并覆盖返回地址,最终执行 shellcode 获取 shell 并读取 flag。
2026-09-08 18:13:33
480
原创 buuctf-pwn mrctf2020_easy_equation(64位fmt)题解(学习过程持续更新)
摘要:本文记录了一道 pwn 格式化字符串漏洞题目的完整解题过程。文章从查看文件保护机制开始,通过 IDA 逆向分析定位到 printf 格式化字符串漏洞,并计算出将 judge 变量改写为 2 即可获得 shell。随后详细演示了利用格式化字符串漏洞构造 payload 的步骤,包括参数偏移分析、地址占位技巧以及最终 exp 的编写与执行,最终成功获取 flag。
2026-09-07 21:26:54
401
原创 buuctf-pwn picoctf_2018_shellcode(ret2shellcode)题解(学习过程持续更新)
摘要:本文记录了一次 pwn 入门题目的完整解题过程。首先通过 checksec 查看文件保护机制,确认这是一个 32 位且未开启任何保护的程序;随后将文件拖入 IDA 进行逆向分析,理解 call vuln 与 call eax 两条关键指令的区别,并确定通过向缓冲区输入 shellcode 来利用 call eax 执行恶意代码的思路;最后编写 exp.py 脚本,在虚拟机中运行并成功获取 flag。
2026-09-07 20:20:51
541
原创 buuctf-pwn wdb_2018_3rd_soEasy(ret2shellcode)题解(学习过程持续更新)
摘要:本文记录一次基于栈溢出的 pwn 入门实战过程。通过 checksec 确认目标为 32 位且未开启任何保护机制的文件,随后使用 IDA 反编译定位漏洞点,发现程序会打印缓冲区起始地址。利用该信息,将 shellcode 写入缓冲区并覆盖返回地址为缓冲区起始地址,最终执行 shellcode 获取 shell,成功读取 flag。
2026-09-06 17:50:25
441
原创 buuctf-pwn wustctf2020_closed(文件描述符)题解(学习过程持续更新)
摘要:本文记录了一道 Linux 文件描述符重定向相关的 CTF 题目解题过程。题目通过关闭标准输出(close(1))和标准错误(close(2))来隐藏 flag,解题关键在于理解文件描述符 0、1、2 默认都指向当前终端,因此执行 exec 1>&0 将标准输出重定向到标准输入,即可恢复输出并查看 flag。
2026-09-06 17:24:52
390
原创 buuctf-pwn pwnable_start(ret2shellcode)题解(学习过程持续更新)
摘要:本文记录了一道 32 位无保护 PWN 题的完整解题过程。通过 checksec 确认文件未开启任何保护机制后,使用 IDA 逆向分析程序逻辑,发现程序先调用 write 输出提示信息,再调用 read 读取输入,存在明显的栈溢出漏洞。由于系统开启 ASLR 导致栈地址随机化,解题思路是先溢出覆盖返回地址,跳回 mov ecx,esp 处再次调用 write 泄露栈地址,再手动修正偏移算出缓冲区地址,最终跳转栈执行 shellcode 获取 shell,并成功读取 flag。
2026-09-05 22:03:42
366
原创 buuctf-pwn bjdctf_2020_babyrop2(canary保护)题解(学习过程持续更新)
摘要:本文记录一次 pwn 入门题目的完整解题过程。题目开启了 Canary 和 NX 保护,通过 IDA 逆向分析发现 gift 函数中存在格式化字符串漏洞,可借此泄露 canary;vuln 函数中存在栈溢出漏洞,可先调用 puts 泄露 puts 函数真实地址,进而计算 system 函数和 /bin/sh 的地址,再返回 vuln 函数二次利用栈溢出构造 system("/bin/sh") 获取 shell,最终读取 flag。
2026-09-05 16:56:24
465
原创 buuctf-pwn [HarekazeCTF2019]baby_rop2(64位ret2libc)题解(学习过程持续更新)
摘要:本文记录了一道 pwn 栈溢出题的完整解题过程。通过 checksec 确认程序为 64 位且开启 NX 保护,利用 IDA 反编译发现 read 函数存在栈溢出漏洞。由于程序未内置 system 函数和 /bin/sh,采用 ROP 思路,先通过 printf 泄露 read@got 中 read 函数的真实地址,进而计算出 system 函数和 /bin/sh 的地址,最终构造 payload 获得 shell 并读取 flag。
2026-09-04 20:11:08
452
原创 buuctf-pwn PWN4(双引号的转义缺陷)题解(学习过程持续更新)
摘要:本文记录了一道 pwn 入门题的完整解题过程。通过 checksec 确认目标为 64 位程序且开启了 canary 与 NX 保护,随后使用 IDA64 反编译定位到 echo() 函数,利用其格式化字符串输出双引号时的转义缺陷,构造闭合引号并注入 "/bin/sh" 命令,最终通过 Python 脚本发送菜单选项与恶意输入获得 shell,成功读取 flag。
2026-09-04 19:19:52
380
原创 buuctf-pwn PWN2(整数溢出)题解(学习过程持续更新)
摘要:本文记录一次基于整数溢出漏洞的 pwn 入门实战。通过 checksec 确认目标为 64 位文件且开启 NX 保护后,使用 IDA64 逆向分析发现程序存在有符号整型与无符号整型比较不一致的问题:当输入 nbytes=2**31 时,有符号判断认为其小于等于 10,而无符号转换后实际读取长度足够大,从而触发栈溢出。随后利用 ROPgadget 找到 ret 指令地址用于栈对齐,并覆盖返回地址为 backdoor 函数地址,最终成功获取 shell 并读取 flag。
2026-09-03 10:20:52
308
原创 buuctf-pwn PWN1题解(学习过程持续更新)
摘要:本文记录一次 pwn 入门题目的完整解题过程。首先通过 checksec 查看文件保护机制,确认目标为 64 位程序且开启了 NX 保护;随后使用 IDA64 反编译分析程序逻辑,定位到关键函数 Serialization(),并梳理出该函数返回 1 所需满足的字符条件;最后编写 exp.py 攻击脚本,构造符合要求的输入数据,成功获取 shell 并读取 flag。
2026-09-03 09:52:28
413
原创 buuctf-pwn inndy_echo(32位fmt)题解(学习过程持续更新)
摘要:本文记录一次 pwn 格式化字符串漏洞的实战利用过程。通过 checksec 确认目标为 32 位程序且开启 NX 保护,随后在 IDA 中定位到 printf(&s) 格式化字符串漏洞,并发现程序内置 system 函数。利用该漏洞将 printf@got 改写为 system 地址,构造 system("/bin/sh") 获取 shell,最终成功读取 flag。
2026-09-02 17:58:52
409
原创 buuctf-pwn ciscn_2019_n_5题解(学习过程持续 更新)
摘要:本文记录一次基于 ret2libc 手法的 pwn 入门解题过程。首先通过 checksec 查看保护机制,确认目标为 64 位程序且栈可执行;随后在 IDA 中定位到 gets 栈溢出漏洞,并发现 name 位于不可执行的 bss 段,因此放弃 shellcode 注入,改用 ret2libc 思路。通过 ROPgadget 获取 pop rdi; ret 与 ret 地址,编写 exp.py 先泄露 puts 函数真实地址,再构造 system("/bin/sh") 调用获得 shell,最终成功
2026-09-02 17:30:24
338
原创 buuctf-pwn picoctf_2018_can_you_gets_me(32位ret2syscall)题解(学习过程持续更新)
摘要:本文记录自学pwn题解过程。题目为32位静态链接程序,开启NX保护。通过IDA发现gets栈溢出,填充0x18+4字节后劫持返回地址。因无/bin/sh,采用ret2syscall手法:先用ROP调用read写入/bin/sh到bss段(0x80EAFC6),再调用execve获取shell。
2026-09-01 11:38:42
277
原创 buuctf-pwn judgement_mna_2016(32位fmt)题解(学习过程持续更新)
摘要:本文记录了一道 pwn 格式化字符串漏洞题目的完整解题过程。题目为 32 位程序,开启了 Canary 和 NX 保护,且不存在栈溢出,因此无法通过常规跳转获取 flag。作者通过分析发现程序中存在 printf(&format) 格式化字符串漏洞,并利用该漏洞结合 gdb 调试定位 flag 在栈中的参数位置,最终成功泄露 flag。文章还说明了本地与远程环境(Ubuntu 16)参数位置存在偏差,远程需使用 %28$s 的实战细节。
2026-09-01 10:52:23
329
原创 buuctf-pwn [NewStarCTF 公开赛赛道]ret2csu1题解(学习过程持续更新)
摘要:本文记录了一道基于 ret2csu 思路的 pwn 题目解题过程。题目为 64 位程序且开启 NX 保护,通过 IDA 分析汇编代码,利用程序提供的 gift1、gift2、gift3 三个“礼物”以及 __libc_csu_init 中的 gadget 完成 ROP 链构造,最终调用 sys_execve 执行 /bin/cat /flag 获取 flag。文中详细讲解了栈偏移计算、寄存器传参方式以及 exp.py 攻击脚本的编写要点。
2026-08-31 21:06:50
474
原创 buuctf-pwn jarvisoj_tell_me_something题解(学习过程持续更新)
摘要:本文记录一次 pwn 入门题的完整解题过程。首先通过 checksec 查看文件保护机制,确认目标为 64 位程序且开启了 NX 保护;随后使用 IDA64 反汇编分析,定位到 read 函数存在栈溢出漏洞。通过查看汇编代码发现程序未将 rbp 压栈,因此只需填充 0x88 字节垃圾数据即可覆盖返回地址。最后利用程序中的后门函数 good_game,将返回地址覆盖为其地址(0x400620),编写 exp.py 攻击脚本成功获取 flag。
2026-08-31 11:01:19
414
原创 buuctf-pwn wdb_2018_2nd_easyfmt题解(学习过程持续更新)
摘要:本文记录一次基于格式化字符串漏洞的 pwn 题目本地攻击思路。文章先通过 checksec 确认目标为开启 NX 保护的 32 位程序,再借助 IDA 反编译定位到 printf(&buf) 格式化字符串漏洞;随后利用该漏洞泄露 puts 函数真实地址以推算 system 地址,并将 printf@got 改写为 system 地址,最终发送 "/bin/sh" 获取 shell。文中同时说明了远程攻击因 libc 版本不匹配未能打通的原因,并附上本地攻击脚本的完整调试过程。
2026-08-30 11:34:18
324
原创 buuctf-pwn picoctf_2018_got_shell题解(学习过程持续更新)
摘要:本文记录一次 pwn 入门题目的解题过程。通过 checksec 查看保护机制,确认目标为 32 位程序且开启 NX 保护;随后使用 IDA 反编译分析代码逻辑,发现程序存在可将第二次输入写入指定内存位置的漏洞,据此将 exit@got 改写为 win 函数地址,从而在调用 exit(1) 时跳转获取 shell,最终成功读取 flag。
2026-08-30 10:18:18
375
原创 buuctf-pwn xdctf2015_pwn200题解(学习过程持续更新)
摘要:本文记录一次 pwn 栈溢出漏洞利用的完整过程。通过 checksec 确认目标为开启 NX 保护的 32 位程序,使用 IDA 逆向分析定位到 read 栈溢出点,需要填充 0x6c+4 字节垃圾数据覆盖返回地址。由于程序未提供 system 函数和 /bin/sh,采用泄露 write 函数真实地址的方式,结合固定偏移计算出 system 与 /bin/sh 的地址,最终构造 payload 获取 shell 并读取 flag。
2026-08-29 17:49:03
410
原创 buuctf-pwn [NewStarCTF 2023 公开赛道]puts or system?题解(学习过程持续更新)
64位格式化字符串漏洞,改写puts@got为system函数地址
2026-08-29 17:02:45
379
原创 buuctf-pwn bbys_tu_2016题解(学习过程持续更新)
payload:填充(0x14+4)的垃圾数据至return address,然后用printfFlag函数的地址覆盖返回地址。可以看到我们输入的AAAA在0xffffcf44处,距离ebp(0xffffcf58)偏移0x14字节。将文件拖入ida,按F5将汇编代码转换成c语言代码,得到。可以看到这是一个32-bit的文件,NX保护开启。可以看到这是一个后门函数,可以得到flag。nano exp.py 开始写攻击脚本。进入printFlag函数,得到。n 回车 直到可以输入数据。
2026-08-27 19:08:23
436
原创 buuctf-pwn picoctf_2018_rop chain题解(学习过程持续更新)
摘要:本文记录了一个32位程序的栈溢出漏洞利用过程。通过IDA分析发现gets()函数存在溢出点,需填充0x18+4数据覆盖返回地址。利用思路是:先调用win_function1设置win1=1;再调用win_function2(0xBAAAAAAD)设置win2=1;最后调用flag(0xDEADBAAD)获取flag。作者编写了Python脚本成功完成攻击,最终通过cat flag命令获得目标内容。整个过程展示了从漏洞分析到利用的完整流程。
2026-08-24 11:56:41
458
原创 buuctf-pwn axb_2019_fmt32题解(学习过程持续更新)
本文记录了一个格式化字符串漏洞利用的自学过程。通过分析32位程序的保护机制,发现NX保护开启但没有system函数。利用printf的格式化字符串漏洞分三步实现攻击:1)泄露puts函数的真实地址计算system地址;2)用fmtstr_payload将printf@got改写为system地址;3)发送";/bin/sh\x00"获取shell。过程中遇到Libc版本问题,最终采用Ubuntu16.04的libc-2.23库的固定偏移值成功获取flag。文章展示了从漏洞分析到利用脚本编写的完整思路。
2026-08-23 21:36:10
481
原创 buuctf-pwn not_the_same_3dsctf_2016题解(学习过程持续更新)
本文记录了一个栈溢出漏洞利用的实践过程。通过分析32位程序发现存在gets函数漏洞,需填充0x2d字节数据覆盖返回地址。利用IDA找到get_secret函数地址(0x80489a0)和存储flag的地址(0x80eca2d),构造payload覆盖返回地址并调用write函数输出flag。最终执行exp成功获取flag,演示了基本的栈溢出利用技术。
2026-08-22 17:52:42
334
原创 buuctf-pwn picoctf_2018_buffer overflow 2题解(学习过程持续更新)
这是一个关于32位程序栈溢出漏洞利用的简要记录。通过checksec查看程序保护机制(NX开启),用IDA分析发现vuln()函数存在gets栈溢出漏洞。目标是覆盖返回地址跳转到win函数,并设置参数a1=0xDEADBEEF和a2=0xDEADC0DE来获取flag。整个过程包括:分析保护机制、逆向定位漏洞点、构造利用链(覆盖返回地址+参数设置),最后通过Python脚本完成漏洞利用并成功获取flag。
2026-08-22 16:49:53
321
原创 buuctf-pwn ciscn_2019_ne_5题解(学习过程持续更新)
可以看到第一次让我们输入s1,如果strcmp(s1, "administrator")不等于0,也就是如果s1不等于administrator,就会结束程序,所以第一次得输入administrator。可以看到我们在AddLog里可以让我们128字节的数据,然后这个数据会作为GetFlag函数的参数,然后在GetFlag函数内复制给dest,然而dest距离ebp偏移只有0x48,远小于128,所以可以发生栈溢出。因此我们只需要在AddLog函数里输入0x48+8的垃圾数据,再拼接我们的ROP链。
2026-08-22 11:42:33
535
原创 buuctf-pwn mrctf2020_easyoverflow题解(学习过程持续更新)
摘要:该文章记录了一个二进制安全自学过程,通过分析名为pwnchecksecpwn的64位程序,发现其具有FULLRELRO、Canary、NX和PIE等保护机制。使用IDA64反编译后,发现程序通过check函数验证输入,若输入等于fake_flag('n0t_r3@11y_f1@g')则可获取shell。利用main函数中gets函数的栈溢出漏洞,填充0x30字节后覆盖v5为fake_flag,成功利用漏洞获取flag。文章包含从分析到漏洞利用的完整过程。
2026-08-22 10:19:38
431
原创 buuctf-pwn ciscn_2019_s_9题解(学习过程持续更新)
【摘要】本文记录了一道32位无保护机制的PWN题解题过程。通过IDA分析发现fgets函数存在栈溢出漏洞,但缺乏system函数和/bin/sh。利用hint函数中的jumpesp指令执行自定义的短shellcode。构造的payload先用0x24字节的'a'覆盖返回地址,使esp指向jumpesp后的shellcode起始位置。通过计算(0x24+4)确定sub esp,40的偏移量,最终成功实现shellcode调用并获取flag。解题过程涉及栈溢出利用和手动shellcode编写技巧。
2026-08-20 21:18:52
463
原创 buuctf-pwn [OGeek2019]babyrop题解(学习过程持续更新)
本文是一篇关于二进制漏洞利用的自学笔记,主要分析了一个32位程序的保护机制和漏洞利用过程。作者通过逆向分析发现程序存在随机数验证和缓冲区溢出漏洞:首先利用空字符绕过strncmp验证,然后通过构造特定输入参数触发栈溢出。攻击过程分为三个阶段:1)发送特殊payload绕过验证;2)泄露libc地址;3)构造system("/bin/sh")获取shell。由于LibcSearcher无法匹配正确的库版本,作者通过系统版本推测使用了Ubuntu 16.04的libc-2.23库,最终成功获取shell
2026-08-19 22:04:21
436
原创 buuctf-pwn mrctf2020_shellcode题解(学习过程持续更新)
本文记录了分析64位ELF文件的安全机制及漏洞利用过程。通过checksec发现文件开启PIE和FULLRELRO保护,IDA分析显示程序存在栈溢出漏洞:读取用户输入到栈缓冲区后直接跳转执行。利用思路是向缓冲区写入shellcode获取shell。文中解释了关键汇编指令(如mov、lea的区别)和栈帧布局(buf=rbp-0x410),最终通过构造exp.py成功获取flag。作者声明分析过程为自学笔记,可能存在不专业之处。
2026-08-18 21:23:36
400
原创 buuctf-pwn bjdctf_2020_babyrop题解(学习过程持续更新)
这篇笔记记录了64位ELF文件的漏洞利用过程。通过checksec确认NX保护开启后,在IDA中分析发现read函数存在栈溢出漏洞。由于缺少system和/bin/sh,作者采用ROP技术:先利用puts泄露libc地址,计算出system和/bin/sh的真实地址,最终构造ROP链执行system("/bin/sh")获取shell权限。文中包含了关键步骤的gadget查找(pop rdi; ret)和攻击脚本编写过程,最终成功获取flag。整个流程展示了从漏洞分析到利用的完整思路。
2026-08-18 20:23:13
384
原创 buuctf-pwn wustctf2020_getshell_2题解(学习过程持续更新)
该文记录了自学pwn题的过程,通过checksec分析32位程序的NX保护机制,使用IDA发现read函数存在栈溢出漏洞。由于溢出空间不足无法直接调用system@plt,转而利用程序内部的call_system函数(地址0x8048529)和"sh"字符串(地址0x8048670)构造ROP攻击链。最终编写exp脚本成功获取flag,演示了绕过NX保护的ROP技术应用。文章以非专业视角分享学习心得,欢迎指正不足之处。
2026-08-17 18:22:49
421
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅