Jump to content
php.lv forumi

md5...


sviesc

Recommended Posts

  • Replies 40
  • Created
  • Last Reply

Top Posters In This Topic

Man tāds jautājums par Login.

Ja es uztaisu admina lapu ielogojos un paroli glabāju tajā php failā, kurā logojos iekšā nokodētu ar md5. Un pēc tam šo paroli, ja ievada pareizi, lapas iekšienē velku līdzi caur linkiem:

<?
if(isset($_POST["parole"])){
   $p=md5(md5($_POST["parole"]));
}
if ($p!="d480752f581aebf6d4bdafbd1116db5e"){
   header("Location: ... ");
   exit;
}

if ($p=='d480752f581aebf6d4bdafbd1116db5e'){
echo"<a href=\"login.php?id=1&p=$p>Lapa1</a>   //login.php?id=2?p=d480752f581aebf6d4bdafbd1116db5e
       <br>
       <a href=\"login.php?id=2&p=$p\">Lapa2</a>";  //login.php?id=2?p=d480752f581aebf6d4bdafbd1116db5e
....
}

Cik tas ir droši un vai tas vispār ir nopietni šitā taisīt login lapu?

Link to comment
Share on other sites

Nu tad par to manu md5 dekriptēšanas domu:

Lieta vienkāršā - brute force ģenerēšana ir neizdevīga, jo katru reizi jāiziet no a līdz z visādas ciklu variācijas. OK ir progas, kas māk ģenerēt variācijas sākot no kaut kāda tur sākuma stringa. Mans variants ir noģenerēt visādu stringu kombinācijas un saglabāt tos datu bāzē - tālākā nākotnē to vairs nevajadzēs darīt - laiks būs ietaupīts. Principiāla atšķirība - brute force ģenerēt tieši ar pašas datu bāzes (es taisīju uz MySQL) palīdzību.

Redz kā, ir tāda lieta ka Dekarta reizinājums, resp. ja no datu bāzes izvēlēties vienu un to pašu kolonnu divas reizes, tā izdos ārā visu šādu kolonnu salikumu veidus - resp. ļoti ātrs brute force vatriants.

step 1:

Taisām augšā vienu tabulu table1 ar visiem simboliem, kurus mums vajaga:

char|

-----

a

b

c

...

A

B

...

-

1

...

 

step 2: Uztaisām table2 ar kolonnām char,char_1 (tā laikam MySQL sauca dublētas kolonnas),char2.

 

SELECT DELAYED char,char, CONCAT(char,char) as `char2`INTO table2 FROM table1

 

Pēc tam nometam kolonnas char un char_1 no table2 (vieta jātaupa) un mums paliek tikai 2 simbolu kombinācijas iekš kolonnas char2

 

step 3:

table3 ar char,char_1,char3

Tieši neatceros (mājas ir saglabāts), bet bija kaut kas līdzīgs:

SELECT DELAYED table1.char,table1.char,table2.char2,CONCAT(table1.char,table2.char2) as `char3` INTO table3

 

vai arī

 

SELECt DELAYED table1.char,table1.char,table1.char,CONCAT(table1.char,table1.char,table1.char) as `char3` INTO table3

 

- uztaisām augšā visas iespējamas 3 simbolu kombinācijas.

 

Iztīram tabulu no nevajadzīgām kolonnām.

 

Atkārtojam stepus līdz nepietiek diska vietas (man tabulas aizņēma kaut kas līdzīgi: 1simboliem - 158 bytes, 2simboliem ~250 Kb, 3 - ~27Mb, 4 ~127 Mb, 5 > 4Gb, attiecīgi ģenerācijas laiks 5-simbolu visām iespējamām kombinācijām ap 8 stundām [C600,192MbRam, 7200rpm HDD])

 

Pēc tam taisām vai nu

SELECT * FROM table1 WERE MD5(`char1`)='md5hashs@#$%#@$@%#$%'

SELECT * FROM table2 WERE MD5(`char2`)='md5hashs@#$%#@$@%#$%'

 

vai arī uzreiz tabulās uztaisām jaunu kolonnu 'hash' un

UPDATE DELAYED tableX SET `hash`=MD5(`charX`), kas prasīs __ļoti__ daudz vietas.

(ja pareizi atceros char5 kombinācijas biuja pār 140 tūkst miljoniem [atkarīgs no izvēlēto charu skaita pašā sākumā])

 

Un SELECT * FROM tableX WHERE `hash`='nolaadeetaismd5hashs'

 

BET, kad viss jau ir noģenerēts strādā __ļoti__ ātri ;)

 

Ja ir _daudz_ RAMa var arī mēģināt taisīt kaut ko līdzīgu

SELECT table1.char,table1.char,... CONCAT(table1.char,table1.char,...) as `searched` WHERE MD5(`searched`)='hashs'

 

bet te atkal ir tā laika problēma.

Link to comment
Share on other sites

  • 1 year later...

smejies vai raudi es šodien nejauši arī iedomājos par md5(md5(pass)), bet galīgi ne pa tēmu :D

 

bet nu jā. md5 nav uzlaužams - tikai ar bruteforce. tas ir vienvirziena kriptēšanas algoritms, kurš neparedz nekādu atpakaļceļu. domā, ka tikai Latvijā ir cilvēki, kuri grib lauzt md5? :D :D

Link to comment
Share on other sites

Mja, izskatās, ka Venomam galva shancē :)

 

Tas variants varētu nostrādāt, jo atceros kaut kad sen bija vajadzība winzipus lauzt un tur bija proga uz shāda paša principa un lai atlaustu vaļā paroli lidz 20 simb, kur var but visi simboli man liekas ka bija kadas 17h, isti jau vairs neatceros, bet kaut kas tads bija.

 

Bet ja tā padomā, tad pēc būtības taisi cik gribi tos md5(md5(md5($p))) sha vai tā to kaut kas uzlauzt jau varēs, bet tas būs laika jautājums. Ja nu kāds palaiž to visu caur kaut kādu superdatoru ar 20 dual xenon pročiem, vai taml.Tad viņam tās kombinācijas lauztos daudz ātrāk.

 

Bet droši vien ja nu ļoti ļoti vajag kur tikt, tad droši vien lielākā daļā izvēlētos mazliet iebaidīt sysadminu, lai tas bez kādām sāpēm pasaka paroli :D

Edited by Gacha
Link to comment
Share on other sites

kas tad tas par sysadminu, ka baidaas ....

 

uzmeikoja mazu parolju sagatavotaaju....

<?
function parole($pass){
   $p = base64_encode($pass);
   /*
   te veel papildus var pielikt klaat kaut kaadu savu stringu
   piem:
   $p .= "sReDD45PoInJK44";
   */
   $p = str_replace("==",'',$p); //lai mazaak aizdomu, ka tas ira base64_encode, jo tas baigaas pieliek 2 = ziimes
   return md5(sha1(md5(sha1(strtolower($p)))));
}
echo parole("manaParole");
?>

manupraat atkodeet nevar, jo base64_encode taisa lielos un mazos burtus...

taalaak sha1 un md5 tiek padoti mazie burti, base64_decode ir svariiga lielo un mazo burtu seciiba. var jau buut ka var atkodeet, tachu tad vajag tieshaam jaudiigu PC ....

Edited by Klez
Link to comment
Share on other sites

1) nevajag atkodēt, bet piemeklēt stringu, kas dod tādu pašu hašu.

2) vairākkādt izmantojot vienu un to pašu vai līdzīgu algoritmu drošība nevis palielinās, bet samazinās, tāpat, kā vairrākkārtīgi zipojot vienu failu tas pēc pirmās reizes kļūst tikai lielāks.

3) ja nu kādu tas interesē, tad jaunieši strādā pie md5 piemeklēšanas un šis tas ir izdevies.

4) ja nu kādu tas uztrauc, tad md5 ir tikai viens no sajaukšanas algoritmiem. :)

 

0) atkodēt nav iespējams. md5 vai sha-1 nav nekāda bijekcija.

 

kas tad tas par sysadminu, ka baidaas ....

 

uzmeikoja mazu parolju sagatavotaaju....

<?
function parole($pass){
   $p = base64_encode($pass);
   /*
   te veel papildus var pielikt klaat kaut kaadu savu stringu
   piem:
   $p .= "sReDD45PoInJK44";
   */
   $p = str_replace("==",'',$p); //lai mazaak aizdomu, ka tas ira base64_encode, jo tas baigaas pieliek 2 = ziimes
   return md5(sha1(md5(sha1(strtolower($p)))));
}
echo parole("manaParole");
?>

manupraat atkodeet nevar, jo base64_encode taisa lielos un mazos burtus...

taalaak sha1 un md5 tiek padoti mazie burti, base64_decode ir svariiga lielo un mazo burtu seciiba. var jau buut ka var atkodeet, tachu tad vajag tieshaam jaudiigu PC ....

12605[/snapback]

Link to comment
Share on other sites

1) nevajag atkodēt, bet piemeklēt stringu, kas dod tādu pašu hašu.

2) vairākkādt izmantojot vienu un to pašu vai līdzīgu algoritmu drošība nevis palielinās, bet samazinās, tāpat, kā vairrākkārtīgi zipojot vienu failu tas pēc pirmās reizes kļūst tikai lielāks.

3) ja nu kādu tas interesē, tad jaunieši strādā pie md5 piemeklēšanas un šis tas ir izdevies.

4) ja nu kādu tas uztrauc, tad md5 ir tikai viens no sajaukšanas algoritmiem. :)

 

0) atkodēt nav iespējams. md5 vai sha-1 nav nekāda bijekcija.

12609[/snapback]

 

 

luudzu tev md5 hash

30638617902a005109e5f4fb37857907

 

njem un atkodee. un lai tev vieglaak buutu, tad iru ir izmantoti tikai lielie un mazie burti. pavisam kopaa 11 simboli

Link to comment
Share on other sites

Atslēgas vārdi šīm darbībām: "key crunching"

Vienkāršoti pieejot šai lietai, mēs varam izdarīt šādu pieņēmumu:

Varam uzskatit katru hash funkcijas pielietošanas kārtu ekvivalentu ar vēlvienas atslēgas pārbaudi. Jo h(h(x)) izrēķināt aizņem tikpat ilgi kā izrēķināt h(x) un h(y).

 

Tātad, ja mēs k reizes pēc kārtas pielietojam hash funkciju, tad atslēgu meklēšana arī palēninās k reizes. Tātad (ja mani aprēķini ir pareizi) atslēgas garums (atrašanas pēc pilnās pārlases nozīmē) palielinās par "logaritmu no k pie bāzes 2" bitiem.

 

P.S. Biju vienreiz uzgājis vienkārši lielisku "whitepaper" tieši par šo tēmu, bet tagad vairs nevaru atrast. Tajā visas šīs lietas bija loti sīki izanalizētas daudzreiz profesionālākā līmenī.

Link to comment
Share on other sites

bet ja cilveeks dabuu to DB un ja redz ka tas ira md5,

1) kaa tad vinsh var zinaat cik reizes jams ir gaajis caur md5

2) vinjam varbuut nav nemazaakas nojausmas, ka tas string ir izgaajis veel cari sha1 & base64 & veel haadam kashotaajam

3) vinjam nav ne jausmas ka parolei ir pielikti klaat veel kaut kaadi simboli

4) ja DB ieliek savu md5 hashu, tad datiem taa pat netiek klaat, jo hash ir ticis hashots un hashots

5) atkodeet jau var, bet tad vajag lieldatoru un laiku, shaubos vai kaadai laba kaads njems un crackos md5 hashus.

6) ja nu vieniigi tev vajadzees atkodeet kaada FIB aģenta hashu, ar ko vinsh logojas www.FIB.org

7) FIB noteikti ir pashiem savs algoritms :)

Link to comment
Share on other sites


×
×
  • Create New...