Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Воровство сессии и дальнейшая подмена.

Тема в разделе "[Архив] Помощь", создана пользователем Visper, 28 мар 2013.

  1. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    А ещё защиту от инжекта через CheatEngine, защиту от Wpe pro, и т.д
    Короче ещё много методов, которые править - замучаешься, именно поэтому я занимаюсь написанием модуля совместимости с модами для NCP.
     
    CyberMan нравится это.
  2. Хостинг MineCraft
    <
  3. Автор темы
    Visper

    Visper Активный участник Пользователь

    Баллы:
    68
    Это поможет ?
    Или надо ещё что по конкретней искать ?

    попробовал поставить выдало ошибку
    "unknown column timestamp in field list"
    база IPB
     
  4. Автор темы
    Visper

    Visper Активный участник Пользователь

    Баллы:
    68
    Необходимо что то на подобии, игрок отключился и сессия обнулилась или убилась (как оно там я хз). Или же убивать сессию после того как игрок вошел на сервер, тоесть что бы снова войти ему надо воспользоваться лаунчером. Нужно как то прикрутить время жизни сессии что ли. Реально ли это и как это провернуть ?

    Да к тому же промучался с timestamp в IPB, никак не смог поле запилить. Параметры и структуру никак не могу сделать, перекопал весь поисковик.
    Не пускает бд и всё тут.
    Подскажите что делать.
     
    ВремяПриключений нравится это.
  5. AvengeRkaa

    AvengeRkaa Старожил

    Баллы:
    123
    Имя в Minecraft:
    AvengeRkaa
    А что если игрока часто выкидывает с сервера?
    Он же не будет играть на сервере вообще.
     
    ПриветОтМиднайта нравится это.
  6. Het

    Het Активный участник

    Баллы:
    88
    Skype:
    james_hetfiled
    Имя в Minecraft:
    Het
    Нет колонки "timestamp" в базе с пользователями
    К тому же описаны действия к dle
     
  7. Konstantin773

    Konstantin773 Старожил Пользователь

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    В таблицу с юзерами добавь колонку "timestamp".

    Проверку жизни сессии писал пару минут, не проверял, это только примерный код. Должен работать
     
    Visper нравится это.
  8. Автор темы
    Visper

    Visper Активный участник Пользователь

    Баллы:
    68
    Создаю колонку с именем "timestamp", подскажите какие параметры должны быть в ней ?
    1) тип
    2) длинна/значение
    3) По умолчанию
    4) Сравнение
    5) Атрибуты
    6) ставить ли галочку в колонке NULL
     
  9. Автор темы
    Visper

    Visper Активный участник Пользователь

    Баллы:
    68
    Может кто подсказать ответ на пост выше.
     
    slavik123123123 нравится это.
  10. Konstantin773

    Konstantin773 Старожил Пользователь

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Такие же параметры как у колонки session.
     
    Visper нравится это.
  11. Автор темы
    Visper

    Visper Активный участник Пользователь

    Баллы:
    68
    joinserver.php


    <?php
    define('INCLUDE_CHECK',true);
    include("connect.php");
    $sessionid = mysql_real_escape_string($_GET['sessionId']);
    $user = mysql_real_escape_string($_GET['user']);
    $serverid = mysql_real_escape_string($_GET['serverId']);

    if (!preg_match("/^[a-zA-Z0-9_-]+$/", $user) || !preg_match("/^[a-zA-Z0-9_-]+$/", $sessionid) || !preg_match("/^[a-zA-Z0-9_-]+$/", $serverid)){

    echo "Bad login1";

    exit;
    }

    $result = mysql_query("Select $db_columnUser From $db_table Where $db_columnSesId='$sessionid' And $db_columnUser='$user' And $db_columnServer='$serverid'") or die ("Ошибка");
    if(mysql_num_rows($result) == 1) echo "OK";
    else
    {
    $result = mysql_query("Update $db_table SET $db_columnServer='$serverid' Where $db_columnSesId='$sessionid' And $db_columnUser='$user'") or die ("Ошибка");
    if(mysql_affected_rows() == 1) echo "OK";
    else echo "Bad login";
    }
    ?>


    Куда именно вставить строки:

    $query=mysql_query("select timestamp from dle_users where name='$user'") or die (mysql_error());

    if (time()>mysql_fetch_array($query)) die ("Bad Login");

    Куда бы не ставил вылетает ошибка вот тут:


    $result = mysql_query("Update $db_table SET $db_columnServer='$serverid' Where $db_columnSesId='$sessionid' And $db_columnUser='$user'") or die ("Ошибка");
    if(mysql_affected_rows() == 1) echo "OK";
    else echo "Bad login";
     
  12. Het

    Het Активный участник

    Баллы:
    88
    Skype:
    james_hetfiled
    Имя в Minecraft:
    Het
    каким образом вы собираетесь достать колонку с пользователями если у вас стоит IPB
     
  13. Автор темы
    Visper

    Visper Активный участник Пользователь

    Баллы:
    68
    строку сменил на ipb_members, там же добавил поле с такими же параметрами как и в session.

    Осталось только разобраться с ошибкой выше сказанной.
     
  14. Konstantin773

    Konstantin773 Старожил Пользователь

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Код:
    <?php
    define('INCLUDE_CHECK',true);
    include("connect.php");
    $sessionid = mysql_real_escape_string($_GET['sessionId']);
    $user = mysql_real_escape_string($_GET['user']);
    $serverid = mysql_real_escape_string($_GET['serverId']);
     
    $query=mysql_query("select timestamp from $db_table where $db_columnUser='$user'") or die ("Привет, $user, давай сыграем в игру");
    if (time()>mysql_fetch_array($query)) die ("Время вышло!!!");
     
    if (!preg_match("/^[a-zA-Z0-9_-]+$/", $user) || !preg_match("/^[a-zA-Z0-9_-]+$/", $sessionid) || !preg_match("/^[a-zA-Z0-9_-]+$/", $serverid)){
    echo "Bad login1";
    exit;
    }
    $result = mysql_query("Select $db_columnUser From $db_table Where $db_columnSesId='$sessionid' And $db_columnUser='$user' And $db_columnServer='$serverid'") or die ("Ошибка");
    if(mysql_num_rows($result) == 1) echo "OK";
    else
    {
    $result = mysql_query("Update $db_table SET $db_columnServer='$serverid' Where $db_columnSesId='$sessionid' And $db_columnUser='$user'") or die ("Ошибка");
    if(mysql_affected_rows() == 1) echo "OK";
    else echo "Bad login";
    }
    ?>
     
    Stalkerdeni971 и Visper нравится это.
  15. Konstantin773

    Konstantin773 Старожил Пользователь

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Еще можно хэшировать сессию так (сессия+хэш_Minecraft.jar+соль_получнная_от_скрипта) в клиенте. Если этот хэш словят, то через при запуске через батник она заново пройдет операцию хэширования и будет невалидной.
     
    Alex_Ps, ВремяПриключений и Visper нравится это.
  16. Автор темы
    Visper

    Visper Активный участник Пользователь

    Баллы:
    68
    Всё сделано как вы и сказали.
    Но вылетает та же ошибка вот тут:

    $result = mysql_query("Update $db_table SET $db_columnServer='$serverid' Where $db_columnSesId='$sessionid' And $db_columnUser='$user'") or die ("Ошибка");

    if(mysql_affected_rows() == 1) echo "OK";

    else echo "Bad login";

    В бд сессия становится NULL, но именно вот этот "бед логин" вылетает при входе,
    timestamp работает, спустя 60 секунд обнуляет сессию.
    В чём же может быть ошибка. Ни в какую не хочет работать. Может что в этой строке не хватает.
     
  17. Konstantin773

    Konstantin773 Старожил Пользователь

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Ты посмотри в скрипте auth.php или launcher.php, видимо там неправильный запрос, и сессия не записывается.
     
    Пароль123456789 и Visper нравится это.
  18. Автор темы
    Visper

    Visper Активный участник Пользователь

    Баллы:
    68
    В том то и дело, что сессия генерируется и после 60 секунд становится NULL.
    Но не пускает на сервер. Выдаёт ошибку в выше упомянутой строке.
    Я в php вообще полный ноль, так что толком сказать то ли руки с одного места у меня ростут, то ли не моего ума дело вообще, сказать не могу точно.
    Поэтому и прошу помощи, что бы мне по полочкам разложили что и куда надо подписать или заменить.
    Уж простите за мою глупость ^_^[DOUBLEPOST=1372771780,1364831168][/DOUBLEPOST]Проблема по прежнему никак не решена.
    Либо у меня руки из одного места, или же мозг меньше чем у динозавра.
    Хотя вряд ли. На КТ вродь всю коробку занимает. Ну да ладно.
    Что в итоге ?!
    И батниками и автобатниками обходят, хз что делать вообще.
    Все с читами. Сессия перехватывается и ставится в батник и всё, ставь что хочеш.
    Как избавится всё же от этого метода, что бы не заходили автобатниками, да с подставкой сессии.
    Что и куда нужно вписать или дописать ?
    Замучался уже.
    Нету нигде ответа на этот вопрос.
    Прошу помощи.
     
  19. ms-dos95

    ms-dos95 Старожил Пользователь

    Баллы:
    103
    Skype:
    ms-dos95
    Имя в Minecraft:
    msdos95
    Какая версия майнкрафта у вас?
     
    Visper нравится это.
  20. Автор темы
    Visper

    Visper Активный участник Пользователь

    Баллы:
    68
    1.4.7 версия майна
    Лаунчер сашка
     
  21. ms-dos95

    ms-dos95 Старожил Пользователь

    Баллы:
    103
    Skype:
    ms-dos95
    Имя в Minecraft:
    msdos95
    Отписался в личку с решением проблемы! Прошу никому не говорить способ защиты!
     

Поделиться этой страницей