PDA

Просмотр полной версии : 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 клиентом!

О всех глюках шелла (а как без них ;) ) прошу писать в этой теме, или в ПМы.

З.Ы. Исправлены баги, данные Тохой и ведеться переработка механизма дампа.

Завершено формирование механизма дампа.

+toxa+
17.10.2007, 00:32
1) диз: хромает на индексе и на выводе, в районе полей Edit и там где названия колонок ибо белый и голубоватый на сером форне незачёт) ярко-красный на кнопках я бы светлосерым заменил) поле "тип" данных тож не катит во всех вкладках) цвет при ошибке выедает глаза) при создании новой таблицы тож белый не катит) "Action: Успешно вставлено строк (1)
PHP-код запроса:"
тож не то)

2) часто было что надо апдейтить колонку passwd и поэтому возникал конфликт с переменной пасса для коннекта к бд (тоже passwd), поэтому лучше в кукисы запихнуть
а так ничё вроде)

3) в начало каждого запроса желательно пихнуть нуллбайт в камменах /* */ чтоб запросы не логировались

ShAnKaR
17.10.2007, 02:01
дамп баз :

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 не позваляют запускать на долго процесс, поэтому слив маленькими партиями и потом дальнейшее архивирование на мой взгляд самый разумный и беспалевынй способ.

ShAnKaR
17.10.2007, 23:38
эт еще про дамп ) кароч если одновременно дампить на одном серваке несколько раз то естественно так как используется постоянное имя дампа в тмп то дамп будет перезаписваться и в итоге фиг пойми че уйдет в браузер ;)

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/

SQLHACK
30.11.2007, 17:31
сообственно тут сливал одну БД, так не один скрипт справится не смог , пришлось проить электа написать небольшой скрипт который справился с поставленой задачей
, так вот при сливе БД когда она не на локалхосте, лучшие показатели были при выборке лимитом по 500 записей, при >10000 жутко тормозил Mysql сервер, вообщем это так на заметку №1, а №2 это возможность делать дамп кусками по лимиту. ибо при дампе больших баз , можно уперется в то что апач сбрасывает коннект к скрипту после например минуты или двух, и тогда просто хрен сдампишь.

TANZWUT
30.11.2007, 19:18
бывало мемори лимит в РНР портит всё. дамплю и вместа дампа - еррор лог торчит, но эт отдельная история. некоторые скрипты с этим справляются на отлично.

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";
?>

ShAnKaR
11.12.2007, 19:10
Я переписал код, избавился от нотисов и ворнингов
еще немножко осталось

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

Macro
12.12.2007, 21:48
Вот доисправленная версия

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]

Честно говоря лениво пока делать чтобы все стили были в шапке, много переписывать надо. Попозже как-нибудь.

ShAnKaR
12.12.2007, 22:21
кстати не знаю что ты хотел там но вроде так правильнее:

error_reporting(E_ALL | E_WARNING | E_NOTICE);

ну тоесть знак разделения. http://us3.php.net/error_reporting

Macro
12.12.2007, 22:40
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>";

ShAnKaR
13.12.2007, 01:27
$os="OS\Kernel: <b>".(isset($_ENV["BOOT_IMAGE"])?$_ENV["BOOT_IMAGE"]:''.$k."</b>");

вот так не выскакивает.

Macro
17.12.2007, 21:52
MacroMysql последней версии, с поддержкой стилей.
Финальный релиз.

http://slil.ru/25248390

2 [ cash ]
Вот тебе и черный текст на светло-сером :)

Elekt
08.01.2008, 18:02
кхе...

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

k1b0rg
07.03.2008, 22:51
Вообщем взяли эту штучку к себе и сразу в глаза попалось:

1) Сначала считаются данные о таблице, а потом выполняется запрос пользователя..
Приходится обновлять страничку чтобы посмотреть кол-во записей оставшихся.
2) Приходится выполнять по одному запросу, а хотелось бы как в phpmyadmin пачку сунул и все.

blackybr
08.03.2008, 15:51
единственное меня немного смутила дэфолтная галочка Drop Table If Exists %)

ЗЫ апдейт.. что бы ни выбрал бзип или гзип, всегда бзипится, на серваке есть и то и то