[exploits] buffer overflows

Buffer overflow-urile sunt un pas esential / cheie pentru a intelege ce inseamna exploiturile. Ele reprezinta nishte erori conceptuale atunci cand se scrie codul sursa al programului si se manifesta atunci cand se scrie in alte zone decat este destinat mai multa informatie decat poate incapea, astfel suprascriind in zonele adiacente. Cel mai bine voi explica in urmatorul exemplu:

  1 #include
  2 int test( int _a ) {
  3     char buff[ 32 ] ;
  4     int i = 0;
  5     for ( i = 0; i < 1024; i++ )
  6         buff[ i ] = 'A';
  7     return 0;
  8 }
  9
 10 int main( ) {
 11     printf( "enter in function\n" );
 12     int rett = test( 1 ) ;
 13     printf( "exit from function\n" );
 14     return 0;
 15 }

Continue reading [exploits] buffer overflows

[linux] generate core dump

Kernelul de linux este capabil de a scri asa numitele “core dump” in caz ca vreo aplicatie “crapa”. Acest dump contine informatii despre starea procesului in momentul cand a crapat. GDB poate citi astfel de dump-uri de core si a scoate informatii utile din el.

Majoritatea distributiilor de linux au aceasta facilitate dezactivata, pentru acestea este nevoie de a activa-o, astfel:

root@srv1:~# ulimit -c unlimited

aceasta comanda va activa crearea de dumpuri pentru shell-ul curent si toate procesele pornite din el. Data viitoare cand va crapa vreo aplicatie, mesajul “Segmentation fault” va fi modificat in “Segmentation fault (core dumped)” si in directoriul curent va fi creat un fisier “core” sau “core.pid” (fisier care si reprezinta core dump-ul).

Dupa ce este generat un fisier core, cu ajutoru gdb-ului se poate afla ce s-a intimplat in aplicatie. GDB se apeleaza :
gdb nume_executabil [core-file]
Cele mai bune informatii puteti sa le scoateti din stacktrace ( lista de functii in care s-a intrat pana la momentul crash-ului ) si deseori aceasta fiind indeajuns de a afla ce nu merge bine. Stacktrace-ul in gdb se afiseaza cu comanda : “bt“.
end.