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

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

  1. dig555

    dig555

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

    Бьюсь над http://cms.diafan.ru/ Зенда нет. Некоторые файлы покорячены обфускатором. Всего пару штук.

    Проверка лицензии производится на сервере.
    Сниффером отловил, что идёт POST запрос:
    POST http://user.diafan.ru/validomain.php 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 МБ):
    http://rghost.ru/36068411
    Или на сайте 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
    Сообщения:
    588
    Симпатии:
    423
    Вампира попроси.
     
    dig555 нравится это.
  5. +VAMPIR+

    +VAMPIR+ Master

    Регистр.:
    13 апр 2006
    Сообщения:
    533
    Симпатии:
    615
    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.152
    Симпатии:
    1.195
    А с чего такой интерес к этой cms? Стоит внимания?
     
  9. dig555

    dig555

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