خب همونطور که قول داده بودم فقط دیر شد ببخشین یه مشکلاتی دارم نمیتونم زیاد به نت برسم :53:
حل باگ هک مديريت از طريق لينک ?AdminRegUserEdit&admin&id=555
اول وارد AdminRegUserEdit.class.php شويد
کد زير رو پيدا کرده
if ($_SESSION['etchat_'.$this->_prefix.'user_priv']=="admin"){
کد زير رو بعد از کد بالا قرار بديد دقیق زير کد بالا
// Checksum
if($_GET['cs4rue']!=$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit'] || !isset($_GET['cs4rue']) || !isset($_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit'])){
echo "Dear Admin this User tried to fake you. ;-)";
return false;
}
وارد فايل AdminRegUserIndex.class.php شويد
کد زير رو پيدا کرده
$print_sitemaker = $sitemakerObj->get();
کد زير رو بعد از کد بالا قرار دهيد
// Checksum
$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit'] = rand(1,999999999);
بعد از انجام تغييرات بالا
درجات کاربرا مديرا و ادمين ها براي مثال ناظر اين جوري هستش لينکش
| <a href=\"./?AdminRegUserEdit&mod&id=".$datasets[0]."\">mod</a> |
بايد به صورت زير تغيير بديد
| <a href=\"./?AdminRegUserEdit&mod&cs4rue=".$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit']."&id=".$datasets[0]."\">mod</a> |
اين رو براي همه درجات بايد تکرار کنيد
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حل مشکل باگ هک مديريت با شکلک [ /img ] [ img ]
براي حل اول وارد فايل StaticMethods.class.php شويد
کد زير رو پيدا کرده
if (!empty($image_path))
$str="<img src="$image_path" style="max-width:500px;max-height:300px;">";
کد زير رو جايگزين کد بالا کنيد
if (!empty($image_path) && stripos($str, '?admin')===false)
$str="<img src="$image_path" style="max-width:500px;max-height:300px;">";
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حل باگ گذاشتن شکلک بزرگ در درجات ليست آنلاين ها و هنگ شدن ليست آنلاين ها
وارد فايل Changestatus.class.php شويد
کد زير رو پيدا کرده
// Test if this status is allowed to be used by this user
if (!$this->checkRightsOfStatus($_POST['img'])) {
$_POST['img']="";
$_POST['text']="";
echo "Not allowed operation.";
return false;
}
کد زير رو جايگزين کد بالا کنيد
// Test if this status is allowed to be used by this user
if (!$this->checkRightsOfStatus($_POST['img'])) {
$_POST['img']="";
$_POST['text']="";
echo "Not allowed operation.";
return false;
}
$_POST['img']= htmlspecialchars(preg_replace("/[^a-zA-Z_0-9\-. ]/i", "", $_POST['img']), ENT_QUOTES, "UTF-8");
$_POST['text']= htmlspecialchars(preg_replace('/[\x00-\x1F]/', '', $_POST['text']), ENT_QUOTES, "UTF-8");
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حل مشکل باگ هک ليست آنلاين ها با تغيير جنيست
وارد فايل CheckUserName.class.php شويد
کد زير را پيدا کرده
$userCheckerAndInserterObj = new UserCheckerAndInserter($this->dbObj, $user_exists, $username, $_POST['pw'], $gender, $this->lang);
کد زير رو جايگزين کد بالا کنيد
$userCheckerAndInserterObj = new UserCheckerAndInserter($this->dbObj, $user_exists, $username, $_POST['pw'], preg_replace("/[^a-z]/i", "n", $gender), $this->lang);
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حل باگ وارد شدن در اتاق هاي رمز دار با مروگر اپرا يا گوگل کروم با راست کليک و تغيير و حذف سورس به راحتي بدون اخطار و ارور وارد اتاق هاي رمز دار ميشوند
وارد فايل ReloaderMessages.class.php شويد
کد زير رو پيدا کرده
if ($room_allowed->room_status!=1){
$raum_array=$this->dbObj->sqlGet("SELECT etchat_id_room, etchat_roomname, etchat_room_goup FROM {$this->_prefix}etchat_rooms where etchat_id_room = 1");
}
کد زير رو جايگزين کد بالا کنيد
if ($room_allowed->room_status!=1){
$_POST['room'] = 1;
unset($_POST['message']);
$raum_array=$this->dbObj->sqlGet("SELECT etchat_id_room, etchat_roomname, etchat_room_goup FROM {$this->_prefix}etchat_rooms where etchat_id_room = 1");
}
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حل مشکل جلوگيري از ورود با آي پي فاک ( ip fucker)
وارد فايل
Blacklist.class.php شويد
کد زير را پيدا کرده
$this->user_param_all = $_SERVER['REMOTE_ADDR']."@".@gethostbyaddr($_SERVER['REMOTE_ADDR'])."@".@getenv('HTTP_X_FORWARDED_FOR');
کد زير رو جايگزين کد بالا کنيد
$this->user_param_all = $_SERVER['REMOTE_ADDR']."@".@gethostbyaddr($_SERVER['REMOTE_ADDR']);
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حل مشکل باگ بستن ليست آنلاين ها با استفاده از وضعيت من
statusImage
وارد فايل
ChangeStatus.class.php شويد
به جاي کدهاي
private function checkRightsOfStatus($statusImagename){
// create new LangXml Object
$langObj = new LangXml();
$lang=$langObj->getLang();
foreach($lang->chat_js[0]->status as $status_value)
if ($status_value->tagAttrs['imagename']==$statusImagename && $status_value->tagAttrs['rights']!='all')
$thisStatusImagenameRights[]=$status_value->tagAttrs['rights'];
if (!is_array($thisStatusImagenameRights)) return true;
else{
if (in_array($_SESSION['etchat_'.$this->_prefix.'user_priv'], $thisStatusImagenameRights)) return true;
else return false;
}
}
}
کدهاي زير رو جايگزين کنيد
private function checkRightsOfStatus($statusImagename){
if(substr($statusImagename, 0, 7)!='status_') return false;
// create new LangXml Object
$langObj = new LangXml();
$lang=$langObj->getLang();
foreach($lang->chat_js[0]->status as $status_value)
if ($status_value->tagAttrs['imagename']==$statusImagename && $status_value->tagAttrs['rights']!='all')
$thisStatusImagenameRights[]=$status_value->tagAttrs['rights'];
if (!is_array($thisStatusImagenameRights)) return true;
else{
if (in_array($_SESSION['etchat_'.$this->_prefix.'user_priv'], $thisStatusImagenameRights)) return true;
else return false;
}
}
}
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
جلوگيري از ارسال متن تکراري درداخل روم
ميريم سراغ فايلMessageInserter.class.php سپس فايل رو ويرايش ميکنيم
کد زيرراپیدا کنید
$this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_messages ( etchat_user_fid, etchat_text, etchat_text_css, etchat_timestamp, etchat_fid_room, etchat_privat, etchat_user_ip)
VALUES ( '".$_SESSION['etchat_'.$this->_prefix.'user_id']."', '".$_POST['message']."', '".$style."', ".date('U').", ".(int)$_POST['room'].", ".(int)$_POST['privat'].", '".$_SERVER['REMOTE_ADDR']."')");
سپس اين کدرو حذف کرده و اين کد را جايگزين کنيد
if(@$_SESSION['PluginChat_last_message']==$_POST['message'])
{
$this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_messages ( etchat_user_fid, etchat_text, etchat_privat) values(1,'Karbar Gerami Lotfan Spam nade ',".$_SESSION['etchat_'.$this->_prefix.'user_id'].")");exit;
}
$this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_messages ( etchat_user_fid, etchat_text, etchat_text_css, etchat_timestamp, etchat_fid_room, etchat_privat, etchat_user_ip)
VALUES ( '".$_SESSION['etchat_'.$this->_prefix.'user_id']."', '".$_POST['message']."', '".$style."', ".date('U').", ".(int)$_POST['room'].", ".(int)$_POST['privat'].", '".$_SERVER['REMOTE_ADDR']."')");
$_SESSION['PluginChat_last_message'] = $_POST['message'];
وسپس ميتونيد هر متني رو که ميخوايد به کاربر بگه رو باKarbar Gerami Lotfan Spam nadeجايگزين کنيد.
امیدوارم پست مفیدی باشه البته میتونستم اینارو مثل یه فایل بزارم جایگزین کنین ولی گفتم اینطوری توضیح بدم راحتر میتونید یاد بگیرید :53: