12.07.2015 Views

img - Xakep Online

img - Xakep Online

img - Xakep Online

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

UNITSДопустим, что программист — полный олух и никакне фильтрует и не экранирует значение $fname.Таким образом, имеем стандартную уязвимостьSQL Injection. Но если использовать приемInterpolique, то даже при таком раскладе у атакующегоничего не выйдет. Посмотрим почему:$conn->query(eval(b('select * fromtable where fname=^^fname;')));Здесь функция b — это функция-обертка дляподстановки операций base64-кодированиядля переменных, отмеченных символами ^^.После несложных преобразований к базе данныхформируется следующий запрос:Продвинутая векторная графика на чистом JavaScriptselect * from table wherefname=b64d("Veh.....=")символ: то ли это l, то ли 1, то ли I. Получается,разрабатывая свою капчу, лучше вообще вовремяисключить эти символы?Q: За основу лучше всего взять следующийдиапазон символов: [A-Z][a-z][0-9] и дальшеисключать из него проблемные элементы.Многое зависит от алгоритма и, в частности,от используемого шрифта: он может быть сзасечками или без них, и это сильно повлияетна читаемость. Главная проблема в том, чтопосле деформаций, искажений и накладыванияшумов многие буквы сложно однозначноидентифицировать. Например:•«l», «1», «I» — все символы слишком похожидруг на друга;•«W», «w» —«w» очень просто спутать с «v» или «vv»;• «O»,«0», «Q» — очень похожи, особенно еслина капче добавляются шумы;•«g», «9» — практически один символ, особеннопосле деформации;•«3», «8» — могут быть спутаны друг с другом и «B»;•«4» — часто похожа на «A»;•«5» — при наклоне неотличим от «S»;•«L» — после наклона может быть спутан с «V»;•«r» — может быть перепутан с «n»;•«h» — после скручивания похоже на «n»;•«Y», y», «v» — часто неотличимы последеформаций.Но даже если вообще исключить эти символы,построить надежную капчу более чемвозможно.Q: Мне очень понравилась ваша статья про взломCAPTCHA. Но все-таки, если не писать самомунейронную сеть и не обучать ее, не реализовыватьсложные алгоритмы, ковыряясь впремудростях OCR, есть ли какие-нибудь движкидля распознавания, которые могли бы помочь вовзломе CAPTCHA?A: По большому счету, нужно то же самое, чтои для оцифровки обычного текста, то есть эффективноеOCR-решение. Технологий, которыеоткрыты, бесплатны и при этом даже работают,не так много.GOCR (jocr.sourceforge.net) — предельно простойи открытый OCR-пакет, которому не нужно142обучение. Работает очень быстро, но не такточно, как другие более сложные движки.Tesseract (code.google.com/p/tesseract-ocr)— другой бесплатный OCR-движок, которыйразрабатывался компанией HP с 1985 по 1995год. Для того, чтобы начать распознавание,потребуется более сложная настройка, но ирезультат будет намного точнее, чем у GOCR.ocropus (code.google.com/p/ocropus) — а этоуже основанная на Tesseract система для распознаваниятекста, но от любимого и одновременнонелюбимого Google :). Проект еще молодой,но уже сейчас легко интегрируемый в своихрешениях, который очень неплохо работают.Gamera (ldp.library.jhu.edu/projects/gamera) —это не просто движок, а целый фреймворк длянаписания систем эффективного распознаваниясложных образов (в том числе CAPTCHA),который несложно заставить работать.Q: Подскажи простой, но надежный способ защититьсяот SQL-инъекций.A: Один из самых эффективных способов (ну, крометолковой головы программиста) являются такназываемые файерволы для веб-приложений. Унас был подробный материал о WAF в одном изномеров ][ (www.xakep.ru/magazine/xa/130/056/1.asp). Но если говорить о надежном и, в тожевремя, простом способе уберечь свои разработкиот SQL-инъекций, то следует отметить приемInterpolique. Не так давно он был представленДеном Каминским, который стал известен послеобнаружения серьезной уязвимости в технологииDNS. Общая идея Interpolique заключается втом, чтобы при передаче пользовательских данныхв запросе к СУБД фигурировали не открытыеданные, а зашифрованная в base64 строка.Что это дает? Очень просто — в хеше строки поумолчанию отсутствуют специальные символы,которые могут привести к инъекции. Что быхакер ни передавал, в запросе будет валиднаястроковая переменная. Для примера посмотримна самый простейший запрос:$conn->query("select * from tablewhere fname=^^fname;");Здесь-то и видна самая главная фишка этогоприема. Какое бы значение не было у переменнойfname (даже если оно никак не фильтруется,и хакер туда поставил спецсимволы), приобращении к СУБД она всегда будет представленабезобидной строкой-хешем, а значит, возможностьинъекции исключена. Оригинальнаяпрезентация от автора подхода с более подробнымописанием доступна на www.scribd.com/doc/33001026/Interpolique. Оттуда, в частности,можно почерпнуть функции для обработки строкbase64 в MySQL. В другой популярной СУБД —PostgreSQL — поддержка base64 реализованачерез штатные функции encode/decode.Q: Что такое SHSH, если говорить об iPhone/iPad,и почему рекомендуют его сохранять? Как этосделать?A: Apple — это очень умная компания, которая думаетне только о качестве своей продукции, но и отом, как ее защитить. Любой девайс можно обновить,но при этом по умолчанию нет возможностивернуть прошивку назад. Это может сыграть злуюшутку, если в новой firmware Apple реализуеткакую-нибудь хитрую защиту, предотвратив возможностьсделать Jailbreak (доступ к системнымфайлам и полная свобода действия на устройстве).При попытке прошить iPhone, iPod Touch илиiPad, программа iTunes обращается на серверкомпании Apple, передавая так называемыйномер ECID (уникальный идентификатор чипадевайса) и номер текущей прошивки. Сервер всвою очередь отправляет в отчет тот самый SHSH— специальный идентификатор для модуляiBoot, который отвечает за загрузку устройства. Взависимости от идентификатора iBoot либо разрешаетпрошить девайс, либо не разрешает. Такзачем нужно бэкапить SHSH? Резон есть: какуюбы новую защиту не придумала Apple, отключиввозможность добраться до системных файловдевайса (то есть сделать Jailbreak), пользовательвсегда может откатить прошивку до той версии,где такая возможность имеется. Но это возможнотолько в том случае, если у него есть правильныйSHSH, который когда-то был выдан Apple. Сделатьбэкап SHSH позволяет утилита TinyUmbrella(thefirmwareumbrella.blogspot.com).zXÀÊÅÐ 08 /139/ 10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!