ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Избранное
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 15.12.2007, 07:16
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию

Цитата:
да куда проще было бы не "реверсить" и изучать устройство каталога, а просто выводить подстроки состоящие из печатаемых символов. просто возможен вариант, что к примеру атрибуты файла (права, время модификации и тп) представленные в бинарном виде, буду содержать то что ты ищешь и на что парсишь, хотя конечно врядли..
Хм, насколько я знаю, что в файле каталога нет информации о правах доступа файлов которые в нем находятся,в нем имена и ссылки на физическое месторасположение (ну и еще что то).
Насчет вывода подстрок из печатающих символов, тогда будет много мусора, потому что "служебные" байты принимают значения такие же как и печатаемые символы, если выделять подстроку как несколько подряд идущих петатаемых символов, то файлы и каталоги состоящие из одного символа выводиться не будут,к тому же не будет возможности определить является это файлом или каталогом.
Насчет самого парсинга и поиска, я думаю, той ситуации которую ты описал не возникнет (я думал об этом). Там видишь какая фигня, сначала ищется байт со значением 04h или 08h проверяется следующий за ним байт, является ли он меньше 0Fh и идет проверка является ли идущий за этими двумя байтами байт печатаемым символом... надеюсь ты понял что я хотел сказать,а то я че то понаписал и сам не совсем понял
__________________
Карфаген должен быть разрушен...
 
Ответить с цитированием

  #12  
Старый 15.12.2007, 16:25
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

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

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

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

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

вот програмка производящая вроде бы грамотный парсинг http://zaco.info/bsdir.cpp
интересно что идентификатор всегда выравнивается по машинному слову, а иногда программа выводит несуществующее файлы, причем идентификаторы которых, на первый взгляд вполне валидные.. я думаю определить удаленные файлы одним непосредственным парсингом каталога не удасться, нужно лезть в таблицу inode и смотреть есть ли там этот дескриптор или нет.

вообще конечно жалко, что бсд позволяет выполнять вызов open только с флагом O_RDONLY, иначе можно было бы много пакостей наделать
 
Ответить с цитированием

  #13  
Старый 16.12.2007, 04:33
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию

ZaCo, не плохо, очень не плохо... но согласись, мой вариант имееет возможность для большей реализации на практике, т.к. именно в инете это находит свое практическое применение, и согласись вариант на пхп именно этот имеет место быть, насчет ссылок, в конечном итоге, я тоже нашел, что байт 0Ah-это символическая ссылка, просто не стал включать в скрипт, потому что чем больше значений, тем больше вероятность неправильного парсинга... я вот немного тебя непонимаю, наверное ты просто не в той последовательности рассказал, но насколько я понял, что первые три байта дискриптора файла или каталога отвечают именно за физическое место расположения, и по закону жанра справа на лево... а вобще по идее респект тебе ZaCo, и уважуха, только ты меня по нормальному понял, и поэкспериментировал, т.е. занялся тем, чем занимался я до создания этого топика... но еще раз хочу сказать спасибо Macro, он профессионал, его стоит уважать
__________________
Карфаген должен быть разрушен...

Последний раз редактировалось Scipio; 16.12.2007 в 04:49..
 
Ответить с цитированием

  #14  
Старый 16.12.2007, 13:42
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

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

не совсем, идентификатор файл (он же дескриптор файла в файловой системе) это число, но само расположение файла, берется из таблицы inode (хотя по логике вещей это все-таки должно быть бинарное сбалансированное дерево для быстрого доступа к данным, просто так короче) ровно по этому идентификатору. а описание структуры содержимого каталога описано в struct DIR в bsdir.cpp. только нужно понимать, что все наши с тобой скрипты по-хорошему должны работать только в пределах одной фс ну или максимум совместимых.
--
и еще раз об выравнивании, если ты с++ не знаешь: сначала считывается структура DIR (inode - 4 байта, 2 байта не ясно чего, 1 байт - длина имени файла), далее само имя файла, а затем происходит скачок до ближайшего, кратного sizeof(int) (для gcc при стандартных настройках) адреса относительно начала данных.

Последний раз редактировалось ZaCo; 16.12.2007 в 13:52..
 
Ответить с цитированием

  #15  
Старый 16.12.2007, 15:01
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

оказалось тут даже без выравнивание можно, заодно и смысл dontknow прояснился - длина текущего описания, в типе short int.
 
Ответить с цитированием

  #16  
Старый 30.12.2007, 16:31
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию

вот сделал поудобнее немного и сделал, чтоб он символические ссылки опознавал:
PHP код:
<html>
<head>
<title>Парсинг каталогов FreeBSD от Scipio</title>
</head>
<body>
<?php
error_reporting
(0);
set_time_limit(0);
if (isset(
$_POST['pole'])){$pole=$_POST['pole']; $fl=file_get_contents($pole);} else $pole='';
?>
<form method="post" action="<?=$_SERVER['SCRIPT_NAME']?>">
<input type="text" size="150" name="pole" value="<?=$pole?>"/>
</form>
<?php
if (!empty($fl))
{
$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>".'<b>[DIR]</b> ';
            
$nam=TRUE;
            
$i+=4;
           }

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

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

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

           {
            
$pob="<br>".'<i>[LINK]</i> ';
            
$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;}
        }


   }

}
?>
</body>
</html>
в строку можно вводить как имя файла, так и сетевой адресс (строку URL) например URL с SQL-инъекцией, сам пользуюсь и много раз уже выручало
__________________
Карфаген должен быть разрушен...
 
Ответить с цитированием

  #17  
Старый 03.01.2008, 16:48
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию

Хм, скрипт показывает и недавно удаленные файлы, ответ на вопрос почему мне дал ZaCo:
Цитата:
другое дело что может быть такой случай - идентификатор есть в каталоге а в inode нету
хотя об этом нетрудно догадаться, но все равно ему спасибо, другой вопрос как это можно использовать, жду предложений
__________________
Карфаген должен быть разрушен...
 
Ответить с цитированием

  #18  
Старый 13.01.2008, 09:46
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию

UPD: скрипт работает и для SunOS
__________________
Карфаген должен быть разрушен...
 
Ответить с цитированием

  #19  
Старый 25.03.2009, 17:21
Аватар для HornetBlack
HornetBlack
Новичок
Регистрация: 28.10.2007
Сообщений: 11
Провел на форуме:
86145

Репутация: 12
По умолчанию

Цитата:
Сообщение от Scipio  
Насчет самого парсинга и поиска, я думаю, той ситуации которую ты описал не возникнет (я думал об этом). Там видишь какая фигня, сначала ищется байт со значением 04h или 08h проверяется следующий за ним байт, является ли он меньше 0Fh и идет проверка является ли идущий за этими двумя байтами байт печатаемым символом
За типом файла идет short int = длине имени. Я так понимаю, более ничего полезного из дампа каталога получить не удастся...
 
Ответить с цитированием

  #20  
Старый 26.03.2009, 12:36
Аватар для mailbrush
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

HornetBlack, а я так понимаю, ты хочешь минус получить. Прошло больше года =\. Это археология =\
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хакер и закон! SladerNon Болталка 17 12.11.2009 09:42
Взлом Unix а silveran *nix 4 21.12.2005 22:46
Основные команды командной строчки. silveran Windows 5 27.10.2005 14:45



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ