Gå til innhold

Disse 16 tegnene er alt som skal til for å krasje Chrome


Anbefalte innlegg

Videoannonse
Annonse

Jeg er vel en amatør når det gjelder data, men det jeg synes er merkelig er hvordan noen fant det ut i utgangspunktet??

 

Jeg mener, selv om du går inn for det, hvor "stor" sannsynlighet er det for at du taster inn akkurat denne rekkefølgen av random tegn?

 

Det er ikke så tilfeldig som det ser ut. %30 er URL-encoding for tegnet i posisjon 0x30 (som er sifferet '0'). Tilsvarende er %00 koden for tegnet i posisjon 0x00 (en nullbyte - som er en halvmagisk verdi som ofte betyr "her slutter denne biten tekst").

 

Det jeg tror skjer er at chrome vanligvis filtrerer ut %00 som ulovlig. Den addressen som feiler blir først dekodet til "http://a/%00",og så forsøker den koden som skal forhåndsvise den å dekode den en gang til - uten å sjekke like nøye for ulovlige verdier, siden de alt har blitt fjernet en gang. Dermed blir den dekodet til http://a/ og en nullbyte - jeg er ikke sikker på hvorfor det kneler, men det kan være den forventer at det er tre dekodede tegn der (a, /, og det den får ved å dekode %00) og tror den har gjort noe galt når det tredje tegnet i adressen er en nullbyte? (Normalt sett er det illevarslende, siden det betyr at man har prøvd å lese forbi slutten av teksten).

 

Denne typen feil ("hva skjer om jeg putter inn noe som blir dekodet til noe jeg ikke hadde hatt lov til å skrive direkte") er ikke helt ukjent, så det var trolig ikke random tegn. Det sagt: Det er helt akseptert å teste et program ved å gi det masse tilfeldige data for å se hvordan det går - det er kjent som fuzzing eller fuzz testing.

Endret av Djn
Lenke til kommentar
×
×
  • Opprett ny...