usuwanie stopki phpbb by przemo
Żaden ze znanych skryptów nie blokuje zmiany stopki ani jej usunięcia oprócz phpbb by przemo. Usunięcie stopki jest możliwe oraz jej modyfikacje.
Lecz tutaj po zmianie stopki wyświetla się komunikat i jakby tego mało wysyła email do przema… To nie jest instrukcja typu zrób to i tamto !
Jak jest wyświetlana stopka ?
Zaczynamy od tego iż stopka jest wyświetlana z pliku overall_footer.tpl za pomocą zmiennej stylu: {PAGE_LOAD_PLEASE_WAIT} (w uproszczonej stopce simple_footer.tpl usunięcie lub zmiana stopki nie powoduje wyświetlenia ostrzeżenia).
I jakakolwiek modyfikacja stopki lub usunięcie powoduje wyświetlenie ostrzeżenia.
Stopka forum została zmodyfikowana, forum nie będzie działać prawidłowo!
Ustaw prawidłowo stopkę w pliku overall_footer.tpl, musi być ona widoczna w przegladarce, nie może zawierać “sztuczek” maskujacych.Wzór: Powered by <a href="http://www.phpbb.com" target="_blank" class="copyright">phpBB</a> modified by <a href="http://www.przemo.org/phpBB2/" class="copyright" target="_blank">Przemo</a> © 2003 phpBB Group
Lecz ostrzeżenie wyświetla się tylko podczas wysyłania postu lub prywatnej wiadomości, a za to odpowiada plik posting.php lub includes/functions_post.php.
Niestety na darmo możemy szukać zmiennej stylu {PAGE_LOAD_PLEASE_WAIT} w pliku includes/page_tail.php (odpowiada ona za generowanie stopki), ale znajdziemy ją w pliku includes/page_header.php (odpowiada za generowanie headera – topu forum):
'PAGE_LOAD_PLEASE_WAIT' => append_sid('<a href="index.'.$phpEx.'?mode=tloading">' . $lang['Page_loading_wait'] . '</a>'), |
Więc szukamy funkcji append_sid, znajduje się w pliku includes/sessions.php
function append_sid($url, $non_html_amp = false, $subdir_off = false) { global $SID, $subdirectory; if ( !empty($SID) && !preg_match('#sid=#', $url) ) { $url .= ( ( strpos($url, '?') !== false ) ? ( ( $non_html_amp ) ? '&' : '&' ) : '?' ) . $SID; } if ( isset($subdirectory) && !$subdir_off ) { $url = $subdirectory . $url; } $sid1 = base64_decode('aGFzaF8x'); $sid_s = base64_decode('aGFzaF8y'); global $$sid1, $$sid_s; return (strpos($url, base64_decode('bW9kZT10bG9hZGluZw==')) !== false) ? base64_decode(base64_decode(str_replace('si', '', $$sid1))) : ((strpos($url, base64_decode('bW9kZT1lbG9hZGluZw==')) !== false) ? base64_decode(base64_decode($$sid_s)) : $url); } |
Na pierwszy rzut oka coś związanego z adresami i ID sesji… lecz base64_decode() i do tego podwójne budzi ciekawość więc sprawdźmy i zdekodujmy:
$sid1 = hash_1; $sid_s = hash_2; |
Co ciekawsze hash_1 i hash_2 to zmienne globalne (zmienne bo należy zwrócić uwagę na dwa $$ przed nazwą):
global $$sid1, $$sid_s; |
Więc tak naprawdę mamy:
global $hash_1, $hash_2; |
a te zmienne znajdują się w pliku includes/constans.php:
// Forum unique hash $hash_1 = 'VUc5M1pYSmxaQ0JpZVNBOFlTQm9jbVZtUFNKb2RIUndPaTh2ZDNkM0xuQm9jR0ppTG1OdmJTSWdkR0Z5WjJWMFBTSmZZbXhoYm1zaUlHsiTnNZWE56UFNKamIzQjVjbWxuYUhRaVBuQm9jRUpDUEM5aFBpQnRiMlJwWm1sbFpDQmllU0E4WVNCb2NtVm1QU0pvZEhSd09pOHZkM2QzTG5CeWVtVnRieTV2Y21jdmNHaHdRa0l5THlJZ1kyeGhjM005SW1OdmNIbHlhV2RvZENJZ2RHRnlaMlYwUFNKZllteGhibXNpUGxCeWVtVnRiend2WVQ0Z0ptTnZjSGs3SURJd01ETWdjR2h3UWtJZ1IzSnZkWEE9'; $hash_2 = 'UENFdExTQlFiM2RsY21Wa0lHSjVJSEJvY0VKQ0lHMXZaR2xtYVdWa0lIWXhMamtnWW5rZ2NISjZaVzF2SUNnZ2FIUjBjRG92TDNkM2R5NXdjbnBsYlc4dWIzSm5MM0JvY0VKQ01pOGdLU0F0TFQ0PQ=='; |
Następnie funkcja zwraca nam wartość ale zależną od tego co znajdzie w $url (należy najpierw pamiętać o usunięciu si w $hash_1):
return (strpos($url, 'mode=tloading') !== false) ? 'Powered by <a href="http://www.phpbb.com" target="_blank" class="copyright">phpBB</a> modified by <a href="http://www.przemo.org/phpBB2/" class="copyright" target="_blank">Przemo</a> © 2003 phpBB Group' : ((strpos($url, 'mode=eloading') !== false) ? '<!-- Powered by phpBB modified v1.9 by przemo ( http://www.przemo.org/phpBB2/ ) -->' : $url); |
Oczywiście nas interesuje to co zwróci dla mode=tloading, a zwróci stopkę z $hash_1.
To już wiemy jak jest wyświetlana stopka.
Jak jest sprawdzana poprawność stopki ?
W pliku lang_main.php znajdziemy ostrzeżenie dotyczące stopki:
$lang['footer'] = 'Stopka forum została zmodyfikowana, forum nie będzie działać prawidłowo!<br />Ustaw prawidłowo stopkę w pliku overall_footer.tpl, musi być ona widoczna w przegladarce, nie może zawierać "sztuczek" maskujacych.<br /><br />Wzór: <b>Powered by <a href="http://www.phpbb.com" target="_blank" class="copyright">phpBB</a> modified by <a href="http://www.przemo.org/phpBB2/" class="copyright" target="_blank">Przemo</a> &copy; 2003 phpBB Group</b>'; |
Skoro wiemy jak jest wyświetlana stopka i że ostrzeżenie pojawia się podczas pisania więc poszukajmy w pliku includes/functions_post.php naszej znajomej zmiennej:
$$sid1 |
Zaprowadzi nas to do funkcji correct_file() lecz zacznijmy od początku:
//code to get rid of some quick-reply-mod problems $crf = base64_decode('Y29ycmVjdF9maWxl'); |
po zdekodowaniu wywołuje funkcję correct_file:
$crf = correct_file; |
Lecz następnie jest losowana liczba z pewnego przedziału:
$cr_file = rand(4,8); |
Wiec szukamy co korzysta ze zmiennej $cr_file:
if ( $cr_file == 5 ) @$crf(false); |
Jeśli wylosuje się 5 to stopka nie zostanie sprawdzona.
Funkcja correct_file()
function correct_file($file = true) { global $board_config, $phpEx, $lang; $server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name'])); $btf = base64_decode('bWFpbA=='); $script_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path'])); $script_name = ($script_name == '') ? $script_name. '/login.'.$phpEx : '/' . $script_name. '/login.'.$phpEx; $server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://'; $server_port = trim($board_config['server_port']); $sid1 = base64_decode('aGFzaF8x'); global $$sid1; $$sid1 = str_replace('si', '', $$sid1); $cont = get_url($server_name, $script_name, trim($board_config['server_port'])); $cont = $cont[1]; $th_ch = base64_decode(base64_decode($$sid1)); if ( @eregi('username', $cont) && @eregi('password', $cont) ) { $lmk = false; if ( !($pos = @strpos($cont, $th_ch)) || !(@strpos($$sid1, 'NJZ2RHRnlaMlYwUFNKZllteGhibXNpUGxCeWVtVnRiend2WVQ0Z')) || !(@strpos($$sid1, 'xuYUhRaVBuQm9jRUpDUEM5aFBpQnRiMlJwWm1sbFpDQmllU0E4WVNCb2NtVm1QU0pvZEhSd09pOHZkM2QzTG5CeWVtVnRieTV2Y21jdmNHaHdRa0l5TH')) ) { $lmk = true; } $first = @str_replace(' ', '', @substr($cont, $pos-20, 20)); $second = @str_replace(' ', '', @substr($cont, $pos+@strlen($th_ch)-1, 20)); if ( @strpos($first, base64_decode('IS0t')) || @strpos($first, base64_decode('PGZvbg==')) || @strpos($first, base64_decode('aGlkZQ==')) || @strpos($first, base64_decode('aGlkZGU=')) || @strpos($second, base64_decode('LS0=')) || @strpos($second, base64_decode('L2Zvbg==')) ) { $lmk = true; } if ( $lmk ) { $th_d = base64_decode(base64_decode('Wm05dmRHVnk=')); if ( @strpos($th_d, base64_decode(base64_decode('SEE2THk5M2QzY3VjSEo2WlcxdkxtOXla'))) ) exit; if ( @function_exists($btf) && $board_config['data'] < (CR_TIME - 432000) ) { @$btf(base64_decode('c3RvcGthQHByemVtby5vcmc='), base64_decode('LVNUT1BLQS0=-'), $server_protocol . $server_name . $server_port . '/' . preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path'])) . "\r\n" . $board_config['board_email']); update_config('data', CR_TIME); }die($lang[$th_d]); } } return true; } |
Wiec po kolei, zmienna $btf
$btf = mail; |
(jakby nie patrzeć będzie wysyłany email)
Odniesienie do naszego wzorcu stopki:
$sid1 = hash_1; |
Potem z naszego wzoru stopki usuwane są frazy si oraz nasz wzorzez jest dwa razy dekodowany i otrzymujemy:
$th_ch = 'Powered by <a href="http://www.phpbb.com" target="_blank" class="copyright">phpBB</a> modified by <a href="http://www.przemo.org/phpBB2/" class="copyright" target="_blank">Przemo</a> © 2003 phpBB Group'; |
I co ciekawe jest pobierana treść strony logowania i jeśli znajdą sie tam dwie frazy password oraz username to tylko wtedy sprawdzana jest poprawność stopki.
Następnie sprawdzane jest czy znajduje się tam cała stopka według wzorca oraz czy wzorzec jest zgodny z porównaniem, jeśli nie to wysyłany jest email do przema i zostaje wyświetlone ostrzeżenie.
Dodatkowo sprawdzane są sztuczki maskujące (komentowanie stopki, jak i znacznik oraz hidden w CSS) takim if-em, jeśli zostaną znalezione w pobliżu stopki także wyświetlane jest ostrzeżenie i wysłany zostaje email do przema:
if ( @strpos($first, '!--') || @strpos($first, '<fon') || @strpos($first, 'hide') || @strpos($first, 'hidde') || @strpos($second, '--') || @strpos($second, '/fon') ) |
Oczywiście wysyłanie maila wygląda tak:
$th_d = footer; if ( @function_exists(mail) && $board_config['data'] < (CR_TIME - 432000) ) { @mail('stopka@przemo.org', '-STOPKA-', $server_protocol . $server_name . $server_port . '/' . preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path'])) . "\r\n" . $board_config['board_email']); update_config('data', CR_TIME); } die($lang[$th_d]); |
I po wysłaniu maila wyświetlane jest ostrzeżenie:
die('footer'); |
Wszystko jest wysyłane na email……………….
Jak wyłączyć sprawdzanie stopki ?
W pliku overall_footer.tpl zmieniamy:
{PAGE_LOAD_PLEASE_WAIT} |
na:
<br><a href="http://www.phpbb.com" target="_blank" class="copyright">phpBB</a> & <a href="http://www.przemo.org/phpBB2/" target="_blank" class="copyright">Przemo</a> |
W pliku includes/functions_post.php znajdź:
$crf = base64_decode('Y29ycmVjdF9maWxl'); |
zamień na:
//$crf = base64_decode('Y29ycmVjdF9maWxl'); |
znajdź:
$cr_file = rand(4,8); |
zamień na:
//$cr_file = rand(4,8); |
znajdź:
if ( $cr_file == 5 ) @$crf(false); |
zamień na:
//if ( $cr_file == 5 ) @$crf(false); |
To wszystko, nigdzie więcej stopka nie jest sprawdzana lecz nie jestem w stanie tego zagwarantować iż jakieś maile nie są jeszcze wysyłane.
Jak usunąć stopkę phpbb by przemo – prostszy sposób
Aby usunąć stopkę wystarczy zaingerować w plik: includes/sessions.php, otwieramy go
Szukamy funkcji append_sid
function append_sid |
Następnie trochę niżej linijek:
$sid1 = base64_decode('aGFzaF8x'); $sid_s = base64_decode('aGFzaF8y'); global $$sid1, $$sid_s; return (strpos($url, base64_decode('bW9kZT10bG9hZGluZw==')) !== false) ? base64_decode(base64_decode(str_replace('si', '', $$sid1))) : ((strpos($url, base64_decode('bW9kZT1lbG9hZGluZw==')) !== false) ? base64_decode(base64_decode($$sid_s)) : $url); |
Zmieniamy je na:
return $url; |
Bardzo proste, od teraz stopka nie będzie się wyświetlała ze zmiennej {PAGE_LOAD_PLEASE_WAIT}, dlatego należy pamiętać by usunąć sprawdzanie stopki.
27.09.2009 at 12:53
To skandal ze przemo stosuje takie metody, radze upowszechnić ten sposób, jeżeli ktoś zmusza skrypt do wysyłania wiadomości e-mail bez wiedzy użytkownika łamie licencje GNU.
27.09.2009 at 20:34
Ja nie znam treści licencji, żadnej ( : i mi z tym dobrze, mam każdą w dupie, wolę czytać nawet najbardziej szmatławe książki…
27.09.2009 at 23:33
I po co te wypociny? Wystarczy jedna linijka w CSS’ie i stopki nie widac.
Niedouczenie ogarnelo internet.
28.09.2009 at 06:49
CSS nie usuwa stopki, a ukrywanie, bądź kolor tekstu zgodnego z tłem algorytm google tępi.
09.10.2009 at 20:10
Czyli rozumiem, że z twoich modyfikacji zamieszczonych na przemo.org też mogę wykasować stopki? Bo też nie czytam licencji i mam je w dupie.
09.10.2009 at 20:25
Robisz co chcesz, masz wolną wolę, jesteś wolnym człowiekiem. Przynajmniej teoretycznie i konstytucyjnie… Gorzej jeśli Cię kiedyś system dorwie…
20.06.2010 at 17:45
Ciekawe kiedy załatają dziurę w załącznikach.
06.02.2011 at 11:53
“Przemo pisze:
27-09-2009 o 23:33
I po co te wypociny? Wystarczy jedna linijka w CSS’ie i stopki nie widac.
Niedouczenie ogarnelo internet.”
Przecież tosiek napisał, że nie chodzi tylko o ukrycie stopki, a wyłączenie funkcji sprawdzania przyspiesza wysyłanie posta i w pełni się z nim zgadzam. Nie pisz bzdur!
26.03.2011 at 00:38
Funckcję correct_file() można za komentować? bo tam jest tylko funkcja wysłania emaila.
26.03.2011 at 07:13
tartut możesz usunąć całą funkcję correct_file(), tylko pamiętaj też o reszcie jak na przykład linijka wywołująca tę funkcję.
02.04.2011 at 00:31
Tosiek, gogole tepi ukrywanie elementów na stronie? Czy Ty sie dobrze czujesz? To napisz na forum jQuery żeby usuneli metode hide() oraz toggle() bo to google tępi.
LOL
08.04.2011 at 12:00
Zacznij odróżniać ukrywanie poprzez CSS a javascript, nikt tutaj nie wspominał o JS.
27.04.2011 at 21:15
Te funkcje służą do budowania menu/wszelkich zamulających efektów i animacji JS. Celowe ukrycie linków jak najbardziej jest tępione przez google
06.05.2011 at 14:38
Aby usunąć stopkę wystarczy usunąć dany fragment kodu
{CLICK_HERE_TO_VIEW}{PAGE_LOAD_PLEASE_WAIT}
w pliku
/templates/subSilver/overall_footer.tpl
Oczywiście nie polecam takiego kroku gdyż jest to naruszenie praw autorskich i każdy z nas chyba wie czy to grozi : )
06.05.2011 at 15:14
slawek.ino zgodziłbym się z tobą gdyby nie licencja phpBB, która zezwala na usunięcie stopki:
/*************************************************************************** * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. ***************************************************************************/
A poza tym opisałem już ten sposób usuwania wyświetlania stopki ale pamiętaj, że nadal działa sprawdzanie.
17.07.2011 at 15:37
Wie ktoś co robi Przemo gdy dojdzie do niego taki mail, że ktoś usunął stopkę?? Bo zrobiłem tak jak jest to powyżej opisane, ale wcześniej trochę namieszałem w tym overall_footer.tpl i chyba wysłało maila. Teraz mam problem tego typu, że zniknęło wejście do PA :) hehe
17.07.2011 at 16:54
Nic zrobić nie może. A co do PA to po prostu usunąłeś nie to co trzeba ;) O ile się nie mylę to przywróć:
{CLICK_HERE_TO_VIEW
}12.08.2011 at 08:28
Ten sposób mi nie pomaga. Usunąłem co prawda stopkę i zablokowałem tak jak trzeba ale nadal wyskakuje ten błąd.
12.08.2011 at 10:13
Widocznie nie wyłączyłeś sprawdzania stopki i nic dziwnego, że Ci po usunięciu stopki wyświetla Ci się komunikat o usunięciu.
Chyba, że przemo zmienił sposób sprawdzania :)
23.08.2011 at 12:36
Po tym dziwnym patencie kompletnie straciłem zaufanie do tego skryptu. Skoro bez wiedzy użytkownika wysyła jakieś maile to bym się nie zdziwił gdyby był gdzieś ukryty jakiś backdoor.
19.12.2011 at 10:28
Jak bez wiedzy? W folderze /docs jest plik readme.html i tam jest wyraźnie napisane :
“Skryptu możemy używać za darmo i bez ograniczeń za wyjątkiem ograniczenia nałożonego na jego stopkę, której nie można usuwać oraz zmieniać. Skrypt wyposażony jest w funkcje kontrolujące i gdy zostanie ona zmieniona lub usunięta, pojawią się problemy w działaniu forum. “
20.12.2011 at 22:47
Niezgodne z licencją, stopkę możemy usuwać i zmieniać :)
10.03.2012 at 16:02
Usunąłem stopkę właśnie dlatego że jest nałożona blokada. Nie lubię, gdy ktoś mnie do czegoś zmusza.
16.01.2013 at 21:04
No i cała opisana stopka, fajnie wiedzieć takie rzeczy.