27.11.2014 Views

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

SHOW MORE
SHOW LESS

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

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

взлом<br />

МЕТОД СРАБОТАЛ ЗА 48 ЗАПРОСОВ, ОЧЕНЬ НЕПЛОХО!<br />

КОД ЭКСПЛОЙТА, ИСПОЛЬЗУЮ-<br />

ЩЕГО ДВОИЧНЫЙ ПОИСК<br />

СКОРОСТЬ РАБОТЫ БЬЕТ ВСЕ РЕКОРДЫ<br />

ВОССТАНАВЛИВАЕМ БИНАРНИК<br />

ИЗ IL-КОДА<br />

ДЛЯ ХАКЕРА ОШИБКА – БОЛЬШЕ,<br />

ЧЕМ ПРОСТО ОШИБКА<br />

НА ВИКИПЕДИИ МОЖНО НАЙТИ ПРОСТОЕ И ПОНЯТНОЕ ОПИСАНИЕ<br />

МЕТОДА БИНАРНОГО ПОИСКА :)<br />

А если рассматривать реализацию на языке<br />

программирования, то вот пример функции, реализующей<br />

поиск нужного символа этим методом:<br />

returns/', $res) {<br />

echo $j;<br />

continue;<br />

}<br />

}<br />

Принцип работы прост — для каждого символа<br />

сравниваем значение его ASCII-кода со всеми<br />

возможными значениями символов. Если выполняется<br />

некоторое условие, то символ найден,<br />

и его можно выводить на экран. Если условие не<br />

выполняется — ищем дальше.<br />

Очевидно, что плюсов у этого метода нет. Совсем.<br />

За исключением того, что накалякать код такого<br />

скрипта очень просто. Но разве это то, что нужно<br />

настоящему хакеру? Оставим этот способ киддисам<br />

и будем двигаться дальше.<br />

БИНАРНЫЙ<br />

(ДВОИЧНЫЙ) ПОИСК<br />

Каждый уважающий себя программист знает о<br />

методе под названием бинарный, или двоичный,<br />

поиск. Этот метод используется для поиска<br />

позиции элемента в отсортированном массиве. И<br />

XÀÊÅÐ 07 /127/ 09<br />

именно он применяется почти во всех адекватных<br />

скриптах, программах и эксплойтах, работающих<br />

со слепыми SQL-инъекциями.<br />

Алгоритм работает следующим образом:<br />

1. Áåðåì äèàïàçîí âñåõ âîçìîæíûõ<br />

ñèìâîëîâ (äëÿ õåøà MD5 — [0-9,a-f])<br />

è ñðàâíèâàåì çíà÷åíèå êîäà ñèìâîëà â<br />

ÁÄ ñ êîäîì ñèìâîëà, êîòîðûé ìû ïåðåäàëè<br />

â çàïðîñå<br />

2. Åñëè êîä ñèìâîëà â ÁÄ áîëüøå,<br />

÷åì êîä ïåðåäàííîãî ñèìâîëà, òî íà<br />

ñëåäóþùåì øàãå â êà÷åñòâå äèàïàçîíà<br />

âîçìîæíûõ ñèìâîëîâ áåðåì äèàïàçîí<br />

îò ñèìâîëà, ñ êîòîðûì ìû òîëüêî ÷òî<br />

ñðàâíèâàëè çíà÷åíèå â ÁÄ, äî ïðàâîé<br />

ãðàíèöû ïðåäûäóùåãî äèàïàçîíà è èäåì<br />

íà øàã 1<br />

3. Åñëè êîä ñèìâîëà ìåíüøå, òî áåðåì<br />

äèàïàçîí îò òåêóùåãî ñèìâîëà äî ëåâîé<br />

ãðàíèöû äèàïàçîíà íà ïðåäûäóùåì<br />

øàãå è èäåì íà øàã 1<br />

4. Åñëè ñèìâîë íå áîëüøå è íå ìåíüøå,<br />

òî ìû êàê ðàç åãî è íàøëè<br />

function getChar($url, $field,<br />

$pos, $lb=0, $ub=255) {<br />

while(true) {<br />

$M = floor($lb + ($ub-$lb)/2);<br />

if(cond($url, $field, '',<br />

$pos, $M)==1) {<br />

$lb = $M + 1;<br />

}<br />

else<br />

return chr($M);<br />

if($lb > $ub)<br />

return -1;<br />

}<br />

}<br />

Рассмотрим этот способ на примере получения из<br />

базы MD5-хеша юзера. При этом учтем следующие<br />

условия:<br />

1. Диапазон возможных символов: 0,1,2,3,4,5,6,7,<br />

8,9,a,b,c,d,e,f.<br />

065

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

Saved successfully!

Ooh no, something went wrong!