Eintrag
Hallo nochmal.
Diesmal wirft der Artikel keine „ernsthaften“ Fragen auf.
Dies ist eine Geschichte darüber, wie Sie, ohne die Programmierung zu kennen, aber sehr geschickt und aufmerksam sind, eine schwerwiegende Sicherheitslücke finden können, die es Ihnen beispielsweise ermöglicht, das gesamte Geld von einem Konto mit nur einem Benutzernamen und einem Passwort abzuschreiben (Lesen, Umgehen der Zwei-Faktor-Authentifizierung oder) gleiche Bestätigung per SMS).
Im Moment hat Qiwi es bereits erfolgreich gepatcht, daher werde ich versuchen, die Erklärungen mit modernen Screenshots zu verstärken und manchmal zu erklären, wie es vor 2,5 Jahren aussah.
Nun zum Punkt
Angenommen, Sie haben einen Benutzernamen: das Passwort für die Qiwi-Brieftasche eines anderen.
Nehmen wir an, es gibt 100.000 Rubel.
Und du willst sie sooooo in Besitz nehmen.
Sie können jedoch nicht nur Geld abschreiben, sondern benötigen eine Bestätigung per SMS.
Aber wir sind schlau, das wird uns nicht aufhalten.
Schritt 1. Melden Sie sich bei Ihrem Konto an und erstellen Sie dort eine virtuelle Karte.Wir sehen so ein Bild

Es sieht so aus, als hätten wir sehr wenig Informationen. Nur die letzten 4 Ziffern der Karte und die Dauer der Karte.
Aber
vorher gab es 6 (!) Letzte Ziffern der Karte . Das heißt, weitere 10 Ziffern waren unbekannt.
Und wir brauchen alle Zahlen auf der Karte. Wo kann man mehr bekommen? Sehr einfach.
Alle Karten haben eine BIN - die ersten 6 Ziffern der Karten einer bestimmten Bank des gleichen Typs sollten gleich sein.
Schritt 2. Wir steigen in den Browser und googeln "Qiwi BIN"Sofort stellen wir fest, dass der Behälter 489049 ist.
Und jetzt haben wir schon 12 Ziffern! Nur noch 4 übrig!
Aber hier kommt die Schwierigkeit.
Diese 4 Ziffern flackern nirgendwo und es scheint, dass es keinen Ort gibt, an dem man sie bekommen kann.
Aber natürlich, wenn Sie sich anstrengen, können Sie finden :)
Schritt 3. Finden Sie die letzten 4 fehlenden ZiffernDazu müssen wir ein Konto in Qiwi mit 1000r haben und wissen, was der Mondalgorithmus
ist .
Lass uns in Ordnung gehen.
Wenn Sie einen Vorgang in Qiwi öffnen, werden das Zahlungsdatum und die Belegnummer angezeigt.
Vielleicht haben einige bereits erraten, warum wir 1k auf dem Konto benötigen.
Ja, wir werden die Zahlen in der Reihenfolge anstelle der unbekannten 4 Ziffern ersetzen, die unbekannt geblieben sind, und sie in Rubel an die Kartennummern senden!
Und bei einer der Operationen erhalten wir einen eingehenden 1 Pence auf das Konto, auf dem die geschätzten 100.000 Rubel liegen.
Es bleibt nur die Zeit des Geldversands zu vergleichen.
Früher war es möglich, Operationsnummern abzugleichen, jetzt haben sie sie ausgeblendet. Und sie haben es richtig gemacht.
Und jetzt wird der aufmerksamste sagen, dass tatsächlich 4 Ziffern 10.000 Operationen sind, nicht 1.000. Sie benötigen also 10.000 Rubel und viel Zeit, um die richtigen 4 Ziffern zu finden.
Und das ist nicht ganz richtig. Ich präsentiere Ihnen den
Mondalgorithmus!Der Luhn-Algorithmus ist ein Algorithmus zur Berechnung der Prüfziffer einer Plastikkartennummer gemäß ISO / IEC 7812. Er ist kein kryptografisches Werkzeug, sondern dient in erster Linie dazu, Fehler zu erkennen, die durch versehentliche Datenbeschädigung verursacht werden (z. B. bei der manuellen Eingabe einer Nummer) Karten, wenn telefonisch Daten zur Sozialversicherungsnummer empfangen werden). Es erlaubt nur mit einem gewissen Maß an Zuverlässigkeit, das Fehlen von Fehlern im Zahlenblock zu beurteilen, erlaubt jedoch nicht, die entdeckte Ungenauigkeit zu finden und zu korrigieren.
Wenn es sehr interessant ist - google, und ich werde Ihnen kurz den Algorithmus erläutern und wie er uns helfen wird.
Mit diesem Algorithmus können Sie überprüfen, ob die Kartennummer gültig ist. Das heißt, nachdem Sie unsere 10.000 Optionen durch diesen Algorithmus ausgeführt haben, können Sie nur die Anzahl der potenziell vorhandenen Karten belassen. Ratet mal, wie viele es geben wird?
Richtig, genau 1k.
Natürlich scheint dies alles sehr praktisch zu sein, aber was hindert ein einfaches Skript daran, genau diese 1k-Optionen zu generieren?
Hier einige Beispiele für die Implementierung von Wikipedia:
Beispiel für einen Mondalgorithmus auf JSfunction luhnAlgorithm(digits) { let sum = 0; for (let i = 0; i < digits.length; i++) { let cardNum = parseInt(digits[i]); if ((digits.length - i) % 2 === 0) { cardNum = cardNum * 2; if (cardNum > 9) { cardNum = cardNum - 9; } } sum += cardNum; } return sum % 10 === 0;}
Beispiel Mondalgorithmus in PHP function luhnAlgorithm($digit) { $number = strrev(preg_replace('/[^\d]/', '', $digit)); $sum = 0; for ($i = 0, $j = strlen($number); $i < $j; $i++) { if (($i % 2) == 0) { $val = $number[$i]; } else { $val = $number[$i] * 2; if ($val > 9) { $val -= 9; } } $sum += $val; } return (($sum % 10) === 0); }
Jetzt müssen wir diese 1k-Optionen mit der oben beschriebenen Methode sortieren.
Und voila - wir haben die letzten 4 Ziffern.
Jetzt haben wir den vollständigen Code der Karte und ihre Gültigkeit.Natürlich haben wir keinen CVV-Code (der auf der Rückseite geschrieben ist), aber an einigen Stellen wird er nicht benötigt.
Zum Beispiel Amazon!
Ja, wir gehen zu Amazon und bestellen alles mit Hilfe neu erstellter Daten.
Zum Beispiel Steam-Codes für Geld oder ähnliches. Im Allgemeinen gibt es etwas Elektronisches, das man schnell im Internet verkaufen kann. Wir werden ein wenig Geld verlieren, aber höchstwahrscheinlich nicht mehr als 20%.
Das ist alles! Erhielt + 79.000 Gewinn!
Vergessen Sie nicht, dass dies nicht mehr funktioniert!
Aber wenn Sie etwas Ähnliches finden - sagen Sie es Qiwi, sie werden es (hoffentlich) reparieren.
Ich habe es so angelegt, dass es coole Dinge und Sicherheitslücken findet, ohne überhaupt programmieren zu können. Und für die allgemeine Entwicklung.
Viel Glück an alle :)