This page has been robot translated, sorry for typos if any. Original content here.

Chat beenden Teil 2



  • Teil 1
  • Teil 2


  • Variationen zum Thema

    Im vorherigen Kapitel haben wir uns einen Fall angesehen, in dem eine Farbe ohne restriktive Anführungszeichen in den Seitentext eingefügt wurde. Und was tun, wenn die Anführungszeichen noch da sind? Zum Beispiel sieht der Text im Chat so aus:
    Viator - Alpha, hallo))
    Alpha - Hallo allerseits! !!

    Wie Sie sehen, wird die Farbe in die Rahmenzitate eingefügt. Dieses Problem kann leicht gelöst werden, wenn der Chat das Zeichen nicht herausfiltert. Wenn ja, können wir einfach das offene Zitat schließen und dann unser Skript schreiben. Wenn Sie beispielsweise den Farbwert auf Rot 'Größe = 20' <FONT Farbe = # 00ff00> einstellen, erhalten Sie den Effekt erneut mit einer großen Schrift. Achten Sie auf das Leerzeichen und das Apostroph am Ende. Sie sind notwendig, damit das Schlusszitat, das der Chat selbst einfügt, unsere Attribute nicht zerstört. Infolgedessen lautet unsere Botschaft:

    Shram - Hi

    Wenn der Chat das Anführungszeichen, das den Parameterwert umgibt, nicht überspringt, kann der Chat über diesen Parameter nicht geknackt werden :( (. Obwohl hier einige Dinge möglich sind: siehe das Ende dieses Kapitels.

    Diese Methode funktioniert sehr oft (fast immer) für die angegebene E-Mail-Adresse (in Chatlanin-Parametern oder im Feld für die Absenderadresse in Foren und Gästebüchern). In der Regel geht ein Link zu soap in den Foren folgendermaßen vor:

    <b>&lt;a href=mailto:mylo@myla.net&gt; Fedya Pupkin &lt;/a&gt;</b> (Fragment mailto: das Gateway fügt sich ein). Dann setzen wir den Soap-Wert auf "style = background-image: url (javascript: alert ('Well_net_you_my_washed!'))" . Wir senden eine Warnung an jeden Forumbesucher :) ) (Beachten Sie, dass die Adresse der Seife in der Regel die Eingabezeichen filtert und nicht installiert ist). Es stimmt, einige Foren und Chats scheinen die Seife zu überprüfen, aber diese Überprüfung setzt voraus, dass das @ -Symbol vorhanden ist. Wenn ja, dann werden wir den Erstellern des Forums gefallen und ihnen einen Hund wie folgt zeichnen : mylo@myla.net "style = background-image: url (javascript: alert ('Well_new_to_me_my_myla!')" .

    In einigen Chatrooms können Sie Ihre eigenen Bilder einfügen, indem Sie die Adresse des Bildes angeben. Wie wir bereits wissen, können Sie dort, wo sich eine URL befindet, ein Skript einfügen. Ich werde es nicht einmal kauen. Alles ist klar.

    Das erste Kapitel zeigte, wie Sie das Eingabe-Chat-Formular ändern können. Insbesondere musste die relative Adresse des Aktionsfelds in absolut geändert werden. Die Struktur des Chats kann jedoch so komplex sein, dass viele solche Änderungen erforderlich sind. Es ist in jedem Fall unpraktisch, Adressen zu ändern (und Sie können sich irren). Stattdessen können wir das Tag <base href = 'http: //typachat.ru/'^gt; , der an einer beliebigen Stelle im HTML-Dokument eingefügt wird. In diesem Fall werden alle relativen Adressen an die im Basis- Tag angegebene Adresse (in diesem Fall in typachat.ru ) adressiert , unabhängig vom tatsächlichen Basis-DNS-Namen.

    Sie wissen wahrscheinlich, was Schnüffler sind? Wenn nicht, dann sage ich Ihnen einen Schnüffler - eine sehr nützliche Sache, mit der Sie den Verkehr verfolgen können. Im Falle eines Chats können Sie mit dem Sniffer die IP-Adressen, die sich im Chat befinden, sowie deren temporäre Namen und Codes (für Chats mit temporären Namen) ermitteln. Manchmal können Sie sogar Administratorrechte erhalten :) ).

    Es kommt oft vor, dass der Spitzname im Chat-Text als Link fungiert. Wenn Sie auf diesen klicken, können Sie eine private Nachricht an das Chat-Mitglied senden. So sieht es in HTML aus:

    Alpha - Hallo!

    Moderator - Hallo!

    Zusätzlich zu dem im Kapitel "Wunder mit dem Symbol =" beschriebenen Effekt können Sie ein Skript einfügen, das das Klickereignis des Links auslöst (wenn der Chat die einschränkenden Anführungszeichen - in diesem Fall - und das Symbol + nicht herausfiltert) den folgenden Wert: "+ alert ('Hello!') +" . Sie können etwas ernsthafteres einfügen (indem Sie einfach die Funktion toString () verwenden ). Beispiel: ein solcher Spitzname "+ toString (open ('// yahoo.com', '_ top ')) + " Sendet den Benutzer, der Ihren Nick anstößt, eine Pause vom Chat in Yahoo :) ).

    Unterbrechen des Chats M

    Wie im ersten Kapitel erwähnt, gibt es zwei Methoden zum Unterbrechen von Chats. Alle obigen Beispiele betrafen die erste Methode - die Methode des Eindringens in die Parameter des Tags. Hier möchte ich die Technologie der zweiten Methode zeigen - die Methode zum Aufbrechen der HTML-Struktur.

    Die Farbe der Nachrichten in Chat M wurde in numerischer Form festgelegt (und hatte daher eine Begrenzung der Länge der Farbe - 7 Zeichen), hatte ausgefallene Filter, übersprang jedoch ein einzelnes Zeichen. Hier ist ein Ausschnitt aus Chat-Nachrichten:

    <code>&lt;font class="а1"&gt;22:41:24 &lt;/font&gt; &lt;a href="javascript:parent.parent.sewho(&amp;#39;РТУТЬ&amp;#39;)" onMouseOver="window.status='';return true;" target=kbd&gt;&lt;font color=#0066ff class="ку"&gt;РТУТЬ:&lt;/font&gt;&lt;/a&gt;&lt;font color=#FF0000 class="уц"&gt;ПЛУГиПРЕЙ:КОРОШО!&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;SCRIPT&gt;top.do_scrolldown();&lt;/SCRIPT&gt;&lt;br&gt;&lt;font class="а1"&gt;22:41:25 &lt;/font&gt; &lt;a href="javascript:parent.parent.sewho(&amp;#39;Весь_в_сертах&amp;#39;)" onMouseOver="window.status='';return true;" target=kbd&gt;&lt;font color=#0000FF class="ку"&gt;Весь_в_сертах:&lt;/font&gt;&lt;/a&gt;&lt;font color=#0000FF class="уц"&gt;Денис_Семенов: ПРАВИЛЬНЕЙ БУДЕТ ВСЕ&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;SCRIPT&gt;top.do_scrolldown();&lt;/SCRIPT&gt;</code>

    Wie Sie sehen, wird die Farbe ohne Anführungszeichen angezeigt. Die Hacking-Technologie ist einfach: Wir loggen uns unter einem beliebigen Spitznamen und in einer beliebigen Farbe ein . Dann logge dich in den Chat ein und gib eine Nachricht aus wie 'style = background-image: url (javascript: alert (' Hello_people !! ')) . Achten Sie auf das Leerzeichen am Ende - es ist erforderlich. Unsere Botschaft lautet wie folgt:

    <code>&lt;font class="а1"&gt;22:41:24 &lt;/font&gt; &lt;a href=javascript:parent.parent.sewho(&amp;#39;Algol&amp;#39;) onMouseOver="window.status='';return true;" target=kbd&gt;&lt;font color=#0066ff class="ку"&gt;Algol:&lt;/font&gt;&lt;/a&gt;&lt;font color=' class="уц"&gt;' style="background-image:url(javascript:alert('Hello_people!!'))&lt;/font"&gt;&lt;br&gt;&lt;br&gt;&lt;SCRIPT&gt;top.do_scrolldown();&lt;/SCRIPT&gt;</code>

    Es stellt sich heraus, dass sich ein Teil des HTML-Codes - class = "ku"> - in einfachen Anführungszeichen befand und vom Browser als String-Wert von color betrachtet wird. Die schließende spitze Klammer des Tags kommt in diese Zeile, dank derer sich unsere Nachricht innerhalb des Tags befindet! Der Teil des Codes, der direkt nach unserer Nachricht kommt Sie wird vom Browser nicht verstanden und ignoriert (und dieser Teil sollte durch ein Leerzeichen von unserem Stilparameter getrennt werden, da sonst der gesamte Parameter als fehlerhaft betrachtet wird), während das Befolgen der spitzen Klammer als schließendes Schriftart- Tag betrachtet wird. Alles ist sehr einfach.

    Wenig über den Backslash-Charakter

    In den JavaScript-Konstantenzeichenfolgen gibt es ein spezielles Steuerzeichen. Dies ist ein Backslash-Zeichen. Einer seiner Zwecke ist der folgende: Das darauf folgende Anführungszeichen wird nur als Zeichen und nicht als Terminator einer Zeichenfolge betrachtet. Zum Beispiel:

    &lt;script&gt; alert ('It \' s ') &lt;/ script&gt; - gibt keine Fehlermeldung aus, da ein Apostroph in Kombination mit \ in der Mitte einer Zeile nicht als Zeilenende betrachtet wird. Während &lt;script&gt; alert ('It's') &lt;/ script&gt; gibt eine Fehlermeldung aus.

    Da das \ -Symbol selbst das Steuerzeichen ist (und daher nicht direkt in der Zeichenfolge enthalten ist), ist die \\ -Kombination vorhanden, um sich selbst anzuzeigen. Eine solche Kombination wird als einfaches Zeichen angezeigt.

    Was hat das alles mit Hacking-Chats zu tun? Und hier ist was: Einige Chatrooms setzen keinen Filter auf Anführungszeichen " (oder ' ) im Kurznamenfeld, sondern ersetzen sie durch Kombinationen wie " (oder " ), vorausgesetzt, dass in diesem Fall die Anführungszeichen angezeigt werden, aber nicht als Begrenzer fungieren können. und kann daher die Struktur von HTML nicht zerstören. Gleichzeitig übersehen kurzsichtige Entwickler, dass der Benutzer auch das Zeichen \ verwenden kann, um sein Zeichen zu blockieren. Ein Chat-Fragment für eine Benutzernachricht mit dem Spitznamen Sh "ram sieht beispielsweise folgendermaßen aus:

    <code>&lt;a href=javascript:msgto(&amp;quot;Al\&amp;quot;gol&amp;quot;)&gt;Sh"ram&lt;a&gt;</code>

    In diesem Fall verletzt das Anführungszeichen im Kurznamen nicht die Struktur des Tags. Wenn wir jedoch den Spitznamen in " Al" gol ändern, wird durch Einfügen eines Schrägstrichs vor dem Anführungszeichen der folgende HTML-Code erstellt:

    <code>&lt;a href=javascript:msgto(&amp;quot;Al\\&amp;quot;gol&amp;quot;)&gt;Sh\"ram&lt;/a&gt;</code> Gleichzeitig blockiert unser Schrägstrich den Schrägstrich im Chat, und das Zitat des Spitznamens zerstört die HTML-Struktur! Dies wird sichtbar, wenn Sie auf den Link im Beispiel klicken.

    Dieser Effekt kann zum Hacken von Chats verwendet werden, indem die HTML-Struktur zerstört wird. Beachten Sie, dass in einigen Fällen die gleiche Methode zum Blockieren restriktiver Anführungszeichen verwendet werden kann, indem am Ende des Kurznamens ein Backslash eingefügt wird.

    Kürzlich bemerkte ich eine weitere Lücke im Zusammenhang mit der falschen Verwendung des Symbols \ Programmierer-Chat. Angenommen, der Spitzname des Benutzers wird als in den Chatkörper eingefügt

    <code>&lt;a href=javascript:msgto(&amp;quot;Algol&amp;quot;)&gt;Algol&lt;/a&gt;</code> Wenn wir das Merkmal in Al'gol ändern , akzeptiert der Chat einen solchen Spitznamen, ersetzt ihn jedoch durch Al \ 'gol , da er naiv davon ausgeht , dass durch das Einfügen eines Backslashs das Tag vor Zerstörung geschützt wird. Eigentlich ist es nicht :) . Wenn Sie einen solchen Spitznamen in den Chatkörper einfügen, sieht er folgendermaßen aus:
    &lt;a href=javascript:msgto(&amp;quot;Al\ gol")'&gt; Al'gol &lt;/a&gt; .
    In diesem Fall gibt der Explorer eine Fehlermeldung aus, wenn er versucht, auf den Spitznamen zuzugreifen. Der Grund ist folgender: Das \ Symbol macht nur innerhalb von Javascript-String-Konstanten Sinn, nicht jedoch in HTML! HTML selbst versteht das Zeichen \ nicht und betrachtet daher das erste gefundene Apostroph als das Ende des Attributs href , obwohl ihm das Zeichen \ vorangestellt ist. So zerstört beispielsweise ein solcher Spitzname Algol '= die Struktur des Tags, obwohl vor dem Apostroph ein Backslash eingefügt wird

    Hacken auf http-Ebene

    Wie bereits erwähnt, kann der Chat-Server das Referer- Feld einer HTTP-Anfrage nachverfolgen und ihm nicht erlauben, zu chatten, wenn sich dieses Feld von dem Feld unterscheidet, das Sie benötigen. Um dieses Hindernis zu umgehen, müssen Sie den HTTP-Anforderungsheader abfangen, der per Chat an den Server gesendet wurde (mithilfe spezieller Programme wie Naviscope), und ein spezielles Programm schreiben, das Anforderungen an den Server sendet. In diesem Fall kann der Inhalt der Abfragen (z. B. die Farbfeldwerte) beliebig festgelegt werden.

    Ich werde nicht im Detail darauf eingehen. Dies geht über das Hacken von HTML hinaus.

    Ich stelle nur fest, dass Sie auf HTTP-Ebene schlauere Dinge tun können als mit herkömmlichen Mitteln von HTML oder JavaScript. In jedem Fall empfehle ich, HTTP-Anforderungsheader anzuzeigen, wenn Sie im Chat arbeiten. Sie werden Ihnen helfen, die Arbeit des Chats genauer zu verstehen.

    Wunder mit einem Symbol =

    Was wird Ihrer Meinung nach im Browser für eine solche HTML-Zeile angezeigt:

    &lt;font onclick = alert ('=')&gt; Text &lt;/ font&gt; ? Ich wette, Sie werden es nicht erraten (es sei denn, Sie arbeiten natürlich bei Microsoft und haben MSIE nicht entwickelt). Das Ergebnis ist so spezifisch, dass ich kein Beispiel machen konnte, das es demonstrieren würde. . Aber Sie können das Wort glauben, dass das folgende im Browserfenster angezeigt wird: &lt;fontonclick = alert ('=')&gt; Text Wie Sie sehen, wird das öffnende Tag in diesem Fall vom Browser einfach nicht als Tag wahrgenommen, obwohl keine Syntaxfehler vorliegen. :) ). Und was passiert, wenn wir schreiben? Text

    Seltsamerweise ist in diesem Fall alles in Ordnung, obwohl ein Syntaxfehler vorliegt. Und wenn wir auf den Text klicken, erscheint die Warnung = . Versuchen Sie, den dritten Apostroph durch die spitze Klammer oder durch den Text zu verschieben:

    &lt;font onclick = alert ('=')&gt; Text '&lt;/ font&gt; Es wird auch ein unerwartetes Ergebnis sein.

    Leider habe ich keinen Quellcode oder keine detaillierte Dokumentation für MSIE, aber ich denke, dass in diesem Fall ein offensichtlicher Fehler in MSIE vorliegt. Wahrscheinlich analysiert der Browser den Code in zwei Schritten. In der ersten Phase wählt er Tags, deren Attribute und den Text zwischen ihnen aus und in der zweiten Phase analysiert er den JavaScript-Inhalt der Tag-Parameter (dies betrifft nur die Attribute, die Skriptwerte wie href oder onclick zulassen ). Während der ersten Analyse betrachtet der Browser aus irgendeinem Grund die Kombination = 'als den Anfang der Zeile, obwohl sich das = Symbol bereits in der Zeile befindet! Wenn Sie dann = ' für den Zeilenanfang nehmen, sucht das Programm nach dem Ende (wobei Sie völlig vergessen, dass eine andere Zeile offen und nicht geschlossen ist). Daher wird alles, was auf = ' (oder = " ) und bis zum nächsten Zeichen ' folgt, ignoriert und als Zeichenfolge gezählt. Daher hat der Browser im ersten Beispiel das Tag nicht erkannt: Er hat die schließende spitze Klammer nicht gefunden, weil es sich (sozusagen) in der Zeichenfolge befand Noch überraschender ist, dass der Browser in der zweiten Phase der Analyse der Tag-Parameter alles richtig erkennt (Sie können dies sicherstellen, indem Sie im zweiten Beispiel auf den Text klicken) und die Linie erkennt, wo dies erforderlich ist, und die schließende spitze Klammer auch, wo dies erforderlich ist. zu diesem Fragment eines dritten Text zweites Beispiel ist in Klartext nicht angezeigt (weil, da es nicht der Körper des Tages ist), ist aber nicht paramatrom-Tag (wie in der Phase der Analyseparameter für die Compiler es einfach nicht kommen)! Flamme Hallo Bill!

    Mit diesem Browser-Fehler konnte ich einen Teil des Chat-Codes auskommentieren, indem ich mich einfach unter einem Spitznamen = anmeldete :) ). Hier ist ein Codeausschnitt, in dem eine Liste der im Chat vorhandenen Personen angezeigt wird:

    <code>&lt;a href=javascript:parent.window.messageFor("=")&gt;=&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="javascript:parent.window.messageFor(&amp;quot;Модератор&amp;quot;)"&gt;Модератор&lt;/a&gt;&lt;br&gt;</code>

    In diesem Fall ist mein Spitzname in der Liste einfach nicht aufgetaucht, weil das Fragment zwischen den Anführungszeichen steht

    )&gt; = &lt;/a&gt; a href = Javascript: parent.window.messageFor ( erschien außerhalb des Körpers von Tags: -}. Wenn Sie jedoch auf den Moderator klicken, wurde die Funktion parent.window.messageFor mit dem Parameter = aufgerufen. Ähnliche "Effekte" gab es auch beim Anzeigen meiner Nachrichten im Chat.

    Bemerkenswert (oder traurigerweise - auf der Suche nach jemandem) ist, dass dieser Fehler fast überall auftritt, wo Sie sogar einen Thread eingeben können (zumindest für MSIE 5.50.4134.0600), und dafür müssen Sie nicht einmal etwas an der Form ändern. Und das Schlimme ist, dass es schwierig ist, signifikante Vorteile daraus zu ziehen (z. B. ein Skript auszuführen).

    Zusammenfassend stellen wir fest, dass das Zeichen > einen ähnlichen Effekt hat, der als Ende des Tags wahrgenommen wird, obwohl es sich in der Zeichenfolge befindet. Fragment

    &lt;font onclick = alert ('&gt;')&gt; Text &lt;/ font&gt; wird vom Browser als fehlerhaft interpretiert und es gibt einen Fluch, dass die String-Konstante nicht geschlossen ist.

    Zwei Hacking Chat t

    Chat T hat die folgenden Zeichen im Farbfeld verpasst:

    ' ` = ;

    Beim Einfügen von Farbe in den Chat waren keine Framing-Anführungszeichen vorhanden. Fragment von Nachrichten im Chat (der Autor des Chats hält es übrigens anscheinend nicht für notwendig, die Tags zu schließen), obwohl wir hoffen, dass dies getan wird, um die Leistung zu verbessern):

    <code>&lt;FONT COLOR=008000&gt;&lt;a href=javascript:parent.window.Mtm(&amp;#39;22:18:18&amp;#39;)&gt;22:18:18&lt;/a&gt;- &lt;a href=javascript:parent.window.mfor(&amp;#39;BalamUY&amp;#39;)&gt;BalamUY&lt;/a&gt; : вошел в комнату &lt;FONT COLOR=green&gt;&lt;a href=javascript:parent.window.Mtm(&amp;#39;22:18:03&amp;#39;)&gt;22:18:03&lt;/a&gt; - &lt;a href=javascript:parent.window.mfor(&amp;#39;Fialka&amp;#39;)&gt;Fialka&lt;/a&gt; : Sponsor&gt; Если интересная, то ниче.</code>

    Es war peinlich, dass der Raum nicht vom Filter übersprungen wurde. Nach einiger Überlegung fand ich jedoch die folgende Lösung: Ich habe die Farbe selbst in einfache Anführungszeichen gesetzt und nach der Farbe ohne Leerzeichen den style-Parameter eingefügt: 'red'style = background-image: url (javascript: while (1 == 1) open ( )) . Wie im zweiten Kapitel erwähnt, ist der Trennungsraum in diesem Fall nicht erforderlich. :) ).

    Übrigens war dieser Chat voller Frames, einschließlich solcher, die versteckt und leer waren - wahrscheinlich über zukünftige Erweiterungen nachgedacht. Aber während Administratoren über Erweiterungen nachdachten, fand ich eine nützlichere Anwendung für sie. Ich habe lange in diesem Chat gehangen - ein paar Monate. Und es hing nicht nur: In einen der versteckten Rahmen schob ich mein Saytik. Und auf der Website waren Banner Banner-Netzwerk. Also habe ich ungefähr Hunderttausende von Bannerplakaten gemacht, und meine Website ist im Ranking der Rambler Top 100-Hits (in ihrer Gruppe) auf 5-6 Plätze gesprungen. Leider korrelierte das Bannernetzwerk das Verhältnis von Treffern / Hosts und stellte fest, dass es mitgeführt wurde. Es stellte sich heraus, dass derselbe Besucher meine Website 50 Mal am Tag besucht. Mein Konto wurde gesperrt. Also wohl noch da und hängend, unruhig :) ).

    Aber zurück zu unseren Schafen. Nach einiger Zeit wurde cgi-shku durch die Verwaltung des Chats ersetzt. Ich weiß nicht, welche "Verbesserungen" in der zweiten Ausgabe vorgenommen wurden, aber ich habe nur eine Änderung bemerkt: Jetzt war die Länge der Zeilenfarbwerte begrenzt und betrug etwa 10 Zeichen (diese Einschränkung gilt übrigens in vielen Chats, obwohl ich nicht verstehe, was sie bedeuten Ist es nicht einfacher, die eingegebenen Zeichen zu filtern, obwohl sie auf diese Weise möglicherweise vor einem Pufferüberlauf geschützt sind? In dieser Situation hat die alte Methode natürlich nicht mehr funktioniert. Sie können ein anständiges Skript nicht in 10 Zeichen packen (auch der Stil selbst passte nicht hierher). Mir wurde klar, dass man nur den Spitznamen oder die zweite Methode durchbrechen kann - die Zerstörung der HTML-Struktur. Ich habe es mehrere Stunden lang versucht. Neben dem billigen Effekt des Verschwindens des Nickes (das Kapitel "Wunder mit dem = Symbol") hat nichts funktioniert. Das Aufbrechen der Struktur hat aus folgendem Grund nichts gebracht: Ich habe das Symbol anstelle der Farbe eingefügt und die Zeile geöffnet, aber sie wurde durch einen Apostroph geschlossen, der auf die Zeit Bezug nahm (hier war der Chat nur ein Glücksfall - er war nicht als Schutzmaßnahme gedacht, obwohl viele Chats speziell für diese Fiktion eingefügt wurden Tags wie <! '"'> ):

    <code>&lt;FONT COLOR="&gt;&lt;a href=javascript:parent.window.Mtm(" 22:18:18')&gt;22:18:18&lt;/a&gt; - &lt;a href=javascript:parent.window.mfor(&amp;#39;Algol&amp;#39;)&gt;Algol&lt;/a&gt; Привет!</code>

    Das heißt, nur ein Fragment von <a href = javascript: parent.window.Mtm ( . Und alles, was ich erreicht habe, war, dieses Tag eines Links für eine Zeit lang zu löschen. Wenn es möglich wäre, doppelte Anführungszeichen anstelle von einfachen Anführungszeichen einzufügen, dann gäbe es kein Problem, denn im Chat doppelte Anführungszeichen wurden nicht verwendet. Aber das Symbol "wurde vom Filter nicht übersprungen. Der Eintrag unter dem Spitznamen vom Typ Algol = gab auch nicht an, weil die Symbole nach 'Algol =')> ignoriert wurden und nicht als Variablenparameter angesehen wurden. Natürlich die am Ende des Kapitels" Variationen über "beschriebene Variante Thema ", aber diese Skripte funktionierten nur, wenn ich auf meinen Link klickte und :( (. Ich war bereit zuzugeben, dass der gesamte Chat nicht gehackt werden kann. Im letzten Moment entdeckte ich, dass der Backslash auch ein Terminator für HTML-Zeilen ist, und dieses Symbol wurde vom Filter übersprungen! Ohne zweimal darüber nachzudenken Ich habe mich mit dem Spitznamen Algol und der Farbe " angemeldet. Und dann habe ich die folgende Zeile als Chatnachricht gesendet: " style = background-image: url (javascript: alert ("Win_Will be_With_a_nami!") . Meine Nachricht im Chatkörper sah folgendermaßen aus:

    <code>&lt;FONT COLOR="`"&gt;&lt;a href=javascript:parent.window.Mtm(&amp;#39;22:18:18&amp;#39;)&gt;22:18:18&lt;/a&gt; - &lt;a href=javascript:parent.window.mfor(&amp;#39;Algol&amp;#39;)&gt;Algol&lt;/a&gt;`style=background-image:url(javascript:alert('Победа_будет_за_нами!'))</code>

    Gleichzeitig wird das Fragment <a href=javascript:parent.window.Mtm('22:18:18')> 22:18:18 </a> - <a href = javascript: parent.window.mfor ('Algol') > Algol </a> wurde vollständig kommentiert und als Farbe betrachtet, und der Stilparameter befand sich innerhalb des Tags! Das Skript hat funktioniert :) ).

    Also müssen Chat-Programmierer T eine neue Version ihres Nachwuchses entwickeln. Es bleibt abzuwarten, wie viele Lücken sie hinterlassen und wie langsam sie sie korrigieren. Sie sagen das Ganze in der Psychologie: Die Entwickler von Schutzsystemen können sich nicht an die Stelle eines Einbrechers setzen, sondern beurteilen das System von ihrer Seite, anstatt es von außen zu betrachten.

    "Abfangen", "Fälschen" und Rechte erlangen.

    Erwägen Sie Methoden zum Erfassen von Nachrichten (Privaten) anderer Personen und zum Senden von Nachrichten im Namen anderer Chatovtsy. Es gibt verschiedene Methoden zum Abfangen, die für verschiedene Arten von Chats entwickelt wurden. Wenn der Chat vollständig gehackt ist, ist die Operation "Fälschung" (dh das Einfügen von Replikaten im Namen anderer Chatovtsy) nicht schwierig: Sie müssen das Opfer nur an ein privates Skript senden, das Text in die Replikatzeile schreibt, und dann auf die Schaltfläche "Senden" klicken. Ebenso können Sie einen privaten Benutzer herausziehen. Solche Methoden sind jedoch zu grob, primitiv und schwierig anzuwenden. Anspruchsvollere Abfangmethoden, bei denen Sie der Chat selbst für einen anderen Benutzer übernimmt.

    Beim Erstellen von HTML-Chats besteht das Hauptproblem darin, dass das HTTP-Protokoll im Prinzip keine dauerhaften Verbindungen unterstützt. Dies bedeutet, dass jedes Mal, wenn Sie Nachrichten empfangen oder eine Antwort senden möchten, das Chat-Programm Sie „kennen“ und verstehen muss, dass Sie Sie sind. Wenn sie die Benutzer nicht erkennen würde, könnte sie Ihnen Ihre Daten nicht senden und Ihre Nachrichten nicht in Ihrem Namen verfassen. Um Teilnehmer zu identifizieren, verwenden Chats verschiedene Methoden. Die am häufigsten verwendete Methode ist die IP-Adresse und die dynamische Namensmethode. Die erste Methode basiert auf der Tatsache, dass derselbe Benutzer während der Kommunikationssitzung dieselbe IP-Adresse hat. Ich werde nicht im Detail auf diese Methode eingehen, sondern nur sagen, dass diese Methode Nachteile hat. Dies funktioniert möglicherweise nicht, wenn der Benutzer einen Firmen-Proxy-Server verwendet oder mehrere Chat-Fenster geöffnet hat. In letzter Zeit wurde häufig eine andere Methode verwendet - die Methode der dynamischen Namen. Der Kern der Methode besteht darin, dass dem Benutzer bei jeder Anmeldung am Chat automatisch eine temporäre eindeutige Anmeldung zugewiesen wird. Diese Anmeldung wird automatisch auf der Seite registriert, die das Gateway an den Benutzer sendet. Jedes Mal, wenn ein Benutzer ein Replikationsformular sendet oder Nachrichten vom Chat anfordert, sendet seine Seite eine temporäre Anmeldung an den Server, anhand derer der Server den Benutzer tatsächlich identifiziert. Temporäres Anmeldesystem wird zufällig generiert und zwei verschiedene Benutzer können nicht dasselbe Login haben. Login kann aus mehreren Teilen bestehen. Am häufigsten ist dies die Sequenznummer des Benutzers in der Sitzung und das zufällig generierte Passwort. Da die Anmelde-ID in der Chat-Seite eines jeden Benutzers „eingenäht“ ist, weiß das System genau, mit welchem ​​Benutzer es kommuniziert, unabhängig von seiner IP-Adresse, den Proxyservern, der Anzahl der offenen Fenster mit Chat usw.

    Es ist klar, dass wir es nicht schwer gehabt hätten, unter den Benutzer zu treten, wenn wir den Benutzernamen des Benutzers gekannt hätten. Wir hätten lediglich unser Login auf seiner Seite korrigiert. Dann würde das System uns dafür auffordern ... Es stellt sich heraus, dass Sie dies problemlos tun können, wenn der Chat gehackt wird, und wir haben die Möglichkeit, Ihr Bild in den Chat einzufügen. Wenn Sie dann einen Schnüffler als Bild verwenden (siehe Kapitel "Variationen über ein Thema"), können wir die temporären Logins aller Chatteilnehmer abrufen! Und wenn wir an einem bestimmten Login interessiert sind, müssen Sie ihm privat einen Schnüffler schicken. Ich stelle Folgendes fest: Die abgefangene Anmeldung ist nur so lange gültig, wie sich der Benutzer im Chat befindet. Wenn er sich erneut anmeldet (sich abmeldet und wieder anmeldet), verfügt er bereits über eine neue temporäre Anmeldung.

    Es ist klar, dass, wenn Sie die temporäre Anmeldung des Administrators abfangen, seine Rechte automatisch an uns übertragen werden - zum Beispiel die Fähigkeit, Tags direkt in Nachrichten einzufügen (d. H. Das Fehlen eines Filters für < und > Zeichen) oder die Fähigkeit, Informationen aus dem Chat zu löschen oder Informationen zu erhalten usw.

    Dritter Hacking-Chat t

    Also zurück zum leidenden Chat T. Vor nicht allzu langer Zeit ist Chat T komplett auf den neuen Kern umgestiegen. Jetzt haben sich die Spielregeln geändert. Anfangs hat das Farbfeld fast alles verfehlt (bis zu den Zeichen < und > ), und ich konnte es leicht knacken. Aber bald wurde dieses Loch versiegelt (nicht ohne meine Teilnahme). In der neuen Version der Chat-Farbe fehlen nur Zahlen und Buchstaben. Das Hacken durch Farbe ist unmöglich geworden. Dies führte zu einer Suche nach ausgefeilteren Methoden. Tatsächlich bleibt nur ein Spitzname übrig. Aus eigener Erfahrung wusste ich, dass es ziemlich schwierig ist, einen Chat über einen Spitznamen zu unterbrechen, da die Entwickler die Filter für Spitznamen sehr sorgfältig ausgewählt haben. Im Chat wurde jedoch der "Chip", dass "der Zeichensatz für den Spitznamen erheblich erweitert wurde", übertrieben dargestellt. Es ging wie eine Art Werbung. Als ich ein bisschen mit Filtern nach dem Spitznamen herumgespielt habe, habe ich festgestellt, dass die folgenden Zeichen fehlen:

    ' ` = ; \

    Das Symbol "wurde übersprungen, aber vor dem Chat wurde automatisch das Symbol" eingefügt. Die mit dieser Kombination verbundenen Mechanismen sind im Kapitel "Ein wenig über das Backslash-Symbol" beschrieben. Die in diesem Kapitel beschriebenen Effekte führten jedoch nicht zum gewünschten Ergebnis und waren unpraktisch in der Verwendung. Ich suchte nach einem anderen Lösung: Und ich habe es gefunden!

    Sehen wir uns ein Fragment von Nachrichten im Chat an:

    <code>&lt;a href='javascript:top.msgto("Algol")'&gt;Algol&lt;/a&gt;&lt;font&gt; Всем приветик &lt;/font&gt;&lt;a href='javascript:top.msgto("Стелла")'&gt;Стелла&lt;/a&gt;&lt;font&gt; Привет &lt;/font&gt;</code>

    Wie Sie sehen, wurde der Spitzname als Link angegeben, und beim Klicken wurde eine bestimmte Funktion aufgerufen. Der Linkhandler href wurde in einfache Anführungszeichen eingeschlossen und der Spitzname selbst in doppelte Anführungszeichen. Da das doppelte Anführungszeichen im Sinne eines Spitznamens im Chat eigentlich nicht übersprungen wurde, war es unmöglich, über die Grenzen des Funktionsarguments hinauszugehen. Der Spitzname type = ` funktionierte nicht, weil der Handler in einzelne Apostrophe eingeschlossen war, und wie im Kapitel" Wunder mit dem Symbol = "gezeigt, funktionierte der Effekt mit dem Zeichen = nicht. И тут я перечитал собственную статью, и обнаружил следующее: если обработчик заключен в кавычки, то первая же закрывающая кавычка считается концом обработчика, даже несмотря на то, что сама она находится внутри других кавычек (и идет как строковая константа). Dh например при компиляции следующего тега:

    &lt;a href='javascript:msgto("Mc'Donald")'&gt; браузер игнорирует двойные кавычки (поскольку они относятся не к HTML а к JavaScript), и воспринимает апостроф после Mc как закрывающую кавычку обработчика. Also обработчиком является только javascript:msgto("Mc . Фактически это означало взлом чата. Однако нужно было довести баг чата до нужной "кондиции". Это тоже оказалось непросто. Можно было конечно логиниться под ником типа 'onmouseover=`alert('Hello')` . Но во-первых чат не пропускал слишком длинных ников, а во-вторых в чате полно модераторов, и понятное дело они бы заметили "необычный" ник. Поэтому я решил ломать методом разрушения структуры. После некоторых раздумий я нашел подходящий ник: `='A'=` . Посмотрим как в таком случае сообщения в чате: <code>&lt;ahref='javascript:top.msgto("`='A'=`")'&gt;`='A'=`&lt;/a&gt;&lt;font&gt;` style=background-image:url(javascript:alert()) &lt;/font&gt;&lt;a href='javascript:top.msgto("Стелла")'&gt;Стелла&lt;/a&gt;&lt;/em&gt;</code>

    Фрагмент

    ` style=background-image:url(javascript:alert()) был послан как сообщение в общак. Разберем как браузер компилирует приведенный пример: обработчиком href является 'javascript:top.msgto("`=' . Поскольку обработчик заключен в кавычки, то пробел перед следующим атрибутом тега не требуется. Как таковым и воспринимается A' , а его значением `")'>` . Поскольку значение тега заключено в кавычки, то пробел опять не требуется и дальнейший знак = опять рассматривается как значение некоего атрибута тега: 'A' , как и последующий фрагмент ` ` . Далее следует уже атрибут style=... который оказался внутри тега! Вот так-то :) ).

    Еще несколько взломов многострадального чата T

    Как видно из предыдущей главы, в чате Т свободно можно было втиснуть скрипты, и естественно, что я творил там что хотел (вплоть до того, что назначал себя админом 255 уровня :) . Это конечно сильно не нравилось разработчику чата (с которым я кстати активно общался), и он как бы "пофиксил" баг следующим способом: в сообщениях чатлан он заменял слово script на script , где латинские буквы с и p были заменены на такие же, но из русской раскладки, и естественно, HTML не понимал их. В результате комбинация типа ` style=background-image:url(javascript:alert('Победа_будет_за_нами!')) не работала. Несмотря на то, что по прежнему можно было сниферить чат и ставить обработчики на события типа onmouseover (где префикс javascript: не обязателен, поскольку он по умолчанию считается языком обработчиков событий), но невозможность вставить скрипт, который бы сам запускался меня не устраивала. И тут меня снова выручила многоступенчатая система трансляции HTML. Как уже было замечено, при компиляции HTML в первую очередь компилирует теги и их параметры, а лишь затем компилируется содержимое обработчиков. А теперь вспомним, что каждый символ помимо "обычного" представления имеет закодированное представление (типа ½ или ½ ), которое превращается в обычный символ, при трансляции HTML. Возникает вопрос: на какой именно стадии трансляции происходит раскодировка кода в символ? Несложные эксперименты показывают, что последовательность такова:

    Компиляция HTML > Раскодировка символов > Компиляция обработчиков

    А посему, содержимое обработчиков можно не стеняясь посылать в закодированном виде, при этом фильтры чата его пропускают, а HTML уже на этапе трансляции превращает их в нормальный вид и исполняет! Проверте сами на таком примере (обработчик alert() заменен кодовой комбинацией):

    <code>&lt;font onclick=alert()&gt;Click me&lt;/font&gt;</code>

    Таким образом послав комбинацию

    ` style=background-image:url(javascript:alert('Победа_будет_за_нами!')) на экране чатовцев послушно появился алерт :) .

    Замечу две особенности : 1. Содержимое тега

    &lt;script&gt; нельзя посылать в закодированном виде, его содержимое не раскодируется HTML-ом; 2. Знак = после имени параметра тега и кавычки, ограничивающие обработчики, транслируются до раскодировки, и поэтому их посылать в закодированном виде нельзя (а жаль :{ ).

    Описанная особенность HTML значительно расширяет множество "крякаемых" чатов. Ведь достаточно что бы чат пропускал в поле ника символы & и ; , а в теле чата ник фигурировал в каком нибудь обработчике (типа href="javascript:msg('ник')" ), и в результате, залогинившись под ником '+alert()+' (который после компиляции будет выглядеть как '+alert()+' ), мы получаем скрипт срабатывающий при нажатии на ник.

    Aber das ist noch nicht alles. Оказывается джаваскриптовский обработчик в параметре href можно писать и в юникоде! Вместо ника '+alert()+' можно логинится под '%2Balert()%2B' , результат будет тот же :) . Однако раскодировка юникода проходит только в обработчиках href (или в других, где должен присутствовать адрес). В других обработчиках (например onclick ) раскодировка юникода не происходит.

    Спустя некоторое время, админ запретил символ обратного апострофа в именах юзеров, и ник `='A'=` больше не проходил. Немного подумав, я нашел другой ник, который фактически делал то же самое: Don't= . Принцип его работы я думаю вы поймете сами (если вы читали предыдущие главы).

    Взлом UBB / YABB / IB форумов

    1. Через UBB тег [IMG] . В UBB/YABB форумах можно вставлять картинки, указав URL адрес в UBB теге [IMG]. Например: [IMG]http://myserver.ru/logo.gif[/IMG] такой тег вставляет в сообщение картинку с адресом http://myserver.ru/logo.gif . При этом ничего не мешает вставить например такой тег [IMG]javascript:alert()[/IMG]. Как вы догадываетесь, такой адрес будет выдавать каждому кто посмотрит на ваше сообщение алерт вместо картинки. Правда некоторые версии UBB требуют что бы указанный адрес указывал на файл с расширениями gif или jpg , но эта проблема легко решаема. Просто ставим в конце точку с запятой и имя файла картинки : [IMG]javascript:alert();a.jpg[/IMG] . Конечно это повлечет ошибку джава скрипта, но нам уже все равно, поскольку первая часть скрипта сработает :) . Есть еще одна дыра в теге IMG: в некоторых версиях этот тег пропускает кавычку, как результат работает следующий пример:

    [IMG]"s=`s.jpg[/IMG]`style="background-image:url('javascript:alert()')" . Результат- тот же самый что и в первом примере.

    Приведенный глюк работает как в UBB так и в YABB форумах. Учитывая еще тот факт, что UBB форум хранит пароль и логин пользователя в кукисах, которые читаются страничкой форума, и хранятся в переменных, то запустив в тело чата сниффер, мы можем легко выковырять пароли и логины всякого пользователя, который посмотрит на наш мессаг :) ).

    2. Как уже отмечалось, UBB форум хранит логин, ник и пароль пользователя в кукисах. Оказывается, что в некоторых случаях UBB форум берет ник пользователя не из своей БД, а из кукиса пользователя, при этом проверки ника на теги и любые символы не происходит! Таким образом, если в отсылаемом на сервер мессаге подделать кукис, и вставить вместо ника тег скрипта, то форум спокойно вставит этот тег в тело форума! Правда разработчики перемудрили, и в некоторых частях форума вставляются ники из БД, а в некоторых - из кукисов. Мне известны три случая, когда ник берется из кукиса: 1. На главной странице форума (там где пишется кто автор последнего сообщения в такой-то теме) 2. При ответе на реплику "с цитированием" - во фразе цитирования. 3. При редактировании сообщения (во фразе "отредактированно тем-то"). Отмечу, что 3.06.2002 фирма UBB выпустила патч на дырку в кукисах (не без моего скромного участия). Однако, несмотря на это, большинство форумов по прежнему используют старые версии :) ).

    3. А вот еще одна дырка в форумах http://www.ikonboard.com: помимо того, что там срабатывает дырка связанная с тегом [IMG] , там есть еще и дырка в теге [COLOR] . Например посылая в форум такое сообщение

    [color=red;background-image:url('javascript:alert()')]Привет[/color] на экран каждого кто просмотрит ваше сообщение выскочет алерт. Суть дыры думаю не стоит объяснять: понятно и так.

    Всякая всячина

    Система безопасности аля микрософт подразумевает невозможность доступа с загруженной HTML странички к любой информации на машине, в том числе и к другим страничкам, открытым в данный момент. Однако эта система имеет некоторые странности в работе. Так, например, метод window.open("http://ya.ru", "privat") джаваскрипта должен открывать новое окно с именем "privat" и загружать в него сайт ya.ru. Это так и происходит если... окно с таким именем еще не открыто. Если же одноименное окно или фрейм уже открыт, то сайт загружается в уже открытое окно (или фрейм). А прикол заключатеся в том, что это окно может не иметь никакого отношения к нашему скрипту, и вообще принадлежать другому сайту )). Убедитесь сами: Откройте в новом окне ссылку: http://chat.bigmir.net и зайдите в чат. А потом кликнете здесь: тыц , после чего посмотрите на свой приват в чате :) ). Красиво ?

    В некоторых чатах существет автоматическая вставка ссылок. А ведь можно послать и ссылку на сниффер :) . Типа вы посылаете сообщение Друг Билли (Вилли/Джони/Джимми)! Посмотри какой классный порносайт я откопал http://fig.vam.com/cgi-bin/girl.cgi , а в общак вставляется

    Друг Билли (Вилли/Джони/Джимми)! Посмотри какой классный порносайт я откопал &amp;lt;a href=http://fig.vam.com/cgi-bin/girl.cgi target=_blank&gt;http://fig.vam.com/cgi-bin/girl.cgi После чего ваш друг смело тыкает в ссылку и ничего не увидев, советует вам выпить рассольчика, на что вы виновато каетесь Ой, Билли (Вилли/Джони/Джимми), я ошибся :( , держа в руках IP адрес , номер сессии или пароль с логином вашегособеседника :) .

    А вот еще один фокус на грани фантастики. Этот фокус я услышал от одного из админов чата. Правда сам его не проверял, но полагаю что это вполне может работать. Как вы наверное видели, во многих чатах есть счетчики посетителей. Всякие там Spy или top100 . А ведь счетчик автоматически фиксирует множество параметров посетителей, в том числе IP адреса, парамтеры среды окружения, поле referer и т.д., то есть фактически является сниффером. А статистика счетчика может быть открыта для всех... Улавливаете :)

    Хочу еще раз остановится на взломе чатов через цвет. Некоторые чаты пропускают любые символы в поле цвета, однако при вставке в тело чата, перед введенным значением цвета, вставляют символ # . Например если пользователь задал цвет aaff00 , то в тело чата этот цвет вставится в виде <font color=#aaff00> . В силу особенностей атрибута color, выяснилось следующее: если впереди цвета автоматом встявляется символ # , то чат ломается только если поле цвета пропускает пробел. Если же цвет пропускает любые символы, но не пробел, то взломать чат нельзя (можно только вызвать глюки например тегом <xml> задаваемым вместо цвета). Не буду объяснять почему это происходит, просто примите это на веру :) .

    В предыдущих главах уже упоминалось про метод вставки скриптов через background-image:url(javascript:...) . Эту запись можно сократить до background:url(javascript:...) . Результат тот же самый. Часто в чатах или форумах стоят фильтрв на ключевые слова типа javascript. Это можно обходить следующим образом: background:url(VBScriptt:alert()) oder background:expression(alert())
    Табличка часто применяемых кодов:
    Symbol Десятичная кодировка 16-ая кодировка* Символьная кодировка Unicode
    " " " " "
    ' ' '   '
    ` ` `   `
    <пробел>   +
    = = =   %3D
    < < < < %3C
    > > > > %3E
    \ \ \   %5C
    % % %   %
    + + +   %2B
    <короткий дефис> ­ ­ ­ %AD
    & & & & &

    *-в некоторых случаях (если символ стоит в конце строки) точку с запятой можно опустить.

    Es wäre nicht überflüssig für Ihre Freunde, diese Informationen herauszufinden und den Artikel mit ihnen zu teilen!

    Kommentare Kommentarfenster erweitern / minimieren erweitern / reduzieren

    Denken Sie daran, dass der Inhalt und der Ton Ihrer Nachricht die Gefühle von echten Menschen verletzen, Respekt und Toleranz gegenüber Ihren Gesprächspartnern zeigen können, auch wenn Sie deren Meinung nicht teilen. Ihr Verhalten unter den Bedingungen der Meinungsfreiheit und Anonymität, die das Internet bietet, ändert sich nicht nur virtuell, sondern auch real. Alle Kommentare sind vor dem Index verborgen, Spam wird kontrolliert.
    Gefällt es dir Abonnieren Sie RSS- Feeds,
    die ersten sein, die Informationen erhalten
    über alle wichtigen Ereignisse des Landes und der Welt.
    Sie können auch shram.kiev.ua unterstützen, klicken Sie auf: