Просмотр полной версии : Dr.Web LinkChecker и переполнение IP.
Бредисловие (для тех, кто не задумывался) : IP адреса можно записывать привычным способом, а можно одним 32-битным числом в привычной десятичной форме. Например на VI можно попасть, набрав в адресной строке http://3640023671
Некоторые браузеры не контролируют (точне странно контролируют) размер этого числа. Если ввести число больше, чем 2^32, возникает циклическое переполнение.
Таким образов, в IE 7 и Opera 10.60 на ВИ можно попасть, набрав вместо 3640023671 другое число, 3640023671 + 2^32= 7934990967.
Эксерименты показали, что Dr.Web LinkChecker в любом случае проверяет 216.246.90.119, но в случае с 7934990967 выдает более развернутый результат. То есть, каким-то образом меняются "флаги"?
Тихо сам с собою...
Я был невнимателен. Оказалось, что есть два (минимум) сервера для онлайн-проверок. Если первый не может понять, что за url ему подсунули, то обращается ко второму. Если IP в пределах 2 в 32-й степени, отрабатывает он. Если нет - пересылает.
Кстати, если попросить второй сервер проверить некий скрипт на нем же расположенный, то серверы играют в пинг-понг (недолго). :D
http://online.us.drweb.com/script.1 перенаправляет на http://online.us.drweb.com/404/
http://online.us.drweb.com/404/ перенаправляет на http://online.drweb.com/
http://online.drweb.com/ перенаправляет на http://online.us.drweb.com/
ALEX(XX)
10.08.2010, 22:36
Что говорят докторовцы?
Зарегил хостинг, залил страничку с редиректом на virusinfo
<meta HTTP-EQUIV="Refresh" Content="1; URL=http:\\virusinfo.info">
IE переходит, Chrome переходит. Я думал поиграться с чекером, но он такого не понимает. Проверяет мою пустую страничку, и только. Наверное, фича. Поиграться пока не получилось.
http://habrahabr.ru/blogs/sysadm/69587/
Kuzz, Я и не утверждал, что являюсь первооткрывателем "альтернативной" записи. Более того, привычная всем тетрада и является альтернативной, для удобства.
Просто кто-то не знал, да еще забыл. Если адрес разбирается локально, то API все нормально преобразует. Если же на сервере висит скрипт, написанный... да ладно.
Надеюсь, ни у кого не вызывает сомнения, сколько я тут еще мог бы наговорить, налить воды, пофилософствовать? :biggrin2:
Не стану. "Выпей воды - удиви печень!"
Добавлено через 31 минуту
ALEX(XX), Так долго публично игнорировать я не могу. Некто уважаемый сказал, что это не тильда- раз, и ни один браузер это не съест. Точнее - предположил, не найдя минуты времени проверить %)
Заниматься чекером я начал лишь потому, что это был первый пришедший в голову распиаренный продукт. Маккофейеый тоже скачал, но как его ставить - я не осилил. Там после принятия юлы кнопок не появляется. Кажется gif тут по слепоте лекарь? :biggrin2:
Однако, все к одному. И несговорчивость маккофе, и поведение вебовцев на их форуме, и ...
Я и не утверждал, что являюсь первооткрывателем "альтернативной" записи
Я не об этом.
Там в комментариях есть и ссылки на RFC и объяснения о том, что браузеры/либы ведут себя слишком "умно", пытаясь не резолвить как dns-имя а "догадываются" о том, что это IP...
Вот у меня на FF (3.6.8 x86 2.6.32-24-generic #38-Ubuntu SMP если че)) адреса с "переполнением" не проходят
Kuzz, даже хром под win32 рубит, кстати.
Вообще, это интересная тема для исследования
Kuzz, какая ось? Разбором занимаются: сперва сам браузер, потом API ОС.
У меня сейчас нет возможности установить win 64-bit. Кто-то может проверить, как ведет себя 32-битный IP на 64 винде и линуксе при попытке переполнения? Возможны варианты.
У меня сейчас нет возможности установить win 64-bit. Кто-то может проверить, как ведет себя 32-битный IP на 64 винде и линуксе при попытке переполнения? Возможны варианты. Windows 7 X64 (Version 6.1.7600): и 32-х , и 64-х разрядный ИЕ ведет себя одинаково - разрешает что 3640023671 , что 7934990967 в 216.246.90.119. Кстати, пинг тоже проходит и в том, и в другом случае на 216.246.90.119. Похоже, что 2^32 просто отбрасывается, браузер тут ни при чем.
Kuzz, какая ось?
x86 2.6.32-24-generic #38-Ubuntu SMP если че))
:-)
Добавлено через 2 минуты
Хм, кстати:
kuzz@ray:/$ ping 3640023671
PING 3640023671 (216.246.90.119) 56(84) bytes of data.
64 bytes from 216.246.90.119: icmp_seq=1 ttl=45 time=806 ms
64 bytes from 216.246.90.119: icmp_seq=2 ttl=45 time=370 ms
^C
--- 3640023671 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 370.646/588.681/806.716/218.035 ms
kuzz@ray:/$ ping 7934990967
ping: unknown host 7934990967
kuzz@ray:/$
UbuntuX86:
http://i068.radikal.ru/1008/d0/5aa8d7b05237t.jpg (http://radikal.ru/F/i068.radikal.ru/1008/d0/5aa8d7b05237.png.html)
Графический интерфейс для сетевых инструментов
http://i053.radikal.ru/1008/0a/bc78907fdd50t.jpg (http://radikal.ru/F/i053.radikal.ru/1008/0a/bc78907fdd50.png.html)
Firefox 3.6.8:
http://s02.radikal.ru/i175/1008/8b/fd8a4946627et.jpg (http://radikal.ru/F/s02.radikal.ru/i175/1008/8b/fd8a4946627e.png.html)
Opera 10.61:
http://s46.radikal.ru/i114/1008/08/b3bdf889d8d1.png (http://www.radikal.ru)
Kuzz, я лично знаю только одного человека, который после win98 к винде не подходил :) , поэтому уточнил.
В винде также пингуется.
Похоже, некоторые браузеры по-разному решают, как быть с таким url. Хром вот еще и размер контролирует. Возможно, какой-то из браузеров может и не обращаться к системным функциям, занимаясь преобразованием самостоятельно.
В винде же функция inet_addr принимает строку, возвращает вот это:
http://imagepost.ru/thumbs/190/inet_addr.JPG (http://imagepost.ru/?v=190/inet_addr.JPG)
Я передал здесь параметром 127.0.0.1
Если подсунуть RtlIpv4AddressToString 64 битное число, она просто считывает младшие 32 бита. Никакого переполнения нет. :biggrin:
Добавлено через 6 минут
kontra, Это точно nmap? Я думал, так выглядит гномовская тулза для работы с сетью (забыл название) :O
kontra, Это точно nmap? Я думал, так выглядит гномовская тулза для работы с сетью (забыл название)
Да, гномовская тулза. Перепутал)
vBulletin® v4.2.5, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot