lynx
Advanced lynx | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Итак. Фиксинг возможности ходить в закрытые темы такой. ikon.lib sub getmember Код: sub getmember { my $nametocheck = shift; $nametocheck =~ s/ /\_/g; $filetoopen = "$ikondir" . "members/$nametocheck.cgi"; $filetoopen = &stripMETA($filetoopen); if (-e $filetoopen) { open(FILE,"$filetoopen"); $filedata = <FILE>; close(FILE); chomp($filedata); ($membername, $password, $membertitle, $membercode, $numberofposts, $emailaddress, $showemail, $ipaddress, $homepage, $aolname, $icqnumber, $location ,$interests, $joineddate, $lastpostdate, $signature, $timedifference, $privateforums, $useravatar, $misc1, $misc2, $misc3) = split(/\|/,$filedata); chomp $privateforums; ##Фиксим возможность проникать в закрытые форумы if (($inmembername eq "Guest") || ($password ne $inpassword)){ $inmembername = 'Guest'; $inpassword = ''; %allowedentry = ''; return; } ##Отфиксили if($privateforums) { @private = split(/&/,$privateforums); foreach $accessallowed (@private) { chomp $accessallowed; ($access, $value) = split(/=/,$accessallowed); $allowedentry{$access} = $value; } } } else { $userregistered = "no"; } } | Добавить то, что выделено красным. Далее. Во избежении бага в topic.cgi, следом за этой подпрограммой добавляем еще одну: Код: ##Сохраните подпрограмму тут, она нужна sub gettopicmember { my $nametocheck = shift; $nametocheck =~ s/ /\_/g; my $filetoopen = "$ikondir" . "members/$nametocheck.cgi"; $filetoopen = &stripMETA($filetoopen); if (-e $filetoopen) { open(FILE,"$filetoopen"); flock(FILE,1); $filedata = <FILE>; close(FILE); chomp($filedata); ($membername,$password,$membertitle,$membercode,$numberofposts,$emailaddress, $showemail,$ipaddress,$homepage,$aolname,$icqnumber,$location,$interests, $joineddate,$lastpostdate,$signature,$timedifference,$privateforums,$useravatar, $misc1,$misc2,$misc3) = split(/\|/,$filedata); }# and if (-e $filetoopen) else {$userregistered = "no"; } } #end sub | В обеих подпрограммах рекомендуется убрать пробелы между переменными Далее, открываем topic.cgi. Ищем код: Код: foreach (@threads[$startarray .. $endarray]) { ($membername, $topictitle, $postipaddress, $showemoticons, $showsignature, $postdate, $post) = split(/\|/,$_); $postdate = $postdate + ($timedifferencevalue*3600) + ($timezone*3600); $postdate = &dateformat("$postdate"); &getmember("$membername"); $mname=$membername; $m_membername = $membername; $m_membername =~ y! !_!; &set_up_guest() unless (-e $ikondir . 'members/'.$m_membername.'.cgi'); | И меняем его на код: Код: foreach (@threads[$startarray .. $endarray]) { ($membername, $topictitle, $postipaddress, $showemoticons, $showsignature, $postdate, $post) = split(/\|/,$_); $postdate = $postdate + ($timedifferencevalue*3600) + ($timezone*3600); $postdate = &dateformat("$postdate"); &gettopicmember("$membername"); #^Именно эту подпрограмму надо вызывать $mname=$membername; $m_membername = $membername; $m_membername =~ y! !_!; &set_up_guest() unless (-e $ikondir . 'members/'.$m_membername.'.cgi'); | С этой уязвимостью все. P.S. В файловом архиве -2 лежит версия дистрибутива, где эта уязвимость пофиксена. | Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 00:39 24-03-2004 | Исправлено: lynx, 03:46 24-03-2004 |
|