PDA

Просмотр полной версии : как узнать путь к webpath (например /public_html) на фтп-серверах?


Дикс
16.06.2009, 19:19
захожу на фтп с помощью пхп
есть ли возможность сразу определить корневую директорию размещённого там сайта?

на некоторорых серверах она называется public_html, на других www..

гугл ничего не дал
хотя бы составить список таких имён

FireFenix
16.06.2009, 19:42
Apache/conf/httpd.conf - параметр DocumentRoot (или файл конфигурации любого другого веб-сервера)
или
<?php phpinfo(); ?>
параметр DOCUMENT_ROOT

Kaimi
16.06.2009, 20:08
Он же на фтп заходит, толку с этого?

Дикс
16.06.2009, 21:16
да, на двух англоязычных сайтах так и отвечали)

вот, если кому надо:


$webpath = '(([a-zA-Z0-9\-](\.|_)(asia$|com$|net$|org$|biz$|name$|mobi$|info$ |com$|net$|ch$|uk$|us$|pro$|eng.pro$|aca.pro$|bar. pro$|cpa.pro$|jur.pro$|law.pro$|med.pro$|ru$|su$|c om.ua$|in.ua$|kiev.ua$|dp.ua$|ua$|co.uk$|cc$|de$|f m$|in$|kz$|me$|nu$|tv$|ws$|ac$|ag$|am$|at$|be$|bz$ |cn$|gs$|h$|io$|it$|la$|mn$|ms$|com.mx$|co.nz$|pl$ |sc$|sh$|tc$|tj$|tk$|tm$|tw$|uz$|vc$|vg$|com.ag$|n et.ag$|org.ag$|com.bz$|net.bz$|com.hn$|net.hn$|org .hn$|net.nz$|org.nz$|com.pl$|net.pl$|org.pl$|info. pl$|com.sc$|net.sc$|org.sc$|com.tw$|org.tw$|com.vc $|net.vc$|org.vc)))';
$folders = array('public_html', 'pages', 'www', 'html', 'htdocs', 'httpdocs', 'httpsdocs', 'docs', 'site', 'wwwroot', 'domains');

$found = 0;

foreach($dirs as $dir)
if($dir != '.' || $dir != '..')
if(in_array($dir, $folders))
{
$found = $dir;
break;
}elseif(preg_match($webpath, $dir)){
$found = $dir;
break;
}else
continue;

if(!$found) die('webpath not found');

FireFenix
16.06.2009, 21:23
Он же на фтп заходит, толку с этого?
Залил и выполнил :)

Дикс
16.06.2009, 22:35
как ты выполнишь скрипт на фтп-сервере, не зная доменного имени и корневой папки веб-сервера?

FireFenix
16.06.2009, 22:55
как ты выполнишь скрипт на фтп-сервере, не зная доменного имени и корневой папки веб-сервера?
Ты не говорил, что ты незнаешь домена :)

diehard
17.06.2009, 01:55
захожу на фтп с помощью пхп
есть ли возможность сразу определить корневую директорию размещённого там сайта?

Перебор с глубиной 2-3, по тем что написали
'public_html', 'pages', 'www', 'html', 'htdocs', 'httpdocs', 'httpsdocs', 'docs', 'site', 'wwwroot', 'domains'
плюс часто бывает имя домена в качестве веб-диры, так что добавь еще регулярку под этот случай.

diehard
17.06.2009, 01:56
Залил и выполнил :)
омг, куда залил, если он вебдиры не знает?

Pashkela
17.06.2009, 02:23
омг, куда залил, если он вебдиры не знает?


Куда-куда, в корень


./


а далше курить вот это,

http://us3.php.net/manual/en/book.ftp.php

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

скрипт, закачанный в корень, можно запустить с помощью ftp_site

diehard
17.06.2009, 03:33
омг, куда залил, если он вебдиры не знает?


Куда-куда, в корень


./


а далше курить вот это,

http://us3.php.net/manual/en/book.ftp.php

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

скрипт, закачанный в корень, можно запустить с помощью ftp_site

Ну давай поподробнее, как с помощью команд ФТП сервера передаваемых ftp_site ты собираешься выполнить PHP-код???

Pashkela
17.06.2009, 04:22
Ну да, тут я погрячился децл:)) Зато в процессе эксперимента нашел более клёвый способ, позволяющий решить задачу быстро и без всяких загрузок, а именно - рекурсивно получить список папок, подпапок и файлов в них и, соотвественно, вычислить любые нужные пути:


<pre>
<?php
@set_time_limit(0);
@ini_set("display_errors","1");
$ftp_server = 'фтп-сервер';
$ftp_user_name = 'фтп-логин';
$ftp_user_pass = 'фтп-пароль';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Рекурсивно получаем список всех файлов и директорий на ФТП
$buff = ftp_rawlist($conn_id, '/', TRUE);
ftp_close($conn_id);
var_dump($buff);
?>
</pre>


а уж с полученным массивом $buff делать всё что душе угодно

diehard
17.06.2009, 05:14
а уж с полученным массивом $buff делать всё что душе угодно

Вот только так и нужно делать. Писал это дело сто лет назад, за кривость кода не ругать )) :



...

function iswebdir($dir){
$strs = array("public_html","www","pages","html","htdocs","httpdocs","docs","site","wwwroot");
foreach ($strs as $ptrn){
if ($dir == $ptrn)
return 1;
}
return 0;
}


...

$filelist = ftp_rawlist($conn, $rootdir);

foreach ($filelist as $raw){
$filename = trim(substr($raw, strrpos($raw, " ")));
$len = strlen($filename);
if (substr($filename, $len-1) == "/")
$filename = substr($filename, 0, $len - 1);
if ($slash = strrpos($filename, "/"))
$filename = substr($filename, $slash + 1);
if (substr($raw, 0, 1) == "d" OR strstr($raw, "<DIR>")){
if (iswebdir($filename)){
if (substr($rootdir,-1)=="/")
$wb = $rootdir.$filename;
else
$wb = $rootdir."/".$filename;
$webdirs[] = $wb;
}
}
}
$webdirs[] = $rootdir;

Дикс
17.06.2009, 12:45
спасибо
мутная это тема - искать домен по айпи
если займетесь этим - скажу что то что выдают сервисы типа 1whois.ru и бинг - лажа

diehard
17.06.2009, 16:50
спасибо
мутная это тема - искать домен по айпи
если займетесь этим - скажу что то что выдают сервисы типа 1whois.ru и бинг - лажа
пропиши на морде код, отправляющий $_SERVER['SERVER_NAME'] куда надо, через час - прочекай - забери ответ, за час то траф придет какой-нибудь на сайт.