Verwendung von HTML zur Implementierung eines Betrugsschemas auf einer Abstimmungswebsite, das IP einschränkt

Verwendung von HTML zur Implementierung eines Betrugsschemas auf einer Abstimmungswebsite, das IP einschränkt

Dies ist ein Betrugsschema für Abstimmungswebsites mit eingeschränkten IP-Adressen. Diese Methode nutzt einige Schlupflöcher bei der Überwachung von Remote-IP-Adressen durch die Abstimmungswebsite aus. Dabei werden keine IP-Adressen gefälscht. HTTP ist die siebte Schicht, die auf TCP aufbaut. Es ist unmöglich, echte IP-Adressen zu fälschen. Kürzlich brauchte ein Freund eine Abstimmungssoftware, und ich habe mir auch diese Abstimmungswebsite angesehen. Diese Abstimmungswebsite hat einen Bestätigungscode und jede IP ist auf eine Stimme beschränkt. Sie sieht aus wie eine normale Abstimmungswebsite. Ich habe zuerst den Bestätigungscode studiert:

Der Bestätigungscode dieser Abstimmungswebsite ist zunächst sehr einfach und besteht aus vier Standardzahlen an Standardpositionen, die leicht zu erkennen sind. Später wurde der Bestätigungscode geändert, sodass er verschiedene Ziffern und Buchstaben enthielt und die Positionen unterschiedlich waren. Jetzt ist es für die Software schwierig, den Bestätigungscode zu erkennen, und selbst die manuelle Erkennung ist schwierig. Wenn Sie am Ende Ihrer Kräfte sind, gibt es immer noch einen Ausweg. Weitere Informationen finden Sie im nächsten Absatz!

Bei meinen weiteren Analysen und Recherchen stellte ich fest, dass es eine Lücke bei der Überprüfung des Bestätigungscodes gab. Nachdem ich diese Lücke entdeckt hatte, war der Bestätigungscode nutzlos geworden. Es ist kein Identifikations- oder Bestätigungscode erforderlich. Es kann direkt umgangen werden, da nur der JS-Code auf der Seite mit den Abstimmungsoptionen gesetzt wird, um zu prüfen, ob der Bestätigungscode leer ist. Der JS-Code wird auf dem Client ausgeführt und die Wirkung dieser Überprüfung ist gleich Null. Im Allgemeinen dient die JS-Überprüfung nur der Benutzerfreundlichkeit. Als Abstimmungswebsite verwendet sie nur diese Überprüfungsmethode. Sie prüft nicht, ob der Bestätigungscode auf der dynamischen Seite zur Abstimmungsverarbeitung leer ist. Dies ist wirklich inakzeptabel und stellt eine große Bedrohung für die Sicherheit der Website dar.

Was das Problem mit dem Bestätigungscode betrifft, habe ich bereits gelernt, wie man es knackt. Solange Sie beim Abstimmen nicht direkt auf die Bestätigungscodedatei zugreifen, ist der Bestätigungscode leer. Da die dynamische Seite nicht prüft, ob der Bestätigungscode leer ist, ist alles in Ordnung, solange der Bestätigungscodeparameter beim Posten leer ist.

Dann gibt es noch ein weiteres Problem. Diese Abstimmungs-Website überprüft die IP und beschränkt eine IP auf nur eine Stimme. Daher kann dies nur durch die Verwendung eines Proxys oder durch ständiges Trennen der Internetverbindung und Einwählen erreicht werden. Mir fiel wirklich keine andere gute Lösung ein, und dann fand dieser Freund ein Programm, mit dem man sehr schnell auf dieser Website abstimmen konnte. Ich war sehr neugierig auf die IP-Lösung dieses Programms und bat meinen Freund, sie zu analysieren.

Zuerst habe ich versucht, Pakete der Abstimmungssoftware zu erfassen, um sie zu untersuchen. Als ich fertig war, öffnete ich das Abstimmungsprogramm und „Zisch! Es hat einen Softwarekonflikt ausgelöst!“ Oh nein, auf keinen Fall. Dann habe ich einige Programme geschlossen und nur das Paketerfassungsprogramm verlassen, das immer noch einen Konflikt ausgelöst hat. Haha, es stellte sich heraus, dass dieses Programm wusste, dass jemand seine Software analysieren könnte, und es durchsuchte tatsächlich den Prozessnamen, um zu prüfen, ob es verdächtige Programme gab. Wenn ein Programm es analysierte oder Pakete erfasste, weigerte es sich, zu laufen. Haha, derzeit weiß ich, dass die eingeschränkte Software Easy Language-Programmiersoftware und WSockExpert_Cn-Paketerfassungssoftware umfasst. Haha, ich habe Easy Language geschlossen, den Namen WSockExpert_Cn geändert, den eigenen Sicherheitstest der Software erfolgreich bestanden und es erfolgreich ausgeführt.

Nachfolgend das Datenpaket, für das ich bei der Nutzung gestimmt habe:

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. POST /vote/view.php?sid=33 handeln = abstimmen HTTP/1.1
  2. Akzeptieren: */*
  3. Verweis: http://www.qdnfy.gov.cn/vote/vote.php
  4. Inhaltstyp: Anwendung/x-www-form-urlencoded
  5. X-Weitergeleitet-Für: 218.20.218.200
  6. CLIENT_IP: 218.20.218.200
  7. Über: 218.20.218.200
  8. REMOTE_ADDR: 218.20.218.200
  9. Akzeptieren-Sprache: zh-cn
  10. Accept-Encoding: Text
  11. User-Agent: Mozilla/4.0 (kompatibel; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)
  12. Gastgeber: www.qdnfy.gov.cn
  13. Cookie: PHPSESSID = pldjnb6scereodjm5niqb9q990   
  14. Inhaltslänge: 49
  15. Verbindung: Schließen

-Forwarded-For Ich habe diesen HTTP-Header-Parameter gefolgt von der IP gefunden. Haha, dieser Parameter muss eine Historie haben. Ich kannte ihn vorher nicht. Haha, ich habe schnell auf Baidu danach gesucht.

Nachfolgend finden Sie einen Erläuterungsartikel von Baidu. Er ist sehr gut erklärt und Sie können einen Blick darauf werfen.
Fälschen Sie das Feld X-Forwarded-For im HTTP-Header, um die IP zu fälschen. Ich habe Baidu nach dem Prinzip von X-Forwarded-For durchsucht. Dieses Ding gibt es schon seit langem. Dies ist das erste Mal, dass ich von X-Forwarded-For höre: Kurz gesagt, XFF-Header. Es stellt den Client dar, d. h. die echte IP des HTTP-Anforderungsendes. Dieses Element wird nur hinzugefügt, wenn es über einen HTTP-Proxy oder einen Lastausgleichsserver geleitet wird.

Es handelt sich nicht um eine im RFC definierte Standard-Anforderungsheaderinformation. Eine ausführliche Einführung zu diesem Punkt finden Sie in der Entwicklungsdokumentation für den Squid-Cache-Proxyserver.

Das Standardformat ist wie folgt:

X-Weitergeleitet für: Client1, Proxy1, Proxy2

Wie aus dem Standardformat ersichtlich, können mehrere durch Kommas getrennte X-Forwarded-For-Headerinformationen vorhanden sein. Das erste Element ist die echte Client-IP, und der Rest sind die IP-Adressen der durchgelaufenen Proxys oder Load Balancer. Es wird mehrere davon geben.

Erklärung zu X-Forwarded-For im Wiki http://en.wikipedia.org/wiki/X-Forwarded-For-Analyse:

Da wir die Client-IP fälschen möchten, schauen wir uns zunächst an, wie wir die Client-IP-Adresse erhalten (am Beispiel von PHP). Dieser Code wurde durch eine Suche auf Baidu gefunden. Die meisten Websites verwenden diesen Code.

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. $ user_IP = ($_SERVER["HTTP_VIA"]) ? // Wird ein Proxy verwendet?
  2. $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
  3. //Wenn die Erfassung fehlschlägt, holen Sie es von REMOTE_ADDR
  4. $ Benutzer_IP = ($ Benutzer_IP) ? $ Benutzer_IP : $_SERVER["REMOTE_ADDR"];
  5. ?>   

Stellen Sie zunächst fest, ob der HTTP_VIA-Header vorhanden ist. Der HTTP_VIA-Header gibt an, ob ein Proxyserver verwendet wird. Wenn nicht, ermitteln Sie die IP-Adresse des Clients aus dem Feld REMOTE_ADDR. Wenn ja, ermitteln Sie die IP des Clients aus X-Forwarded-For. Ich vermute, dass viele Programmierer den Code von Baidu beziehen. Bei ASP ist es ähnlich.

Dann lass es uns testen.

Servercode:

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. // Ausgabe HTTP_X_FORWARDED_FOR
  2. echo "HTTP_X_FORWARDED_FOR:".$_SERVER["HTTP_X_FORWARDED_FOR"];
  3. //REMOTE_ADDR ausgeben echo "REMOTE_ADDR:". $_SERVER["REMOTE_ADDR"];
  4. ?>  
  5.    

Sie können sehen, dass die erhaltenen Client-IP-Adressen unterschiedlich sind. REMOTE_ADDR ist die tatsächliche Adresse.

Wenn also eine Website die Client-IP-Adresse aus X-Forwarded-For ermittelt, können wir diese logische Lücke zum Betrügen ausnutzen.

<<:  jQuery manipuliert Cookies

>>:  VMware implementiert den detaillierten Prozess der unbeaufsichtigten PXE+Kickstart-Installation des Centos7-Systems

Artikel empfehlen

Vue realisiert Click-Flip-Effekt

Verwenden Sie Vue, um einfach einen Click-Flip-Ef...

Mehrere Möglichkeiten zum Verbinden von Tabellen in MySQL

Die Verbindungsmethode in der MySQL-Tabelle ist e...

Spezifische Verwendung interner temporärer MySQL-Tabellen

Inhaltsverzeichnis UNION Tabelleninitialisierung ...

Grundlegende Konzepte und allgemeine Methoden des Map-Mappings in ECMAScript6

Inhaltsverzeichnis Was ist eine Zuordnung? Unters...

10 Tipps zur Website-Benutzerfreundlichkeit, die jeder kennen sollte

Lassen Sie uns keine weitere Zeit verschwenden un...

Lösungen für Dateien/Ordner, die unter Linux nicht gelöscht werden können

Vorwort Kürzlich wurde unser Server von Hackern a...

Implementierung der automatischen Konstruktionsweiterleitung von React

Inhaltsverzeichnis Sequenz 1. Zentralisiertes Rou...

CentOS 7 - Lösungsprozessdiagramm für vergessene Passwörter

brauchen Unabhängig davon, ob es sich um ein Wind...

jQuery+Ajax zum Erreichen eines einfachen Paging-Effekts

In diesem Artikel wird der spezifische Code von j...