PDA

Просмотр полной версии : [Вопрос] Как найти дыру в моде.



Jacob1997
12.08.2014, 17:02
Ребят проблема такая имею проект с онлайном 100+ . И вот не давно начали взламывать аккаунты лидеров/админов и т.д взламывают и пишут в /o , /gov привет от CM Капонщина. Помогите решить проблему.

Dima_Turkow
12.08.2014, 17:05
https://vk.com/dima_turkow - напиши

DeimoS
12.08.2014, 17:13
Если мод на MySQL, то, скорее всего, инъекции делают

$continue$
12.08.2014, 17:16
Ребят проблема такая имею проект с онлайном 100+ . И вот не давно начали взламывать аккаунты лидеров/админов и т.д взламывают и пишут в /o , /gov привет от CM Капонщина. Помогите решить проблему.

Прологируй аргументы команд, диалогов.
Ну может и инъекция.

- - - Добавлено - - -

Хотя если даже если инъекция, то ты по логированию диалогов ей увидишь.

Jacob1997
12.08.2014, 17:22
Вообщем щас лазил в БД и наткнулся на такую вещь, моё имя например в игре Nick_Name пароль 123456, создают аккаунт как то 2 или 3 с ником Nick_Name только пароль уже другой делают а аккаунт с такими же приемуществами там админка лидерка и т.д

$continue$
12.08.2014, 17:35
Вообщем щас лазил в БД и наткнулся на такую вещь, моё имя например в игре Nick_Name пароль 123456, создают аккаунт как то 2 или 3 с ником Nick_Name только пароль уже другой делают а аккаунт с такими же приемуществами там админка лидерка и т.д

а пароль то какой?

Xzibit
12.08.2014, 17:49
знаю такую штуку, крч они берут нажимаю тип сменить почту, пароль и тд можно при регистрации там вводят 1 штучку и у тебя на акке их пароль

Jacob1997
12.08.2014, 18:40
Как исправить?

Xzibit
12.08.2014, 18:45
Я могу но мне свой мод надо делать

Jacob1997
12.08.2014, 18:57
Ну ты скажи как исправить в чём проблема?

DeimoS
12.08.2014, 19:03
Ну ты скажи как исправить в чём проблема?

Вам же уже тонну вариантов дали. Осталось каждый из них проверить и всё

$continue$
12.08.2014, 19:22
Прологируй аргументы команд, диалогов.
Ну может и инъекция.

- - - Добавлено - - -

Хотя если даже если инъекция, то ты по логированию диалогов ей увидишь.
Не?!

Jacob1997
13.08.2014, 00:27
Дыра где то здесь.


case 3:
{
new sabaka;
for(new i = strlen(inputtext); i != 0; --i)
{
switch(inputtext[i])
{
case '@': sabaka++;
}
}
if(strlen(inputtext) < 1 || strlen(inputtext) > 30) return SPD(playerid,3,DIALOG_STYLE_INPUT,"Электронная почта","\t{FFFFFF}Введите пожалуйста ваш {99FF66}действующий{FFFFFF} email. \nПри потери доступа к персонажу, вы сможете его ввостановить в UCP на сайте и только через email.\n\n\t\t{99FF66}Ошибка","Готово","Отмена");
if(sabaka == 0) return SPD(playerid,3,DIALOG_STYLE_INPUT,"Электронная почта","\t{FFFFFF}Введите пожалуйста ваш {99FF66}действующий{FFFFFF} email. \nПри потери доступа к персонажу, вы сможете его ввостановить в UCP на сайте и только через email.\n\n\t\t{99FF66}Ошибка","Готово","Отмена");
format(mysql_query, sizeof(mysql_query), "UPDATE `Accounts` SET `pEmail` = '%s' WHERE `Name` = '%s'",
inputtext,PlayerInfo[playerid][pNames]);
mysql_function_query(connects, mysql_query, false, "", "");
SPD(playerid,7,DIALOG_STYLE_INPUT,"Ник друга на сервере","Введите ник вашего друга на сервере.","Ок","Пропустить");
}

$continue$
13.08.2014, 01:32
Дыра где то здесь.


case 3:
{
new sabaka;
for(new i = strlen(inputtext); i != 0; --i)
{
switch(inputtext[i])
{
case '@': sabaka++;
}
}
if(strlen(inputtext) < 1 || strlen(inputtext) > 30) return SPD(playerid,3,DIALOG_STYLE_INPUT,"Электронная почта","\t{FFFFFF}Введите пожалуйста ваш {99FF66}действующий{FFFFFF} email. \nПри потери доступа к персонажу, вы сможете его ввостановить в UCP на сайте и только через email.\n\n\t\t{99FF66}Ошибка","Готово","Отмена");
if(sabaka == 0) return SPD(playerid,3,DIALOG_STYLE_INPUT,"Электронная почта","\t{FFFFFF}Введите пожалуйста ваш {99FF66}действующий{FFFFFF} email. \nПри потери доступа к персонажу, вы сможете его ввостановить в UCP на сайте и только через email.\n\n\t\t{99FF66}Ошибка","Готово","Отмена");
format(mysql_query, sizeof(mysql_query), "UPDATE `Accounts` SET `pEmail` = '%s' WHERE `Name` = '%s'",
inputtext,PlayerInfo[playerid][pNames]);
mysql_function_query(connects, mysql_query, false, "", "");
SPD(playerid,7,DIALOG_STYLE_INPUT,"Ник друга на сервере","Введите ник вашего друга на сервере.","Ок","Пропустить");
}

Используйте mysql_format, и все проблемы исчезнут.

Jacob1997
13.08.2014, 14:28
Я вот сделал так почему не спасает?


case 3:
{
new sabaka;
for(new i = strlen(inputtext); i != 0; --i)
{
switch(inputtext[i])
{
case '@': sabaka++;
}
}
if(strlen(inputtext) < 1 || strlen(inputtext) > 30) return SPD(playerid,3,DIALOG_STYLE_INPUT,"Электронная почта","\t{FFFFFF}Введите пожалуйста ваш {99FF66}действующий{FFFFFF} email. \nПри потери доступа к персонажу, вы сможете его ввостановить в UCP на сайте и только через email.\n\n\t\t{99FF66}Ошибка","Готово","Отмена");
if(sabaka == 0) return SPD(playerid,3,DIALOG_STYLE_INPUT,"Электронная почта","\t{FFFFFF}Введите пожалуйста ваш {99FF66}действующий{FFFFFF} email. \nПри потери доступа к персонажу, вы сможете его ввостановить в UCP на сайте и только через email.\n\n\t\t{99FF66}Ошибка","Готово","Отмена");
new sqlstr[50];
mysql_escape_string(inputtext,sqlstr);
format(mysql_query, sizeof(mysql_query), "UPDATE `Accounts` SET `pEmail` = '%s' WHERE `Name` = '%s'",
sqlstr,PlayerInfo[playerid][pNames]);
mysql_function_query(connects, mysql_query, false, "", "");
SPD(playerid,7,DIALOG_STYLE_INPUT,"Ник друга на сервере","Введите ник вашего друга на сервере.","Ок","Пропустить");
}