Старый 24.06.2012, 13:28   #2121
d0znpp
 
Аватар для d0znpp
 
Регистрация: 09.09.2010
Сообщений: 484
Репутация: 252
По умолчанию

Цитата:
другие интерпретаторы. Например nginx
Nginx - это веб-сервер, не интерпретатор. Люди ведь так и запомнить могут.
__________________
The Sucks Origin Policy
d0znpp вне форума   Ответить с цитированием
Старый 24.06.2012, 16:05   #2122
Boolean
 
Регистрация: 19.10.2011
Сообщений: 111
Репутация: 34
По умолчанию

даже если допустить, что load_file может читать из procfs,
Цитата:
proc/self/fd/{N}
N=1-15

Последнее выдаст (долно выдать) логи от апача.
это всё равно чушь, т.к. к апачу mysql никакого отношения не имеет.
__________________
|
Boolean вне форума   Ответить с цитированием
Старый 25.06.2012, 17:08   #2123
Pirotexnik
 
Аватар для Pirotexnik
 
Регистрация: 16.05.2012
Сообщений: 32
Репутация: -2
По умолчанию

Да, я с LFI перепутал
__________________
h4q 4ll w0rld
Pirotexnik вне форума   Ответить с цитированием
Старый 25.06.2012, 18:51   #2124
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

> Последнее выдаст (долно выдать) логи от апача
вроде это уже давно пофиксено.
https://issues.apache.org/bugzilla/show_bug.cgi?id=46425
12309 вне форума   Ответить с цитированием
Старый 27.06.2012, 02:00   #2125
Untitled
 
Аватар для Untitled
 
Регистрация: 24.06.2012
Сообщений: 131
Репутация: 30
По умолчанию

Есть скрипт-читалка: http://site.com/class/download.php?filename=[/path/to/file]%00.pdf
Внутри такой волшебный код (см. ниже).
Используются блэк- и вайт-листы, фильтрация расширения на удивление обходится нулл-байтом, но есть проблемы с путями. Надо прочитать файл из ../config/, какие варианты?
PHP код:
/*
        This function will prompt user for downloading file.
    */
    
function downloadFile() {
        
// validation
        
if($this->strFileDownload != "" && $this->strFileName != "") {
            
// here just check whether they exist or not and if exist download it
            
if(file_exists($this->strFileDownload)) {
                
header("Cache-Control: private");
                
header("Content-type: " filetype($this->strFileDownload) . "");
                
header("Content-Disposition: attachment; filename=\"" $this->strFileName "\";");
                
header("Accept-Ranges: bytes");
                
header("Content-Length: " filesize($this->strFileDownload) . "");
                @
readfile($this->strFileDownload);
            }
            else{
                print(
"File does not exist.");
            }
        }
        else{
            print(
"File name is blank.");
        }
    }


    
/*
        This function is used to check requested downloading whether it is valid or not. if not valid then redirect to home page of the site.
    */
    
function checkValidDownloading() {
        if(
DEBUG) print("checkValidDownloading()<br/>");

        
// initialing array for folders and files extensions
        
$this->arrNotAllowedFolders = array(
            
'0' => "/adimages/",
            
'1' => "/admin/",    
            
'2' => "/backups/",
            
'3' => "/class/",
            
'4' => "/config/",
            
'5' => "/css/",
            
'6' => "/db/",
            
'7' => "/designs/",
            
'8' => "/fixes/",
            
'9' => "/fonts/",
            
'10' => "/temp/",
            
'11' => "/helpdocs/",
            
'12' => "/holdingpage/",
            
'13' => "/images/",
            
'14' => "/js/",
            
'15' => "/logs/",
            
'16' => "/modules/",
            
'17' => "/scripts/"
            
);

        
$this->arrAllowedFiles = array(
            
'0' => ".csv",
            
'1' => ".tsv",
            
'2' => ".txt",
            
'3' => ".pdf",
            
'4' => ".xml",
            
'5' => ".doc",
            
'6' => ".docx",
            
'7' => ".html",
            
'8' => ".xls",
            
'9' => ".jpg",
            
'10' => ".jpeg",
            
'11' => ".gif",
            
'12' => ".png",
            
'13' => ".bmp",
            
'14' => ".htm"
            
);

        
// set REQUEST URI and requested file's extension, flagExit
        
if(isset($_REQUEST['fileName']) && !empty($_REQUEST['fileName'])) {
            
$strReqUri $_REQUEST['fileName'];
            
$strFileExt substr($strReqUristrrpos($strReqUri'.'));
            
$flagExit false;

            
// check for from which folder request comes, if folder exists in out NotAllowed list then redirect to home page
            
foreach($this->arrNotAllowedFolders as $key => $strFolder) {
                if(
strpos($strReqUri$strFolder) !== false) {
                    
$flagExit true;
                    break;
                }
            }

            
// if requested folder valid then check for file extension
            
if(!$flagExit) {
                if(!
in_array($strFileExt$this->arrAllowedFiles)) {
                    
$flagExit true;
                }
            }

            
// redirect to home page if flagExit set TRUE
            
if($flagExit) {
                
// redirect to home page
                
$back ABSPATH;

                if(
DEBUG) {
                    print(
"<a href=\"" $back "\">Back</a><br/>");
                }
                else {
                    
header("Location: " $back);
                }
                exit();
            }
        }
        else {
            
// redirect to home page
            
$back ABSPATH;

            if(
DEBUG) {
                print(
"<a href=\"" $back "\">Back</a><br/>");
            }
            else {
                
header("Location: " $back);
            }
            exit();
        }
    } 
Untitled вне форума   Ответить с цитированием
Старый 27.06.2012, 07:41   #2126
Nightmare
Banned
 
Регистрация: 06.07.2010
Сообщений: 162
Репутация: 10
По умолчанию

Untitled: Посмотрел поверхностно код (без подробностей), вижу что там запрет на папки, а не вайт лист на них, по логике должно помочь вместо ../config/ попробовать заюзать: ../636F6E666967/ или так: 2E2E2F636F6E6669672F (то есть всё в HEX перегнать) или же поколдовать с регистром conFig, прокатит или нет хз, но первое что приходит в голову.
Nightmare вне форума   Ответить с цитированием
Старый 27.06.2012, 09:55   #2127
Boolean
 
Регистрация: 19.10.2011
Сообщений: 111
Репутация: 34
По умолчанию

Nightmare, HEX-то тут причем? С регистром нет смысла колдовать, не будет работать, Config и conFig это разные директории.



Пробуй залиться на соседний сайт и создать ссылку на файл.
Вроде отрабатывает: (include для примера)
Код:
[root@tboolean d]# ln -s /tmp/d/config/config.php /tmp/link_config
[root@tboolean d]# cat /tmp/link_config
<?php
print 'Hello World From Config';
?>
[root@tboolean d]# php -r 'include("/tmp/link_config");'
Hello World From Config
__________________
|
Boolean вне форума   Ответить с цитированием
Старый 27.06.2012, 10:57   #2128
Beched
 
Регистрация: 06.07.2010
Сообщений: 402
Репутация: 118
По умолчанию

Теоретически можно прочитать через файловые дескрипторы.
Beched вне форума   Ответить с цитированием
Старый 27.06.2012, 11:02   #2129
SynQ
 
Регистрация: 11.07.2010
Сообщений: 954
Репутация: 352
По умолчанию

Boolean
Там читалка, а не инклуд.

Untitled
По-видимому, никак.
SynQ вне форума   Ответить с цитированием
Старый 27.06.2012, 11:02   #2130
Jokester
 
Аватар для Jokester
 
Регистрация: 01.07.2010
Сообщений: 250
Репутация: 155
По умолчанию

На винде вижу целых 3 варианта:
1) \config\
2) /Config/
3) /config./
На nix ничего в голову не приходит

Nightmare ненадо таких советов плз.
Boolean если у него такое проскочит, то нафига ему вообще читалка эта?
__________________
------------------
Jokester вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot