Итоги...

К сожалению, пыл искать ошибки, проявленный читателями против программы из
"Головоломки
№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, который и стоит на сервере, считает это "правдой".
Почему - фиг знает 🙂 Другие СУБД с ним не согласны.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии