Hackershcool level13 = )

 

해커스쿨 FTZ 레벨13 [BOF]

 

 

 

이번 문제는 11, 12번과 역시 같은 구조이지만 변수 i의 값이 0x1234567이 아니라면 메시지 출력 후 프로그램이 종료되어버리는 특징이 있다. 따라서 이번에는 변수 i 부분에는 01234567이라는 값을 넣어주고 나머지 부분은 dummy로 오버플로우 시켜서 ret값에 도달하면 된다.

버퍼1 + \x67\x45\x23\x01 + 버퍼2 + ebp + Ret 과 같은 구조로 코드를 구성해야하기 때문에 변수 i까지의 거리를 구해야한다.

 

0x080484a0 <main+0>: push   %ebp
0x080484a1 <main+1>: mov    %esp,%ebp
0x080484a3 <main+3>: sub    $0x418,%esp
0x080484a9 <main+9>: movl   $0x1234567,0xfffffff4(%ebp)

0x080484b0 <main+16>: sub    $0x8,%esp
0x080484b3 <main+19>: push   $0xc16
0x080484b8 <main+24>: push   $0xc16
0x080484bd <main+29>: call   0x8048370 <setreuid>
0x080484c2 <main+34>: add    $0x10,%esp
0x080484c5 <main+37>: cmpl   $0x1,0x8(%ebp)
0x080484c9 <main+41>: jle    0x80484e5 <main+69>
0x080484cb <main+43>: sub    $0x8,%esp
0x080484ce <main+46>: mov    0xc(%ebp),%eax
0x080484d1 <main+49>: add    $0x4,%eax
0x080484d4 <main+52>: pushl  (%eax)
0x080484d6 <main+54>: lea    0xfffffbe8(%ebp),%eax
0x080484dc <main+60>: push   %eax
0x080484dd <main+61>: call   0x8048390 <strcpy>

0x080484e2 <main+66>: add    $0x10,%esp
0x080484e5 <main+69>: cmpl   $0x1234567,0xfffffff4(%ebp)
0x080484ec <main+76>: je     0x804850d <main+109>
0x080484ee <main+78>: sub    $0xc,%esp
0x080484f1 <main+81>: push   $0x80485a0
0x080484f6 <main+86>: call   0x8048360 <printf>
0x080484fb <main+91>: add    $0x10,%esp
0x080484fe <main+94>: sub    $0x8,%esp
0x08048501 <main+97>: push   $0xb
0x08048503 <main+99>: push   $0x0
0x08048505 <main+101>: call   0x8048380 <kill>
0x0804850a <main+106>: add    $0x10,%esp
0x0804850d <main+109>: leave 
0x0804850e <main+110>: ret   
0x0804850f <main+111>: nop

 

위의 코드를 보면 main+3에서 1048바이트만큼 Buffer 공간을 할당해주고 있고 main+9, 54, 60, 61에서는 1234567이라는 값을 ebp-12번째에 넣어야 한다는 것을 알 수 있다.

 

 Ret = Egg Shell

 ebp = 4byte

Buffer

= 1048byte

Buf ① = 8byte

0x1234567 = 4byte

Buf ② = 1036byte

 

좌측의 표와 같이 스택이 구성되었고 공격 코드는 A*1036, \x67\x45\x23\x01, A*12, RET와 같은 구조로 짤 수 있다.

 

 

그 결과 성공적으로 Level14의 Password를 얻어낼 수 있었다.







'WarGame > Hacker School FTZ' 카테고리의 다른 글

해커스쿨 Level16  (0) 2013.03.31
해커스쿨 Level15  (0) 2013.03.30
해커스쿨 Level14  (0) 2013.03.29
해커스쿨 Level13  (1) 2013.03.28
해커스쿨 Level12  (0) 2013.03.27
해커스쿨 Level11  (0) 2013.03.25
  1. 초보해커 2015.03.18 13:24 신고

    ebp-12byte라는것은 어떻게 알 수 있는건가요?

+ Recent posts

티스토리 툴바