Bonjorno амигасы =) Сегодня самое подходящее настроение клацать по кнопам во имя великого Uniform Resource Locator широко известного в народе как URL. Казалось бы - УРЛ и УРЛ, дело привычное и банальное... Но это не так! Одно и тоже место можно обозначить довольно большим количеством способов. О практическом применении поговорим позже, а пока теория маскировки УРЛ.
Имя хоста->IP
Первое, и самое простое что напрашивается в голову,
это перевод названия хоста в IP адрес. Возьмём скажем http://www.linux.org и будем над ним
извращаться. Переводим www.linux.org, получаем 198.182.196.56.
Проверяем - идём на http://198.182.196.56/ - работает. Просто, но уже что-то.
IP трансформации
Как известно, IP адрес состоит из четырёх компонентов -> A.B.C.D, где любой из компонентов находится в диапазоне от 0 до 255. То есть минимально возможный адрес 0.0.0.0 и максимально возможный 255.255.255.255. А что если попробовать один из компонентов выставить выше лимита? Берём IP полученный из предыдущей части (198.182.196.56) и к последней части добавляем 256 (56+256=312).. Пробуем - http://198.182.196.312.. Замечательно. Хотя IP на вид отличается от начального, суть его не изменилась. Попробуем добавить 512? http://198.182.196.568 - тоже работает. А вот с 1024 такой вариант не пройдёт. Возможно, это особенность моего
браузера, возможно что-то другое.. Это не так уж и важно.
Вывод - мы можем спокойно добавлять 256 или 512 к любой части IP адреса, суть от этого не меняется. Живой пример тому - http://454.694.708.312/ ведёт всё на тот же многострадальный
www.linux.org.
Системы исчисления
Возьмём первоначальный IP - 198.182.196.56 и переведём его в
шестнадцатеричную систему для удобства.
198 -> c6
182 -> b6
196 -> c4
56 -> 38
Получили c6b6c438? Неа. Неправильно. Забыли синтаксис
шестнадцатеричного числа - добавка 0x перед самим числом. 0xc6b6c438 - теперь правильно. Да да - 0xc6b6c438 это тоже IP адрес. Вот только если у вас IE 5.x, то http://0xc6b6c438/ можно смело не пробовать - работать не будет. Зато можно запустить калькулятор, и перевести полное число обратно в
десятеричную систему исчисления. Переводим 0xc6b6c438, получаем 3333866552. Идём на http://3333866552/ - правда приятно?
Можно попробовать в двоичной системе, но так как синтаксис двоичных чисел - 0b префикс, то такая фишка как http://0b110001101011011011000100111000/ работать не будет. Владельцы других
браузеров могут
поэкспериментировать, ибо в принципе это вполне нормальный IP адрес.
Зато на размышления наводит восьмеричная система исчисления, её синтаксис - префикс 0. Никаких букв. Стоит попробовать? Думаю стоит. Переводим c6b6c438 в
восьмеричную, получаем 30655542070, добавляем спереди 0. http://030655542070/ - работает?
Смещение
Вернёмся к нашим баранам... То есть к шестнадцатеричному
представлению IP (c6b6c438). Попробуем добавить к нему несколько не значащих знаков, например 01. Получаем 01c6b6c438, и переводим в
десятеричную - http://7628833848/ тоже работает. Принцип тот же, что в части 2.
Маскировка
И так у нас есть коротенький URL ведущий в нужное нам место - http://3333866552/ Красиво, но можно ещё красивее. Давайте попробуем http://www.microsoft.com@3333866552/ - куда попали? Дядя Билл на один хит сегодня обломался, потому что попали мы на всё тот же многострадальный www.linux.org.
Суть заключается в том, что перед знаком @ может стоять практически всё что угодно, настоящий URL находится ПОСЛЕ знака @.. Впрочем вы наверное уже сообразили что к чему.
Unicode
Unicode, unicode - как много в этом слове... У людей неискушенных частенько возникает вопрос: "А что это за непонятные циферки и знаки % во многочисленных статьях о IIS атаках?".. Так как это имеет отношение к сокрытию URLов то придётся
объяснить.
Дело в том, что не все символы по определению можно
использовать в URL, но иногда очень нужно - вот тут и приходит на помощь Unicode. Формат Unicode состоит из трёх символов - %XX, где знак процентов обозначает начало Unicode символа, а XX любое
шестнадцатеричное число.
Возьмём к примеру - http://www.linux.org/apps/index.html, и заменим apps на Unicode.
Код a -> 61
p -> 70
s -> 73
Соответственно имеем - http://www.linux.org/%61%70%70%73/index.html... Также можно замаскировать index.html, только вот лень мне чего-то, сами разберётесь, что к чему.
В написании статьи мне помогал кот - его изображение находится по адресу
http://malfunction.n3.net/cat.htm
Вот в общем и всё..