Остались ли спецы на нулледе по профилю? :)

Тема в разделе "Мегафлуд", создана пользователем dig555, 23 янв 2012.

  1. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Всем привет! Остались ли на нулледе люди, умеющие грамотно нуллить скрипты?
    Помогите, хотя бы советом.

    Бьюсь над Перейти по ссылке Зенда нет. Некоторые файлы покорячены обфускатором. Всего пару штук.

    Проверка лицензии производится на сервере.
    Сниффером отловил, что идёт POST запрос:
    POST Перейти по ссылке HTTP/1.0
    Скрипт validomain.php возвращает xml вида c результатами проверки лицензии.

    Вроде бы алгоритм моих действий прост:
    1). Найти где оформляется POST запрос на проверку лицензии и погасить его.
    2). Найти где обрабатывается полученные от validomain.php данные и прописать, что всё всегда ок.

    Но! Поиском по файлам, я не нашёл ни единого упоминания validomain.php, хотя код без зенда! Кроме того, в коде идут упоминания некоторых функций которые нигде не написаны! Т.е. функции вызываются и работают, но тел функций я нигде не нашёл :nezn:

    Ну что, остались тут парни со стальными яйцами? :D Кто сможет вылечить эту cms? :D Ну или хотя бы подскажите, в каком направлении думать.

    Скачать diafan.CMS.4.5.0.zip (2.2 МБ):
    Перейти по ссылке
    Или на сайте CMS после регистрации в личном кабинете.
     
  2. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    Посмотрю на досуге, но не мешало бы скинуть детали:
    1. Нашел где пост идет?
    2. Какие файлы еще закодированны?
    3. Тела каких функций не можешь найти

    Глянул на код похоже там используется динамическое создание функций и наверное есть что то типа такого:
    PHP:
    $temp create_function'$match',
    'return (preg_match(\'/^{(.*)}$/\',$match[1],$m) ? "cms_$m[1]" : $match[1]);');
    P.S.S.
    Точно динам создание)
    например
    PHP:
    $R9FE304BDF914368081913A22F58F9E7E '$l=(strlen($s)-59)/c; $s = substr($s, c7, $l*c); $m = "";$n = "";$x = ""; for ($i=0;$i<$l*c;$i=$i+c)$m.= $s[$i];  $k=$m[0]; for ($i=1;$i<$l;$i=$i+7) $k.= chr(ord($m[$i])-1).@$m[$i+1].@$m[$i+2].@$m[$i+c].@$m[$i+4].@$m[$i+5].@$m[$i+6];  for ($i=0;$i<$l;$i=$i+5) $n.= chr(ord($k[$i])-c).@$k[$i+1].@$k[$i+2].@$k[$i+c].@$k[$i+4];  $b=$n[0].$n[1]; for ($i=2;$i<$l;$i=$i+c) $b.= chr(ord($n[$i])+1).@$n[$i+1].@$n[$i+2];    $e=$b[0]; for ($i=1;$i<$l;$i=$i+c)$e.= chr(ord($b[$i])+c).@$b[$i+1].@$b[$i+2];    for ($i=0;$i<$l;$i=$i+c)$x.= chr(ord($e[$i])+2).@$e[$i+1].@$e[$i+2];  return $x;';
    а потом вызывается инструкция вида
    PHP:
    $RF413F06AEBBCEF5E1WB41019DEE6FE6B create_function('$s'$R9FE304BDF914368081913A22F58F9E7E)
    Копай в этом направлении.
     
    dig555 нравится это.
  3. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Создание динамических функций осуществляется в файлах:
    \adm\includes\core.php и includes\core.php
    Значит все функции проверки лицензии анонимные и динамические (т.н. лямбда-функции).
    Рассмотрим кусок.
    PHP:
    $R130D64A4AD653C2E0FD230DE8FEADC3A explode('.'$R9FE304BDF914368081913A22F58F9E7E);
    unset (
    $R9FE304BDF914368081913A22F58F9E7E);
    @ eval (
    $R0EA76F9578BA9FE042A7B89D110CD0FC);
    unset (
    $cm);
    $R9FE304BDF914368081913A22F58F9E7E '';
    foreach (
    $R130D64A4AD653C2E0FD230DE8FEADC3A as $R130D64A4AD653C2E0FD230DE8FEADC3S)
      
    $R9FE304BDF914368081913A22F58F9E7E .= $R9FE3O4BDF914368081913A22F58F9E7E[$R130D64A4AD653C2E0FD230DE8FEADC3S];
    $RF413F06AEBBCEF5E1WB41019DEE6FE6B create_function('$s'$R9FE304BDF914368081913A22F58F9E7E);
    @ eval (
    $R129375E114D088DFCFF4AF587C2B2528);
    @ eval (
    $RF413F06AEBBCEF5E1WB41019DEE6FE6B($R376B5203DF88F7270BACAB517B0EA713));
    @ eval (
    $R0102C32DAD820F81363823DBC6955DD8);
    Ф-ция PHP create_function ( string args, string code ) создаёт анонимную функцию из переданных параметров и возвращает её уникальное имя. Обычно args передаются строкой в апострофах, что также рекомендуется для параметра code.
    Следовательно в '$s' идут параметры, а в $R9FE304BDF914368081913A22F58F9E7E сам код, который, вроде, тоже создан динамически.
    В свою очередь $R9FE304BDF914368081913A22F58F9E7E формируется конкатенацией строк из элементов какого-то массива.
    Результатом является $RF413F06AEBBCEF5E1WB41019DEE6FE6B, которая и выполняется с помощью eval(); :confused:

    Блджад! Сложно для меня. Может кого-то воодушевит на помощь материальная награда? Выслушаю предложения. :-]
     
  4. Evil_Master

    Evil_Master СтудэнТ

    Регистр.:
    14 дек 2008
    Сообщения:
    608
    Симпатии:
    425
    Вампира попроси.
     
    dig555 нравится это.
  5. +VAMPIR+

    +VAMPIR+ Master

    Регистр.:
    13 апр 2006
    Сообщения:
    533
    Симпатии:
    616
    dig555 нравится это.
  6. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Ага. Решения там нет. Но на мысль натолкнули. Сейчас дублирую eval выводом в файл. Посмотрим, что удастся выловить :)

    P.S. Пошло потихоньку :) Может, кто-то сможет объяснить что это за функция?
    PHP:
    $l = (strlen($s) - 59) / 3;
    $s substr($s37$l 3);
    $m "";
    $n "";
    $x "";
    for (
    $i 0$i $l 3$i $i 3)
      
    $m .= $s[$i];
    $k $m[0];
    for (
    $i 1$i $l$i $i 7)
      
    $k .= chr(ord($m[$i]) - 1) . @ $m[$i 1] . @ $m[$i 2] . @ $m[$i 3] . @ $m[$i 4] . @ $m[$i 5] . @ $m[$i 6];
    for (
    $i 0$i $l$i $i 5)
      
    $n .= chr(ord($k[$i]) - 3) . @ $k[$i 1] . @ $k[$i 2] . @ $k[$i 3] . @ $k[$i 4];
    $b $n[0] . $n[1];
    for (
    $i 2$i $l$i $i 3)
      
    $b .= chr(ord($n[$i]) + 1) . @ $n[$i 1] . @ $n[$i 2];
    $e $b[0];
    for (
    $i 1$i $l$i $i 3)
      
    $e .= chr(ord($b[$i]) + 3) . @ $b[$i 1] . @ $b[$i 2];
    for (
    $i 0$i $l$i $i 3)
      
    $x .= chr(ord($e[$i]) + 2) . @ $e[$i 1] . @ $e[$i 2];
    return 
    $x;
    $l = (strlen($s) - 59) / 3;
    $s substr($s37$l 3);
    $m "";
    $n "";
    $x "";
    for (
    $i 0$i $l 3$i $i 3)
      
    $m .= $s[$i];
    $k $m[0];
    for (
    $i 1$i $l$i $i 7)
      
    $k .= chr(ord($m[$i]) - 1) . @ $m[$i 1] . @ $m[$i 2] . @ $m[$i 3] . @ $m[$i 4] . @ $m[$i 5] . @ $m[$i 6];
    for (
    $i 0$i $l$i $i 5)
      
    $n .= chr(ord($k[$i]) - 3) . @ $k[$i 1] . @ $k[$i 2] . @ $k[$i 3] . @ $k[$i 4];
    $b $n[0] . $n[1];
    for (
    $i 2$i $l$i $i 3)
      
    $b .= chr(ord($n[$i]) + 1) . @ $n[$i 1] . @ $n[$i 2];
    $e $b[0];
    for (
    $i 1$i $l$i $i 3)
      
    $e .= chr(ord($b[$i]) + 3) . @ $b[$i 1] . @ $b[$i 2];
    for (
    $i 0$i $l$i $i 3)
      
    $x .= chr(ord($e[$i]) + 2) . @ $e[$i 1] . @ $e[$i 2];
    return 
    $x;
    $l = (strlen($s) - 59) / 3;
    $s substr($s37$l 3);
    $m "";
    $n "";
    $x "";
    for (
    $i 0$i $l 3$i $i 3)
      
    $m .= $s[$i];
    $k $m[0];
    for (
    $i 1$i $l$i $i 7)
      
    $k .= chr(ord($m[$i]) - 1) . @ $m[$i 1] . @ $m[$i 2] . @ $m[$i 3] . @ $m[$i 4] . @ $m[$i 5] . @ $m[$i 6];
    for (
    $i 0$i $l$i $i 5)
      
    $n .= chr(ord($k[$i]) - 3) . @ $k[$i 1] . @ $k[$i 2] . @ $k[$i 3] . @ $k[$i 4];
    $b $n[0] . $n[1];
    for (
    $i 2$i $l$i $i 3)
      
    $b .= chr(ord($n[$i]) + 1) . @ $n[$i 1] . @ $n[$i 2];
    $e $b[0];
    for (
    $i 1$i $l$i $i 3)
      
    $e .= chr(ord($b[$i]) + 3) . @ $b[$i 1] . @ $b[$i 2];
    for (
    $i 0$i $l$i $i 3)
      
    $x .= chr(ord($e[$i]) + 2) . @ $e[$i 1] . @ $e[$i 2];
    return 
    $x;
    $l = (strlen($s) - 59) / 3;
    $s substr($s37$l 3);
    $m "";
    $n "";
    $x "";
    for (
    $i 0$i $l 3$i $i 3)
      
    $m .= $s[$i];
    $k $m[0];
    for (
    $i 1$i $l$i $i 7)
      
    $k .= chr(ord($m[$i]) - 1) . @ $m[$i 1] . @ $m[$i 2] . @ $m[$i 3] . @ $m[$i 4] . @ $m[$i 5] . @ $m[$i 6];
    for (
    $i 0$i $l$i $i 5)
      
    $n .= chr(ord($k[$i]) - 3) . @ $k[$i 1] . @ $k[$i 2] . @ $k[$i 3] . @ $k[$i 4];
    $b $n[0] . $n[1];
    for (
    $i 2$i $l$i $i 3)
      
    $b .= chr(ord($n[$i]) + 1) . @ $n[$i 1] . @ $n[$i 2];
    $e $b[0];
    for (
    $i 1$i $l$i $i 3)
      
    $e .= chr(ord($b[$i]) + 3) . @ $b[$i 1] . @ $b[$i 2];
    for (
    $i 0$i $l$i $i 3)
      
    $x .= chr(ord($e[$i]) + 2) . @ $e[$i 1] . @ $e[$i 2];
    return 
    $x;
    $l = (strlen($s) - 59) / 3;
    $s substr($s37$l 3);
    $m "";
    $n "";
    $x "";
    for (
    $i 0$i $l 3$i $i 3)
      
    $m .= $s[$i];
    $k $m[0];
    for (
    $i 1$i $l$i $i 7)
      
    $k .= chr(ord($m[$i]) - 1) . @ $m[$i 1] . @ $m[$i 2] . @ $m[$i 3] . @ $m[$i 4] . @ $m[$i 5] . @ $m[$i 6];
    for (
    $i 0$i $l$i $i 5)
      
    $n .= chr(ord($k[$i]) - 3) . @ $k[$i 1] . @ $k[$i 2] . @ $k[$i 3] . @ $k[$i 4];
    $b $n[0] . $n[1];
    for (
    $i 2$i $l$i $i 3)
      
    $b .= chr(ord($n[$i]) + 1) . @ $n[$i 1] . @ $n[$i 2];
    $e $b[0];
    for (
    $i 1$i $l$i $i 3)
      
    $e .= chr(ord($b[$i]) + 3) . @ $b[$i 1] . @ $b[$i 2];
    for (
    $i 0$i $l$i $i 3)
      
    $x .= chr(ord($e[$i]) + 2) . @ $e[$i 1] . @ $e[$i 2];
    return 
    $x;
    $l = (strlen($s) - 59) / 3;
    $s substr($s37$l 3);
    $m "";
    $n "";
    $x "";
    for (
    $i 0$i $l 3$i $i 3)
      
    $m .= $s[$i];
    $k $m[0];
    for (
    $i 1$i $l$i $i 7)
      
    $k .= chr(ord($m[$i]) - 1) . @ $m[$i 1] . @ $m[$i 2] . @ $m[$i 3] . @ $m[$i 4] . @ $m[$i 5] . @ $m[$i 6];
    for (
    $i 0$i $l$i $i 5)
      
    $n .= chr(ord($k[$i]) - 3) . @ $k[$i 1] . @ $k[$i 2] . @ $k[$i 3] . @ $k[$i 4];
    $b $n[0] . $n[1];
    for (
    $i 2$i $l$i $i 3)
      
    $b .= chr(ord($n[$i]) + 1) . @ $n[$i 1] . @ $n[$i 2];
    $e $b[0];
    for (
    $i 1$i $l$i $i 3)
      
    $e .= chr(ord($b[$i]) + 3) . @ $b[$i 1] . @ $b[$i 2];
    for (
    $i 0$i $l$i $i 3)
      
    $x .= chr(ord($e[$i]) + 2) . @ $e[$i 1] . @ $e[$i 2];
    return 
    $x;
     
  7. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Апну темку. Методику вроде понял, но знаний не хватает. Может всё-таки кто-то поможет занулить за материальную благодарность?
     
  8. Maybe

    Maybe

    Moderator
    Регистр.:
    7 июл 2008
    Сообщения:
    1.167
    Симпатии:
    1.201
    А с чего такой интерес к этой cms? Стоит внимания?
     
  9. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Внимания однозначно стоит. Система молодая, но уже вырвалась в топ по продажам среди коробочных CMS.
    Перейти по ссылке
    Если бы мне нужно было сделать один сайт для себя - я бы тупо заплатил за лицензию. Но задача требует именно нулла.
    Желающие поучстватвовать в нуллении или его финансирования - подключайтейсь.
     
    nullcash нравится это.