Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/28/18 in all areas

  1. Domnul @Usr6 mi-a trasat sarcina sa scriu write-up-ul (modul in care am rezolvat problema). Asa ca hai sa incepem. Nivelul 0 Challenge-ul incepe cu o poza, jpeg: TheBodyguard.jpeg si cu un fisier script python (denumit de mine password_encoder.py) Mai intai analizam poza (eu am preferat binwalk) si observam ca are concatenat la sfarsit un fisier zip: Avand in vedere faptul ca avem si un script python ce pare sa codeze parola, putem presupune ca arhiva atasata este parolata. In mod normal binwalk incearca sa dezarhiveze/decomprime arhivele pe care le intalneste, dar in acest caz ne-ar incurca mai mult, asa ca vom rula binwalk --extract --carve TheBodyguard.jpg. Acum avem un dosar _TheBodyguard.jpg.extracted unde vom gasi un fisier 14757.zip (deoarece a fost gasit la offset-ul 0x14757). Daca vom incerca sa dezarhivam acest fisier zip, ne vom lovi de necesitatea unei parole. Nivelul 1 Acum vom analiza script-ul python, pentru a determina parola. La prima vedere pare cam complicat, asa ca vom incerca sa urmarim executia de la capat la inceput. Stim ca avem output-ul "You need this:201,203,165,195,165,191,205,187,181,191,173,187,173,187,193,199,", asa ca vom cauta codul ce genereaza aceasta linie; si il gasim pe ultimul rand al script-ului. Observam ca apeleaza functia enc2 cu avand ca prim parametru parola noastra, iar ca al 2-lea parametru rezultatul functiei enc2. Daca analizam corpul functiei enc2 observam ca aceasta functie concateneaza suma valorilor numerice a caracterelor de cele 2 string-uri primite ca parametrii (t1 si t2). Aici observam ca lungimea lui t1 trebuie sa fie mai mica sau egala cu lugimea lui t2. Altfel vom avea erori. Dar t2 este de fapt parola noastra codata cu enc1. Iar in enc1 observam ca facem ROT+3 (adica "a" devine "d", "b" devine "e", etc), doar daca este o litera mica; altfel sarim peste. Din datele de mai sus deducem ca parola este formata doar din litere mici, mai exact din 16 litere mici. Inarmati cu aceste date vom incerca o implementare in python (ipython mai exact): Mai intai extragem sumele de caractere ca un array de intregi (In [3] in ipython). Apoi generam toate sumele posibile ce pot rezulta din utilizarea functiei enc2 (ne intereseaza doar sumele ca valori numerice; argumentul functiei str din bucla for) si le stocam in dictionarul nostru (declarat in In [4]), impreuna cu literele aferente care au generat suma (o suma poate fi generata cu mai multe litere, cum poate fi observat in Out [8]). La sfarsit generam toate combinatiile posibile si obtinem 8 posibile parole, dar prima pare cea mai promitatoare. O utilizam si ne alegem cu un fisier prng, fara nici o extensie. Nivelul 2 Deoarece fisierul prng nu are nici o extensie, vom apela la utilitarul file pentru a identifica subiectul. Aflam ca este tot o arhiva de tip zip, asa ca il redenumim in prng.zip. In momentul in care incercam sa il dezarhivam, ne lovim de o parola si un indiciu sub forma altui script python: De aceasta data, scriptul se vrea un pseudo random number generator, ce isi genereaza seed-ul dintr-o structura python folosita pentru stocarea datei. Aceasta tip de date (named tuple) este strurata in felul urmator: pozitia 0: anul (accesabil si prin membrul tm_year) pozitia 1: luna (accesabil si prin membrul tm_mon) pozitia 2: ziua lunii (accesabil si prin membrul tm_day) pozitia 3: ora zile in format 24h (accesabil si prin membrul tm_hour) pozitia 4: minutele (accesabil si prin membrul tm_min) pozitia 5: secundele (accesabil si prin membrul tm_sec) pozitia 6: ziua saptamanii (accesabil si prin membrul tm_wday) pozitia 7: ziua din an (accesabil si prin membrul tm_yday) pozitia 8: decalajul aferent orei de vara (accesabil si prin membrul tm_isdst) Noi nu suntem interesati decat de pozitiile 0, 2, 3, 4, 5. Pe de alta parte, analizand functia password_gen, observam ca pozitiile pare din string-ul seed sunt pastrate (deci sunt cifre mereu) iar pozitiile impare sunt inlocuite cu litere din alfabet, aflate la pozitia respectiva (din punct de vedere lexicografic). De aici putem deduce ca parola noastra nu poate fi mai lunga de 27 de caractere (deoarece ultimul caracter poate fi o cifra). In continuare vom face niste supozitii legate de data folosita ca seed, si anume vom presupune ca este data crearii/modificarii fisierului din arhiva (sau foarte aproape). In fond si la urma urmei putem oricand sa facem brute-force pe parola cu un program asemanator John The Ripper, folosind ca masca pentru parola ?db?dc?df?dh?dj?dl?dn?dp?dr?dt?dv?dx?dz?d. Daca listam continutul arhivei (folosind unzip -l prng.zip) nu vom avea decat data, ora si minutele, nu si secundele. Ca atare vom face o listare mai completa a arhivei in speranta ca vom obtine o data completa, folosind comanda unzip -Z -l -v prng.zip: Inarmati cu aceste date, vom incerca un mic script python: Mai intai declaram o functie care va calcula acea variabila seed ce se afla la inceputul script-ului original, folosind un struct_time ca argument. Apoi copiem functia password_gen. In ultimul rand vom crea o variabila timestruct (de tip struct_time) ce va contine data fisierului, folosind functia strptime (adica vom aplica o functie de parsing pe string-ul cu data). Avand aceste detalii, apelam functia password_gen pentru a obtine seed-ul ce serveste ca parola. Din nefericire aceasta parola nu a functionat, dar putem presupune ca suntem pe aproape. Daca presupunem ca nu avem secundele corecte putem genera o lista de parole (unice) pentru fiecare secunda posibila: Incercand aceste variante, descoperim ca "2b1d3f2h" este parola potrivita, si obtimem un fisier ' .64'. Nivelul 3 Fisierul obtinut la pasul anterior nu pare prea darnic in a ne prezenta vre-un indiciu; utilitarul file nu ne poate spune decat ca avem de aface cu un fisier text ASCII cu terminatii de linie CRLF (adica Windows/DOS). La o analiza mai atenta, observam ca avem de aface cu un fisier cu mai multe linii, fiecare linie avand un numar diferit de spatii alble (caracterul ASCII 0x20). Din start am presupus ca avem de aface cu ceva base64 si ca numarul de spatii albe este relevant. Aici m-am blocat din cauza propriei prostii si neatentii, si am pierdut cam o saptamana (adica aproximativ 10 ore distribuite de-a lungul a 7 zile). Cand am inceput challange-ul, cel de-al 2-lea indiciu era deja postat. Asa ca m-am folosit de el. Indiciul decodat ne spune Inarmat cu aceste informatii, e timpul pentru niste experimente. Mai intai citim fisierul, si il spargem in linii de spatii si observam ca avem 12 linii. Acum sa vedem cate spatii albe avem pe fiecare linie (in poza In [5] si Out [6]). Deci nici un numar nu trece de valoarea 64, iar cum fisierul are extensia 64, indiciul a fost codat in base64 si ni s-a si precizat ca indiciul "este 2 indicii", probabil aceste numere sunt indecsii alfabetului base64. Construim o variabila (in poza este denumita alphabet la linia In [7]) in care vom stoca alfabetul base64 (vom folosi alfabetul clasic, A-Za-z0-9+/). Acum folosim sirul de numere de mai sus ca indecsi si... ne-am blocat. Obtinem S3+waDCjc4li, care decodat ne da urmatorul sir de bytes: Problema este extrem de simpla: noi avem niste lungimi de siruri de spatii albe, deci, pornesc de la 1, dar array-urile in python pornesc de la 0. Si asa am pierdul degeaba o saptamana, incercand tot felul de alfabete ezoterice, si cautand alte explicatii. Pana la urma l-am contactat pe @Usr6 care m-a trezit la realitate De indata ce corectam problema index-ului obtinem solutia.
    2 points
  2. https://comp.st/o3iG thank me later
    1 point
  3. Salutare, m-am gandit ca la cei mai incepatori cat si la cei mai avansati le-ar prinde bine o lista cu masini virtuale vulnerabile pentru a exersa/aprofundiza cunostintele de pentesting/hacking. Mai jos aveti o lista masinute cu, care sa va jucati in timpul liber 1. Kioptrix Level 1 2. Kioptrix Level 2 3. Kioptrix Level 3 4. Kioptrix Level 4 5. Kioptrix Level 5 6. Fristileaks 1.3 7. Stapler 1 8. VulnOS 1.2 9. SickOS 1.2 10. BrainPan 1 11. HackLab:Vulnix 12. /dev/random: Scream 13. PwnOS 2.0 14. SkyTower 15. Mr. Robot 16. Pwnlab init 17. IMF 18. Hacking Albania 19. Tr0ll 1 20. Tr0ll 2 21 Lord Of The Root 22. Pegasus 23. PwnOs 1.0 24. DC 416 25. Hackfest 2016: Quaoar 26. Hackfest 2016: Orcus 27. Hackfest 2016: Sedna 28. Hollynix 1 29. Hollynix 2 30. Necromancer 31. SpiderSec 32. Wallabys Nightmare 33. Booby 1 34. /dev/random: Sleepy 35. Droopy V0.2 36. Webgoat 37. Multilidae Aici aveti linkurile la cateva din ele: Kioptrix: Level 1 (#1) https://www.vulnhub.com/entry/kioptrix-level-1-1,22/ Kioptrix: Level 1.1 (#2) https://www.vulnhub.com/entry/kioptrix-level-11-2,23/ Kioptrix: Level 1.2 (#3) https://www.vulnhub.com/entry/kioptrix-level-12-3,24/ Kioptrix: Level 1.3 (#4) https://www.vulnhub.com/entry/kioptrix-level-13-4,25/ Kioptrix: 2014 https://www.vulnhub.com/entry/kioptrix-2014-5,62/ FristiLeaks: 1.3 https://www.vulnhub.com/entry/fristileaks-13,133/ Stapler: 1 https://www.vulnhub.com/entry/stapler-1,150/ VulnOS: 2 https://www.vulnhub.com/entry/vulnos-2,147/ SickOs: 1.2 https://www.vulnhub.com/entry/sickos-12,144/ Brainpan: 1https://www.vulnhub.com/entry/brainpan-1,51/ HackLAB: Vulnix https://www.vulnhub.com/entry/hacklab-vulnix,48/ /dev/random: scream https://www.vulnhub.com/entry/devrandom-scream,47/ pWnOS: 2.0 https://www.vulnhub.com/entry/pwnos-20-pre-release,34/ SkyTower: 1 https://www.vulnhub.com/entry/skytower-1,96/ Mr-Robot: 1 https://www.vulnhub.com/entry/mr-robot-1,151/ PwnLab: init https://www.vulnhub.com/entry/pwnlab-init,158/ IMF https://www.vulnhub.com/entry/imf-1,162/ Webgoat https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project Multilidae https://www.owasp.org/index.php/OWASP_Mutillidae_2_Project Daca mai stiti vreuna care nu este pe lista, spuneti si o adaugam. Have fun xD
    1 point
  4. https://labs.strava.com/heatmap/#2.98/79.67014/43.32969/hot/all
    1 point
  5. Aceasta metoda are si dezavantaje majore in opinia mea: poti obtine controlul conturilor create in modul asta relativ usor.
    1 point
  6. ce's cu fufele alea ... ce kkt coding e ala cand tu intr-0 functie ai vreo 3 else-uri
    1 point
  7. Tensorflow e setat pe GPU. Nu trebuie sa scrii nimic diferit (din cate stiu) sa mearga pe CPU/GPU. Singura diferenta e ca e mai enervant sa instalezi pe GPU din cauza versiunilor de Cuda si Cudnn dar merge mult mai repede (Un alt dezavantaj mare ar fi ca merge doar pe placi Nvidia). Cat despre tutoriale, uita-te pe site-ul lor (link) si/sau pe youtube(Google's machine learning series, sentex's series) si/sau citeste din carti (Nu este neaparat din tensorflow dar este despre machine learning in general: link). Trebuie sa inveti totusi niste matematica sa intelegi ce se intampla si de ce.
    1 point
  8. Cumpar BTC !!! update// a incercat cineva bancomatul bitcoinromania de la piata unirii ? aveti idee daca se poate cumpara de acolo si sume mai mari gen 5k euro ?
    1 point
  9. Si vrei sa te credem pe cuvant cu 16 posturi ? Apropo pentru numere de telefon nu necesita cumpararea de numere ( puteti obtine cate numere doriti free ) PM me , si va ofer solutie. Atentie la ce cumparati , este sfat. Nu vand nimic nu ma intereseaza dar aveti grija pe ce platiti 1-2-3-4-5-6-7-8-9-10 euro per cont. Am sa va indrum sa vi-le faceti singuri , cu tot cu numar de telefon. Sau cred ca am sa fac un tutorial ca sa nu mai vad la market place doar vanzare de conturi de facebook.
    -1 points
  10. Eu vand cont adsense cu 50 euro deja castigati ,pret fix 500 euro.Nu comentati aiurea va rog.Nu negociez.Contul este facut de pe teritoriul Italiei are 4 luni si este verificat din toate punctele de vedere.Nu este negociabil deci nu deranjati inutil.
    -1 points
×
×
  • Create New...