|
Obiettivo: Ottenere la password per entrare ( senza cliccare su richiesta password :D ). Bene, una sera mi trovo davanti a questo sito che come vedete richiede una password per entrare.Vedo il link a "richiesta password" ma decido di scoprire io la password almeno per impegnare un po di tempo in una serata noiosa :) La prima cosa che faccio e' dare uno sguardo al codice sorgente della pagina: si nota subito che nella prima parte c'e' una funzione che calcola la password e controlla che sia corretta. Il pezzo di codice di cui sto parlando e' questo:
Questo pezzo di codice Javascript viene richiamato quando si clicca sul bottone per entrare. Chi se ne intende un po di programmazione, capisce subito cosa fa questo pezzo di codice... In poche parole calcola il prodotto dei codici ASCII della password che l'utente a inserito, e se equivale a quei due grandi numeri che si vedono dopo l'if permette all'utente di passare.Facciamo un esempio: ammettiamo che l'utente abbia inserito la parola "casa". Il codice prende il codice ASCII di ogni lettera e li moltiplica quindi in questo caso: 99 * 97 * 115 * 97 = 107121465 Quindi bisogna fare in modo da ottenere una parola i cui codici ASCII moltiplicati tra loro diano: 247598350272000000000 Ok ok... sembra difficile? Piu' che altro e' molto noioso. La prima cosa che dobbiamo fare e' scomporre questo numero gigantesco nei fattori che lo compongono. Se non avete un programma che lo faccia automaticamente, vi risparmio il lungo lavoro, che ho gia' fatto per voi, ed ecco qui la scomposizione di questo numero: 247598350272000000000 / 100 2475983502720000000 / 100 24759835027200000 / 100 247598350272000 / 100 2475983502720 / 2 1237991751360 / 2 618995875680 / 2 618995875680 / 2 154748968920 / 2 77374484460 / 2 38687242230 / 2 19343621115 / 3 6447873705 / 3 2149291235 / 7 307041605 / 5 61408321 / 13 4723717 / 23 205379 / 59 3481 / 59 59 / 59 1 Ok, adesso viene il lavoro vero e proprio. Bisogna combinare, moltiplicandoli, questi numeri tra loro, facendo in modo che diano come risultati codici ASCII di lettere minuscole, si minuscole perche' tutta la password veniva convertita in lettere minuscole alla linea 2. Quindi se otteniamo una lettera maiuscola che puo' avere come ASCII 68 (D) quando verra' convertita in minuscola avra' un altro codice ASCII che modifichera' il risultato della moltiplicazione. Il codice ASCII della lettera 'a' e' 97 quello della 'z' 122, quindi tutti i valori che otteniamo devono essere compresi in questo intervallo. A prima vista si nota che i 59 possono essere moltiplicati solo con il 2, perche' altrimenti darebbero un numero che supera la 'z' e quindi 122. Lasciamo i 100 come sono senza scomporli ulteriormente, poiche' sono gia' codici ASCII della lettera 'd', quindi potrebbero essere corretti. Moltiplichiamo i 59 con i 2 ed ecco cosa si ottiene: 100 100 100 100 118 118 118 -------> Codici ASCII delle lettere ottenute fino ad ora. 2 2 2 2 3 3 7 5 13 23 -------> Numeri ancora da combinare Chiaro? Ora bisogna fare un po di tentativi con i vari numeri, partiamo dal 23 che e' il piu' grande e notiamo che: 23 * 2 = 46 -> troppo basso 23 * 4 = 92 -> troppo basso 23 * 5 = 115 -> corretto! 23 * 7 = 161 -> troppo altoDopo un po di tentativi, quindi, ci si accorge che il 23 puo' essere moltiplicato solo con il 5, poiche' altrimenti da risultati che fuoriescono dall'intervallo 97...122. Ecco a che punto siamo: 100 100 100 100 118 118 118 115 -------> Codici ASCII delle lettere ottenute fino ad ora. 2 2 2 2 3 3 7 13 -------> Numeri ancora da combinareAncora bisogna procedere per tentativi, vediamo che si puo' fare con il 13: 13*7 < 97 13*9 corretto! 13*8 corretto!Oddio, che fare ora? Dovremmo provare sia 13*3*3 che 13*2*2*2 pero' fortunatamente si nota subito che facendo 13*3*3 non rimangono abbastanza combinazioni possibili per formare altri codici, cosi' optiamo sul 13*2*2*2, ecco dove siamo: 100 100 100 100 118 118 118 115 104 ------> Codici ASCII delle lettere ottenute fino ad ora. 2 3 3 7 ------> Numeri ancora da combinareBeh effettivamente neanche facendo 13*2*2*2 rimangono altre combinazioni possibili poiche' l'unica e': 7*3*3*3 > 122 Comunque possiamo continuare poiche' ci sono quei quattro 100 che all'inizio non abbiamo scomposto. Scomponiamone uno: 100 100 100 118 118 118 115 104 --------> Codici ASCII delle lettere ottenute fino ad ora. 2 2 2 3 3 5 5 7 --------> Numeri ancora da combinareDopo un po di tentativi si vede che si puo' ottenere: 3*5*7 = 105 2*2*2*3*5 = 120Bingo! Sono codici ASCII e dovrebbero andare, ecco la sequenza completa: 100 100 100 118 118 118 115 104 105 120 Se proprio vogliamo essere precisi facciamo la prova del 9, moltiplichiamo questi numeri tra loro per vedere se effettivamente danno come risultato il numero iniziale, ci puo' sempre essere un errore di calcolo. (Io l'ho fatto e al primo tentativo mi sono accorto che avevo sbagliato, nei fattori che componevano il numero avevo messo un 2 al posto di un 3, grrrrrrr :)) Il prodotto e' corretto allora, OK! Convertiamo i codici in lettere e viene questa stringa: dddvvvshix Se facciamo un piccolo ragionamento constatiamo che il prodotto non viene influenzato dall'ordine quindi questa stringa va benissimo cosi' senonche'...Quando la inseriamo nella form e clicchiamo su Entra..beh non appare l'alert con scritto "Password errata" pero' otteniamo un errore 404, cioe' di pagina mancante, come mai? Riguardando bene lo script che gestiva la password e anche la barra dell'url si nota che a questa riga: window.location=password+".htm" Lo script ci manda ad una pagina HTML che ha come nome la password stessa! Quindi se l'ordine delle lettere non influiva sul prodotto, influiva poi sul nome della pagina e quindi andava inserito per forza nell'ordine corretto. Ora bisognava cambiare l'ordine di queste lettere in modo da ottenere il nome esatto della pagina HTML.. Bene all'inizio puo' sembrare un po difficile, pero' pensandoci bene pensai che il webmaster non aveva usato una password casuale ma che conteneva argomenti relativi al sito, soprattutto perche' l'aveva usata come nome di una pagina del sito stesso. Ho notato quasi subito che possiamo ottenere la parola "dvd" nella password cambiando l'ordine di 'v' e 'd'. dddvvvshix -> dvddvvshix Poi separai le due v e vidi VSH, ecco cosa mancava VHS, le videocassette!! dddvvvshix -> dvddv VSHix Quindi metto accanto DVD e VHS, ecco cosa resta: dvdvhs dvix DIVX! ecco l'altra parola, ecco la password: dvdvhsdivx !!!! Bene la proviamo e... non va!! Cosa c'e' ancora? Un'ultima cosa, il webmaster invece di "dvdvhsdivx" potrebbe aver messo "divxvhsdvd", siamo alla solita storia l'ordine non influisce il prodotto pero' influisce sul nome della pagina. Beh, oramai non e' difficile, scriviamo le possibili combinazioni, cioe' 6, e proviamole tutte. dvdvhsdivx dvddivxvhs vhsdivxdvd vhsdvddivx divxvhsdvd divxdvdvhs Dopo pochi tentativi troviamo subito la password corretta: dvddivxvhsJack Duluoz |