avatar
Articles
32
Tags
35
Categories
7
首页
分类
时轴
标签
友链
关于
LogoRatherHardのBlog
首页
分类
时轴
标签
友链
关于

RatherHardのBlog

Scr1w 入组答辩-2026
Created2026-03-13|答辩|pwn
方向:pwn 掌握的内容(有些只掌握了一点点) 基础 汇编、C/C++、Python、Linux(掌握不足) 工具 IDA 掌握了的静态分析的基本技巧和一些快捷键,能够读懂汇编代码和 C 伪代码 checksec 会看看保护 readelf 会查符号表之类的,用的不多 objdump 之前会拿来看 setcontext 函数,不怎么用 seccomp-tools 看沙箱 tmux 掌握了基本的用法,但对一些能提高效率的快捷键掌握不足 pwndbg 掌握了基本的动态调试技巧,如步进、断点、运行至函数结束、查看映射、查看内存等,但对一些奇妙的指令掌握不足 pwninit 非常好懒人工具,使我的 glibc 旋转,一键 patchelf ,非常的好用 自从开始用这个,glibc_all_in_one 我就没再打开过 pwntool 掌握了基本的脚本编写技巧,但对一些神奇的自动化工具探索不足 libcdb 在没有给 libc 时这简直是救星,把能 leak 的都 leak 一遍直接开筛 docker 会 build 、 run 并把环境中的 libc 拿出来用,但是还没掌握在 docke...
Piggyback 输入流复用技巧
Created2026-03-10|pwn 技巧|Piggyback•pwn
示例 12345678910111213141516171819202122232425262728293031323334void free_trial() { char input_buf[32]; char crushed[32]; for (int i=0; i<16; i++) { printf("Enter a string to crush:\n"); fgets(input_buf, sizeof(input_buf), stdin); printf("Enter crush rate:\n"); int rate; scanf("%d", &rate); if (rate < 1) { printf("Invalid crush rate, using default of 1.\n"); ...
DiceCTF-2026-Quals 个人题解
Created2026-03-10|Contest|pwn•DiceCTF2026Quals•WriteUp
bytecrusher checksec code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091#include <stdio.h>#include <stdlib.h>#include <string.h>void admin_portal() { puts("Welcome dicegang admin!"); FILE *f = fopen("flag.txt", "r"); if (f) { char read; while ((read = fgetc(f)) != EOF) { ...
NSSCTF-CISCN-2022-house_of_cat 题解
Created2026-03-07|NSSCTF 题解|pwn•orw•栈迁移•heap•UAF•srop•setcontext•NSSCTF•largebin attack•IO_FILE•house of apple2
题目 题目链接 checksec seccomp 只能 orw ,但是限制 read 的 fd 为 0 ,于是可以先 close(0) 再 orw IDA main handle_command parse_command 需要逆向解析出指令格式 execute_command menu 套一层指令解析的菜单题 add 只能申请 largerequest 0x420~0x470 ,放入 largebin 的话, 0x420~0x430 一个 bin , 0x440~0x470 一个 bin edit edit 限制为两次,只能写 0x30 show 用于 leak delete 有 UAF 攻击思路 先分析出命令格式: COMMAND | r00tQWB QWXFarg 然后发现要 login 成为管理员,再 cat 拿菜单 12LOGIN | r00tQWB QWXFadminCAT | r00tQWB QWXF\xff 之后就是堆题 只能申请固定范围内的 largebin ,考察 largebin attack 技巧,而 edit_count 的限制让...
glibc-2.39 ret2gets 分析
Created2026-03-01|glibc 分析|pwn•glibc•ret2gets
重要结构 1typedef struct { int lock; int cnt; void *owner; } _IO_lock_t; 源码分析 gets 123456789101112131415161718192021222324252627282930313233343536373839char *_IO_gets (char *buf){ size_t count; int ch; char *retval; _IO_acquire_lock (stdin); ch = _IO_getc_unlocked (stdin); if (ch == EOF) { retval = NULL; goto unlock_return; } if (ch == '\n') count = 0; else { /* This is very tricky since a file descriptor may be in the no...
NSSCTF-LitCTF-2025-master_of_rop 题解
Created2026-02-28|NSSCTF 题解|pwn•NSSCTF•ret2gets
题目 题目链接 攻击思路 没啥好说,就是 ret2gets 但是本地和远程的系统环境不同,导致 leak tls 后情况不一致 远程挺简单的, libc 与 tls 的偏移固定 但我的本地环境 leak 出的是与 ld 相关的地址,这就需要利用 ld 中的 gadget 再去 leak libc exp 1234567891011121314151617181920212223242526272829303132333435363738394041from pwn import *context.log_level = 'debug'context.arch = 'amd64'context.terminal = ['tmux', 'splitw', '-h']debug = 0if debug: io = process('./pwn_patched')else: io = remote('node4.anna.nssctf.cn', 21...
NSSCTF-CISCN-2021-silverwolf 题解
Created2026-02-26|NSSCTF 题解|pwn•orw•栈迁移•heap•UAF•tcache attack•srop•setcontext•NSSCTF
题目 题目链接 checksec 全开 IDA main 菜单题 initbuf 有沙箱,需要 orw allocate 同一时间只能掌控一个 chunk ,最大为 0x78 edit show 用于 leak delete 有 UAF 攻击思路 挺棘手的,这道题目没有任何 leak pie 和 leak stack 的手段,只能 leak libc 和 leak heap 利用 UAF 和 tcache 机制我们可以轻松 leak heap ,并把 tcache_pthread_struct 扔进 unsorted_bin 以 leak libc ,同时还可以保留 tcache_pthread_struct 的写入权限 劫持到 tcache_pthread_struct 后有一个好处: 我们获得了 tcache_entries 的控制权,这意味着我们可以轻松指定下一次指定大小的 chunk 的分配地址,这有利于我们布置 rop 链以及接下来的 setcontext 技巧 由于我们没办法直接劫持程序流程,而且要实现 orw 的话直接劫持 free_hook 不够(参...
NSSCTF-西湖论剑-2022-babycalc 题解
Created2026-02-25|NSSCTF 题解|pwn•栈迁移•NSSCTF•ret2libc
题目 题目链接 IDA main calc 有一个 buf 相关的 off_by_null 以及由 i 操纵的 off_by_one ,无其余栈溢出漏洞 因此考虑在原栈上做短程迁移以执行 rop 链 要解一个 16 元方程组,图中有解出结果 got 用于泄露 libc 版本 stack 攻击思路 在原栈上做短程迁移以执行 rop 链,注意要在 rop 链前面布置足够长的 ret sled 以提高命中率 在正式攻击前先利用 got 表中信息泄露 libc 版本并获取 libc 正式攻击在两次读入内解决,两次均使用短程迁移 第一次读入泄露 libc 基址,并返回到 main 的开始,这是因为我们需要连续两次 push rbp 支撑后面的连续两次 leave ret 使得栈迁移不会崩溃 第二次 ret2libc 执行 system("/bin/sh") 即可 运行时要多尝试几次 exp 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748...
NSSCTF-GHCTF-2025-ret2libc2 题解
Created2026-02-25|NSSCTF 题解|pwn•栈迁移•NSSCTF•ret2libc•onegadget
题目 题目链接 checksec vmmap 这里的 0x3fe000 在远端貌似不存在,被坑了,,, IDA main func 栈溢出漏洞 got onegadget 需要用 gadget 操纵寄存器 攻击思路 第一次栈迁移到 got 上 leak 出 printf 的地址以获取 libc 基址 第二次栈迁移为 onegadget 执行提供栈空间 exp 123456789101112131415161718192021222324252627282930313233343536from pwn import *from onegadget_selector import *context.log_level = 'debug'context.arch = 'amd64'context.terminal = ['tmux', 'splitw', '-h']debug = 0if debug: io = process('./pwn_patched...
NSSCTF-强网杯-2022-devnull 题解
Created2026-02-24|NSSCTF 题解|pwn•栈迁移•NSSCTF•shellcode
题目 题目链接 vmmap 0x3fe000 处为 rw 之后 0x404000 会变成只读 IDA main vuln fgets 最多读取 n-1 个字节,最后一个字节会被设置为 \x00 有关于 fgets 的 off_by_null ,可将 fd 设置为 0 ,为标准输入流的文件描述符,从而启用下方的 read close(1) 会关闭标准输出流,之后不会有回显,但标准错误流还在 mywrite mprotect 设置 0x404000 为只读 关于 mprotect 有一个坑:其地址必须对齐 0x1000 gadget 用于操纵 rax 攻击思路 栈迁移难度不高 考虑用 mprotect 开 rwx 区域用于写入 shellcode ,但这需要将 rdx 设置为 7 ,这一点利用 mywrite("Thanks\n"); 刚好可以实现 然后利用 gadget 操纵 rax 以间接操纵 rdi 即可完成 mprotect 的调用(注意对齐 0x1000),然后写入 shellcode 即可 吐槽 tnnd 为什么不给 libc 版本,,,本...
12…4
avatar
RatherHard
随便写点东西
Articles
32
Tags
35
Categories
7
Follow Me
Announcement
Ciallo~(∠・ω< )⌒☆
Recent Posts
Scr1w 入组答辩-20262026-03-13
Piggyback 输入流复用技巧2026-03-10
DiceCTF-2026-Quals 个人题解2026-03-10
NSSCTF-CISCN-2022-house_of_cat 题解2026-03-07
glibc-2.39 ret2gets 分析2026-03-01
Categories
  • BUUCTF 题解11
  • Contest5
  • NSSCTF 题解9
  • glibc 分析3
  • pwn 技巧1
  • 基础知识2
  • 答辩1
Tags
house of apple2 N1Junior2026 glibc ret2csu HGAME2026 pwn NSSCTF DiceCTF2026Quals elf ret2libc srop ret2syscall stack 栈迁移 ISCTF2025 ret2gets largebin attack 堆溢出 ret2dlresolve BUUCTF 侧信道爆破 orw IO_FILE setcontext shellcode Piggyback heap tcache attack 函数指针 LACTF2026 onegadget WriteUp format UAF fastbin attack
Archives
  • March 2026 5
  • February 2026 14
  • January 2026 8
  • December 2025 3
  • October 2025 2
Website Info
Article Count :
32
Unique Visitors :
Page Views :
Last Update :
© 2025 - 2026 By RatherHardFramework Hexo 8.1.1|Theme Butterfly 5.5.1