ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • lvl 09
    Wargame/HackerSchool FTZ 2019. 1. 11. 10:23

    → 힌트 정보 확인.




    → BOF 문제로 확인된다. 일단 소스가 오픈되어서 해당 소스를 바탕으로 컴파일한 후,  gdb로 디버깅한다.


    0x08048420 <main+0>:    push   ebp

    0x08048421 <main+1>:    mov    ebp,esp

    0x08048423 <main+3>:    sub    esp,0x28

    0x08048426 <main+6>:    and    esp,0xfffffff0

    0x08048429 <main+9>:    mov    eax,0x0

    0x0804842e <main+14>:    sub    esp,eax

    0x08048430 <main+16>:    sub    esp,0xc

    0x08048433 <main+19>:    push   0x8048554

    0x08048438 <main+24>:    call   0x8048350 <printf>

    0x0804843d <main+29>:    add    esp,0x10

    0x08048440 <main+32>:    sub    esp,0x4

    0x08048443 <main+35>:    push   ds:0x8049698 

    0x08048449 <main+41>:    push   0x28 //

    0x0804844b <main+43>:    lea    eax,[ebp-40]       buf            

    0x0804844e <main+46>:    push   eax buf

    0x0804844f <main+47>:    call   0x8048320 <fgets>

    0x08048454 <main+52>:    add    esp,0x10

    0x08048457 <main+55>:    sub    esp,0x4

    0x0804845a <main+58>:    push   0x2

    0x0804845c <main+60>:    push   0x804856a

    0x08048461 <main+65>:    lea    eax,[ebp-24]              buf2     

    0x08048464 <main+68>:    push   eax

    0x08048465 <main+69>:    call   0x8048330 <strncmp>

    0x0804846a <main+74>:    add    esp,0x10

    0x0804846d <main+77>:    test   eax,eax

    0x0804846f <main+79>:    jne    0x80484a6 <main+134>

    0x08048471 <main+81>:    sub    esp,0xc

    0x08048474 <main+84>:    push   0x804856d

    0x08048479 <main+89>:    call   0x8048350 <printf>

    0x0804847e <main+94>:    add    esp,0x10

    0x08048481 <main+97>:    sub    esp,0x8

    0x08048484 <main+100>:    push   0xbc2

    0x08048489 <main+105>:    push   0xbc2

    0x0804848e <main+110>:    call   0x8048360 <setreuid>

    0x08048493 <main+115>:    add    esp,0x10

    0x08048496 <main+118>:    sub    esp,0xc

    0x08048499 <main+121>:    push   0x804857a

    0x0804849e <main+126>:    call   0x8048310 <system>

    0x080484a3 <main+131>:    add    esp,0x10

    0x080484a6 <main+134>:    leave  

    0x080484a7 <main+135>:    ret



    → buf 변수의 값을 입력할 수 있고, 소스코드 상의 /bin/bash를 실행하려면 buf2 변수의 앞 2바이트를 'go'로 변경해야 한다. 즉 버퍼오버플로우를 일으켜야 한다.


    → 사용자 입력 값을 받는 변수는 buf이고, 위치는 ebp-40 이다. 그리고 buf2 변수의 위치는 ebp-24이다. buf2 변수의 앞 2바이트를 변경하기 위한 페이로드를 가정한 스택구조는 아래와 같이 그릴 수 있다.




    → 위의 페이로드를 실행하면, 문제를 해결할 수 있다.


    'Wargame > HackerSchool FTZ' 카테고리의 다른 글

    lvl 11  (0) 2019.01.13
    lvl 10  (0) 2019.01.12
    lvl 08  (0) 2019.01.10
    lvl 07  (0) 2019.01.10
    lvl 06  (0) 2019.01.10

    댓글

Designed by Tistory.