Просмотр полной версии : Rst Sql Post
Alexsize
17.10.2007, 00:04
RST SQL POST
Приветствую!
Всем хорош оригинальный скуль шелл от рст, тут тебе и удобство работы и не очень большой размер, но вот незадача - авторы сделали его работающим только GET запросами.
Все знают почему это плохо, описывать не стану.
При взломе одного забугорного сервака у меня была задача подключиться к внутреннему серверу БД.
Он имел локальный ip и у меня был рутовый пасс на скуль. Шелл от Маднета корректно подключился и все было прекрасно, но вот при апдейте полей madshell иногда или сбрасывал ВСЕ(!) значения или же вообще не апдейтил их.
По привычке залив RST SQL шелл, я обнаружил, что он тут он отказываеться работать. Быстро перебрав по совету знакомых все SQL шеллы, я обнаружил, что работают только те что используют POST.
Почему - времени выяснять не было...
Я попросил Macro (https://forum.antichat.ru/member.php?u=29324) переписать скульшелл с гета на пост, что он и сделал.? за что ему РЕСПЕКТ и благодарности. Также респект Diagen, за то что терпит кучу вопросов по синтаксису Пыха=)
Надеюсь Вам будет приятно работать с обновленным RST SQL клиентом!
О всех глюках шелла (а как без них ;) ) прошу писать в этой теме, или в ПМы.
З.Ы. Исправлены баги, данные Тохой и ведеться переработка механизма дампа.
Завершено формирование механизма дампа.
1) диз: хромает на индексе и на выводе, в районе полей Edit и там где названия колонок ибо белый и голубоватый на сером форне незачёт) ярко-красный на кнопках я бы светлосерым заменил) поле "тип" данных тож не катит во всех вкладках) цвет при ошибке выедает глаза) при создании новой таблицы тож белый не катит) "Action: Успешно вставлено строк (1)
PHP-код запроса:"
тож не то)
2) часто было что надо апдейтить колонку passwd и поэтому возникал конфликт с переменной пасса для коннекта к бд (тоже passwd), поэтому лучше в кукисы запихнуть
а так ничё вроде)
3) в начало каждого запроса желательно пихнуть нуллбайт в камменах /* */ чтоб запросы не логировались
дамп баз :
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$file = "C:\\tmp\\dump_".$db.".sql";
$p_v=$SystemRoot."\my.ini";
$os="win";
} else {
$file = "/tmp/dump_".$db.".sql";
$p_v="/etc/passwd";
}
а если safe_mode или open_basedir , если не предопределена папка /tmp то дамп не пройдет.
mysql_create_db() http://us2.php.net/manual/ru/function.mysql-create-db.php
Эта функция недоступна в библиотеке для MySQL версий 4.x.
у меня этой функции на php 5 тоже нет.
если включить error_reporting сразу нотайсов 10 выкидывается.
с кодировкой у меня не хотят браузеры работать, konqueror не понимает javascript такой.
это то что на первый взгляд бросается в глаза.
Alexsize
17.10.2007, 21:08
В одной таблице было поле 'bd'
при попытке изменить его... вылезал ерроренг :
Поэтому лучше думаю заменить в скрипте все переменные типа :
$db , $login , $port , $server
на что нить более эмм... неиспользуемое...
Все учтем! Тестим тестим!
guest3297
17.10.2007, 21:27
Можно ведеться изученик сайпекс
Да на мой взгляд это лучшее решение.
Как аналог погу предложить такой вариант, на моем опыте базы 20-30 лямов записей очень сложно долго и нудно дампяться, основная проблемма возникает когда переваливаем за 10кк обычные дамперы слить не могут, из-за так как пролистывать поток тех данных им приходиться, в данном случае всегда выручал phpmyadmin так вот если можно было бы сделать дамп таким образом:
Общий count() делим к примеру на 20к и сливаем лимитом по 20к всю базу не забывая по пути юзать gizp -9, а данном способе будет минимальная нагрузка на бд, по сравнению например mysqldump ом, И Малое время затраченное на операцию.
Если я не прав поправьте меня, хотел бы услыщать ваш опыт слив больших баз(особенно когда сам сервак находиться не на localhost а на стронем серваке во внутренней локалке).
Alexsize
17.10.2007, 21:36
']Да на мой взгляд это лучшее решение.
Как аналог погу предложить такой вариант, на моем опыте базы 20-30 лямов записей очень сложно долго и нудно дампяться, основная проблемма возникает когда переваливаем за 10кк обычные дамперы слить не могут, из-за так как пролистывать поток тех данных им приходиться, в данном случае всегда выручал phpmyadmin так вот если можно было бы сделать дамп таким образом:
Общий count() делим к примеру на 20к и сливаем лимитом по 20к всю базу не забывая по пути юзать gizp -9, а данном способе будет минимальная нагрузка на бд, по сравнению например mysqldump ом, И Малое время затраченное на операцию.
Если я не прав поправьте меня, хотел бы услыщать ваш опыт слив больших баз(особенно когда сам сервак находиться не на localhost а на стронем серваке во внутренней локалке).
Я сливал огромные базы сайпексом. Без проблем. И восстанавливал у себя на денвере. Кэш, если не сложно, продолжай давать рекомендации.
Надеюсь их мне можно вынести из моа и дать автору? ;)
guest3297
17.10.2007, 21:42
Огромные базы.
Скайпекс, была такая трабла бд была в локалке и сливать можно было разумееться тольео с сервака используя скрипт либо проставить сокс и работать через тунель, порты там не биндились не при каких условиях,
А Скайпекс, сливал первые 500 метров примерно и срубался (тоесть при сливе любой базы он останавливался примерно на 467мб). С чем это связанно я могу предположить что в принцыпе при дампе со строннего ресурса вся инфа идет либо в оперативку либо в темп файл так вот при больших размерах он просто начинает дропаться, так же проблемма исполнения скприптов на php когда 1 процесс висит долгое время, его палит либо какойто софт автаматом рубящий по времени исполнения либо админ либо вообще настройки php не позваляют запускать на долго процесс, поэтому слив маленькими партиями и потом дальнейшее архивирование на мой взгляд самый разумный и беспалевынй способ.
эт еще про дамп ) кароч если одновременно дампить на одном серваке несколько раз то естественно так как используется постоянное имя дампа в тмп то дамп будет перезаписваться и в итоге фиг пойми че уйдет в браузер ;)
guest3297
17.10.2007, 23:40
поток в браузер всегда не очень хорошее решение лучше слить на серв а потом уже с серва самостоятельно.
[cash] пошел смотреть сорцы Simple PHP Mysql client
Alexsize
17.10.2007, 23:42
']поток в браузер всегда не очень хорошее решение лучше слить на серв а потом уже с серва самостоятельно.
[cash] пошел смотреть сорцы Simple PHP Mysql client
Полностью с тобой согласен. В том же дампере показали прекрасную возможность так делать. Плюс у них еще и сжатие идет дампа. А это скорость и экономия траффика.
guest3297
28.11.2007, 23:20
В продолдение темы альтернативных клиентов, порадовал скрипт. phpmyadmin в 1 скрипте...
http://sourceforge.net/projects/phpminiadmin/
сообственно тут сливал одну БД, так не один скрипт справится не смог , пришлось проить электа написать небольшой скрипт который справился с поставленой задачей
, так вот при сливе БД когда она не на локалхосте, лучшие показатели были при выборке лимитом по 500 записей, при >10000 жутко тормозил Mysql сервер, вообщем это так на заметку №1, а №2 это возможность делать дамп кусками по лимиту. ибо при дампе больших баз , можно уперется в то что апач сбрасывает коннект к скрипту после например минуты или двух, и тогда просто хрен сдампишь.
бывало мемори лимит в РНР портит всё. дамплю и вместа дампа - еррор лог торчит, но эт отдельная история. некоторые скрипты с этим справляются на отлично.
blackybr
30.11.2007, 19:26
в таких случаях дамплю с выводом в браузер чем-то вроде этого
<?php
@error_reporting(0);
@set_time_limit(0);
$link = mysql_connect("localhost", "usr", "pass") or die("fuck!");
//задаем в лимите сколько и откуда
$r = mysql_query("SELECT * from user limit 1,1");
$f = mysql_fetch_assoc($r);
$k = array_keys($f);
echo "<table>\n<tr>";
foreach($k as $key)
echo "<th>$key";
do
{
echo "\n<tr>";
foreach($f as $val)
echo "<td>$val";
}
while($f = mysql_fetch_assoc($r));
mysql_close($link);
echo "</table>\n";
?>
Я переписал код, избавился от нотисов и ворнингов
еще немножко осталось
Notice: Undefined variable: os in /var/www/html/base/sql.php on line 1435
Notice: Undefined index: BOOT_FILE in /var/www/html/base/sql.php on line 1438
Notice: Undefined index: BOOT_IMAGE in /var/www/html/base/sql.php on line 1440
.....
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /var/www/html/base/sql.php on line 2434
Notice: Undefined variable: string in /var/www/html/base/sql.php on line 2447
Notice: Undefined variable: edit in /var/www/html/base/sql.php on line 2449
нотис возникает если например производится операция с несуществующей переменной:
if ($os =='win') {
чтоб не было его можно так:
if (isset($os) && $os =='win') {
guest3297
11.12.2007, 19:38
Дизайн просто ужасный не органичный, сделайте пожалуста, со старым дизом, глаза режет нехера не видно издевательво, и что за мода пошла делать диз в стиле ачата?
Зеркало : http://hack-shop.org.ru/m.txt
Вот доисправленная версия
Ifolder.ru (http://ifolder.ru/4533906)
slil.ru (http://slil.ru/25226871)
И обфускатор чтобы ее кодировать(простой обфускатор-паковщик для php)
ifolder.ru (http://ifolder.ru/4534004)
slil.ru (http://slil.ru/25226878)
2 [cash]
Честно говоря лениво пока делать чтобы все стили были в шапке, много переписывать надо. Попозже как-нибудь.
кстати не знаю что ты хотел там но вроде так правильнее:
error_reporting(E_ALL | E_WARNING | E_NOTICE);
ну тоесть знак разделения. http://us3.php.net/error_reporting
Notice: Undefined index: BOOT_IMAGE in /var/www/html/base/sql.php on line 1440
Вот этого понять не могу, у меня ни на денвере ни на линуксе не выскакивает, да и как оно может выскакивать, там же код
$os="OS\Kernel: <b>".isset($_ENV["BOOT_IMAGE"])?$_ENV["BOOT_IMAGE"]:''.$k."</b>";
$os="OS\Kernel: <b>".(isset($_ENV["BOOT_IMAGE"])?$_ENV["BOOT_IMAGE"]:''.$k."</b>");
вот так не выскакивает.
MacroMysql последней версии, с поддержкой стилей.
Финальный релиз.
http://slil.ru/25248390
2 [ cash ]
Вот тебе и черный текст на светло-сером :)
кхе...
MySQL RST/GHC Manager 2.3
Апдейт на основе релиза от Макро и мелочей из симплекс-дампера.
Все серьезные и не очень глюки, упоминавшиеся в теме исправил.
Работспособность компонентов тщательно протестировал.
Дампит шустро и уверенно. Код дампа переписан.
Резервирует/восстанавливает базы любого объема/размера в/из источника на ваш выбор.
Убрал утечки памяти в критичных функциях.
Нагрузка на mysql и PHP распределена равномерно - золотая середина между производительностью и потреблением ресурсов.
Оптимальная прозводительность - за 1-sql запрос выбираются 10.000 записей (лимит) и за раз пишутся в файл дампа, что требует ~5 Мб памяти от PHP.
Лимит можно уменьшать/повышать в ущерб производительности/ресурсам.
Ведется простая статистика.
Да и вообще много кода переписано, исправлено.
Большая часть времени затрачена на мелочи, о которых бесполезно рассказывать, но на самом деле как раз они и обеспечивают стабильность работы.
Так что сами смотрите, нравится или нет.
Призываю к содействию: Если найдете глюк - напишите, что вдруг конкретно где у вас не работает. Желательно прилагать PHPINFO, можно в ПМ, с описанием проблемы. Как вы думаете, в чем проблема.
Спасибо Макро и Алексайзу, и всем участникам обсуждения. С прадниками вас.
http://sec-123.narod.ru/shells/rst_sql2.3.zip
Вообщем взяли эту штучку к себе и сразу в глаза попалось:
1) Сначала считаются данные о таблице, а потом выполняется запрос пользователя..
Приходится обновлять страничку чтобы посмотреть кол-во записей оставшихся.
2) Приходится выполнять по одному запросу, а хотелось бы как в phpmyadmin пачку сунул и все.
blackybr
08.03.2008, 15:51
единственное меня немного смутила дэфолтная галочка Drop Table If Exists %)
ЗЫ апдейт.. что бы ни выбрал бзип или гзип, всегда бзипится, на серваке есть и то и то
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot