ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

16.04.2009, 00:59
|
|
Познающий
Регистрация: 29.03.2009
Сообщений: 87
Провел на форуме: 2185909
Репутация:
308
|
|
http://forum.antichat.ru/showpost.php?p=1047861&postcount=31
Пришлось иметь дело с данным скриптом, действительно корявый, возможные решения проблемы:
Код:
$topic = (int)$_GET['t'];
$board = (int)$_GET['b'];
$user = (int)$_GET['u'];
$tpage = (int)$_GET['p'];
Целые пройти, чтобы избежать проверки данных
Код:
$other = preg_replace('|[^a-z0-9_=,;/\-.]|i', '', $_GET['o']);
$action = preg_replace('|[^a-z0-9_=,;/\-.]|i', '', $_GET['a']);
$param = preg_replace('|[^a-z0-9_=,;/\-.]|i', '', $_GET['param']);
Фильтр только для допустимых регулярок для SMF
А тут делаем проверку на соответствие тем:
Код:
function seo_verifica_permisos($id, $tipo){
global $user_info, $db_prefix;
if(!$id = (int)$id){
return false;
}
if($user_info['is_admin'] == '1'){
return true; //Если админ права по умолчанию
}
if($tipo == 'board'){
if($request = @db_query("
SELECT memberGroups
FROM {$db_prefix}boards
WHERE ID_BOARD = {$id}
LIMIT 1", __FILE__, __LINE__)){
if($row = @mysql_fetch_assoc($request)){
mysql_free_result($request);
}
}
if(!$permisos = @explode(',', $row['memberGroups'])){
if(!$permisos = (int)$row['memberGroups']){
return false;
}
}
foreach($permisos as $valor){
if($valor == $user_info['groups'][0]){
return true;
}
}
return false;
}elseif($tipo == 'topic'){
if($request = @db_query("
SELECT ID_BOARD
FROM {$db_prefix}topics
WHERE ID_TOPIC = {$id} LIMIT 1", __FILE__, __LINE__)){
if($row = @mysql_fetch_assoc($request)){
mysql_free_result($request);
}
}
if(seo_verifica_permisos((int)$row['ID_BOARD'], 'board')){
return true;
}else{
return false;
}
}else{
return false;
}
}
Ну собственно небольшой патч, если "это" так можно назвать(простите за грамматические ошибки и лексически не правильно построенные фразы, час ночи, спать охота).Собственно ссылки:
http://dump.ru/file/2460593
http://slil.ru/27454401
Пароль: underantichat?!
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|