Итоги…

К сожалению, пыл искать ошибки, проявленный читателями против программы из
«Головоломки
№2
" :), не дал должного эффекта в этой задаче.

Часть первая никем не решена. Может, это никому не интересно, а может, слишком
сложно. В любом случае, лучший выход — не оглашать «правильный ответ», пусть
желающие, если хотят, найдут его сами. Подсказка: копать в сторону работы
с модулями.

Если честно, то я ждал с десяток ответов на вторую часть, ибо она жутко проста,
но откликнулся один только dev0id.

—начало—
C:\>nslookup 
Default Server: 192.168.1.1 
Address: 192.168.1.1 

галочка говорит о том, что программа готова принять следующий
параметр (следующий хост), ну а мы введем несколько другое
— мы введем, к примеру, буковку «A» этак не меньше 297 раз
(единой строкой). Программа вылетит с сообщением об ошибке и записью в логе, следующего содержания: 

The application, nslookup.exe, generated an application error The error occurred on 03/05/2002 @ 06:17:50.299 The exception generated was c0000005 at
address 01007E68 (<nosymbols>)

что подтверждает переполнение. Этот раздел задачи оказался не таким уж и
сложным, как мне кажется…

Многих заинтриговала третья часть 🙂 Для решения надо было знать веб-программирование
и sql, хотя бы обзорно. Правильный ответ дал Pig Killer, что неудивительно — он
профессионально занимается и тем, и другим.

Описываемая ошибка популярна среди веб-программистов. Данные, получаемые от пользователя,
без всякой обработки вставляются внутрь sql-запроса, что не есть хорошо, потому что иногда
это позволяет прочесть те данные, которые никто читать не разрешает, или еще хуже — изменить
их. Правда, в случае с xakep.ru это вряд ли возможно, т.к. используется SQL Access, возможности которого очень ограничены.
SQL-запросы, используемые скриптом просмотра результатов голосования, выглядят примерно так:

select …. where themeid=<введенное пользователем значение> …

themeid иногда «светится», когда веб-сервер выдает сообщение об ошибке, и означает
он число — идентификатор темы опроса. Скрипт результатов голосования выводит все ответы, для
которых условие themeid=<введенное значение> справедливо. Ну а чтобы вывести все до единого
ответы, нужно, чтобы это условие было справедливо независимо от значения поля themeid.

Вот какие урлы позволяют это сделать:

http://www.xakep.ru/scripts/vote2/results-total.asp?id=0+or+true

themeid=0 or true — всегда «правда»

http://www.xakep.ru/scripts/vote2/results-total.asp?id=true

themeid=true — Access SQL, который и стоит на сервере, считает это «правдой».
Почему — фиг знает 🙂 Другие СУБД с ним не согласны.

Оставить мнение

Check Also

Компания, производящая моды для Microsoft Flight Simulator X, тайно собирала пароли пользователей

Пользователи обнаружили, что компания Flight Sim Labs, разработавшая мод для популярного с…