Viewing file: backupforo_pba.php (15.51 KB) -rw-rw-r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
$user="darklooker";
$clave="ilvm1rg1";
$url="http://papyrefb2.net/phpbb3/ucp.php?mode=login";
$arraypost=array(
"username"=>"darklooker",
"password"=>"ilvm1rg1",
"login"=>"Identificarse");
$cweb=new HTTP_Client($url,$arraypost);
//esperamos 10 segundos
sleep(10);
//aqui debieramos buscar /adm/index.php?sid=, para encontrar el sid.
$sid_en_get=str_replace("/adm/index.php?sid=","",substr($cweb->result,strpos($cweb->result,"/adm/index.php?sid="),(strpos($cweb->result,'">Ir al Panel')-strpos($cweb->result,"/adm/index.php?sid="))));
echo "el sid es $sid_en_get<br>";
$cweb->enviar=$sid_en_get;
$cweb->url="http://papyrefb2.net/phpbb3/adm/index.php";
$cweb->fetch_url() ;
$arraypost=array("Mime Type"=>"application/x-www-form-urlencoded",
"username"=>"darklooker",
"password_4575c820158c7e722ea4bb908a6b510e"=>"ilvm1rg1",
"redirect"=>"index.php",
"sid"=>"dc0b9638b676b3ed52bf317426153ad6",
"credential"=>"4575c820158c7e722ea4bb908a6b510e",
"login"=>"Identificarse");
print_r($cweb);
class http_Client
{
/**
* return conten in array. one line by element
* @access public
* @var array
*/
public $parser=array();
/**
* the url
* @access public
* @var string
*/
public $url;
/** enviar is the string to send to url in POST or GET
*
* @access public
* @var string
*/
public $enviar ;
/**
* number of seconds to timeout conection
* @access public
* @var int
*/
public $timeout = 300;
/**
* the result in one variable.
* @access public
* @var string
*/
public $result ;
/**
* Curl handler
* @access public
* @var resource
*/
public $curl_handler ;
/**
* Contain last error message if error occured
* @access public
* @var string
*/
public $error_msg;
/**
* Contain last error number if error occured
* @access public
* @var string
*/
public $error;
/**
* file for cookies
* @access public
* @var string
*/
public $cookies_file ;
/**
* set debug to true in order to get usefull output
* @access private
* @var string
*/
var $debug = false;
/**
* Curl_HTTP_Client constructor
* @param boolean debug
* @access public
*/
public function __construct ($url,$enviar)
{
//$this->debug = $debug;
$this->init();
$this->url=$url;
$this->enviar=$enviar;
$this->set_user_agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
if (!$this->cookies_file)$this->cookies_file="cookiex.txt";
if (!$this->timeout)$this->timeout=20;
$this->store_cookies($this->cookies_file);
if (is_array($enviar)){
//echo "se envia por post!".chr(10);
$this->send_post_data();
}else{
$this->fetch_url();
}
}
/**
* Init Curl session
* @access public
*/
function init()
{
// initialize curl handle
$this->curl_handler = curl_init();
//set various options
//set error in case http return code bigger than 300
curl_setopt($this->curl_handler, CURLOPT_FAILONERROR, true);
// allow redirects
curl_setopt($this->curl_handler, CURLOPT_FOLLOWLOCATION, true);
// use gzip if possible
curl_setopt($this->curl_handler,CURLOPT_ENCODING , 'gzip, deflate');
// do not veryfy ssl
// this is important for windows
// as well for being able to access pages with non valid cert
curl_setopt($this->curl_handler, CURLOPT_SSL_VERIFYPEER, 0);
}
/**
* Set username/pass for basic http auth
* @param string user
* @param string pass
* @access public
*/
function set_credentials($username,$password)
{
curl_setopt($this->curl_handler, CURLOPT_USERPWD, "$username:$password");
}
/**
* Set referrer
* @param string referrer url
* @access public
*/
function set_referrer($referrer_url)
{
curl_setopt($this->curl_handler, CURLOPT_REFERER, $referrer_url);
}
/**
* Set client's useragent
* @param string user agent
* @access public
*/
function set_user_agent($useragent)
{
curl_setopt($this->curl_handler, CURLOPT_USERAGENT, $useragent);
}
/**
* Set to receive output headers in all output functions
* @param boolean true to include all response headers with output, false otherwise
* @access public
*/
function include_response_headers($value)
{
curl_setopt($this->curl_handler, CURLOPT_HEADER, $value);
}
/**
* Set proxy to use for each curl request
* @param string proxy
* @access public
*/
function set_proxy($proxy)
{
curl_setopt($this->curl_handler, CURLOPT_PROXY, $proxy);
}
/**
* Send post data to target URL
* return data returned from url or false if error occured
* @param string url
* @param mixed post data (assoc array ie. $foo['post_var_name'] = $value or as string like var=val1&var2=val2)
* @param string ip address to bind (default null)
* @param int timeout in sec for complete curl operation (default 10)
* @return string data
* @access public
*/
function send_post_data()
{
//set various curl options first
// set url to post to
curl_setopt($this->curl_handler, CURLOPT_URL,$this->url);
// return into a variable rather than displaying it
curl_setopt($this->curl_handler, CURLOPT_RETURNTRANSFER,true);
//bind to specific ip address if it is sent trough arguments
//set curl function timeout to $timeout
curl_setopt($this->curl_handler, CURLOPT_TIMEOUT, $this->timeout);
//set method to post
curl_setopt($this->curl_handler, CURLOPT_POST, true);
//generate post string
$post_array = array();
if(is_array($this->enviar))
{
foreach($this->enviar as $key=>$value)
{
$post_array[] = urlencode($key) . "=" . urlencode($value);
}
$post_string = implode("&",$post_array);
if($this->debug)
{
echo "Url: $url\nPost String: $post_string\n";
}
}
else
{
$post_string = $postdata;
}
// set post string
curl_setopt($this->curl_handler, CURLOPT_POSTFIELDS, $post_string);
//and finally send curl request
$this->result = curl_exec($this->curl_handler);
if(curl_errno($this->curl_handler))
{
if($this->debug)
{
echo "Error Occured in Curl\n";
echo "Error number: " .curl_errno($this->curl_handler) ."\n";
echo "Error message: " .curl_error($this->curl_handler)."\n";
}
$this->error=curl_errno($this->curl_handler);
$this->error_msg=curl_error($this->curl_handler);
return false;
}
else
{
return $result;
}
}
/**
* fetch data from target URL
* return data returned from url or false if error occured
* @param string url
* @param string ip address to bind (default null)
* @param int timeout in sec for complete curl operation (default 5)
* @return string data
* @access public
*/
function fetch_url()
{
// set url to post to
curl_setopt($this->curl_handler, CURLOPT_URL,$this->url."?".$this->enviar);
//set method to get
curl_setopt($this->curl_handler, CURLOPT_HTTPGET,true);
// return into a variable rather than displaying it
curl_setopt($this->curl_handler, CURLOPT_RETURNTRANSFER,true);
//bind to specific ip address if it is sent trough arguments
//set curl function timeout to $timeout
curl_setopt($this->curl_handler, CURLOPT_TIMEOUT, $this->timeout);
//and finally send curl request
$this->result = curl_exec($this->curl_handler);
if(curl_errno($this->curl_handler))
{
if($this->debug)
{
echo "Error Occured in Curl\n";
echo "Error number: " .curl_errno($this->curl_handler) ."\n";
echo "Error message: " .curl_error($this->curl_handler)."\n";
}
$this->error=curl_errno($this->curl_handler);
$this->error_msg=curl_error($this->curl_handler);
return false;
}
else
{
return $this->result;
}
}
/**
* Fetch data from target URL
* and store it directly to file
* @param string url
* @param resource value stream resource(ie. fopen)
* @param string ip address to bind (default null)
* @param int timeout in sec for complete curl operation (default 5)
* @return boolean true on success false othervise
* @access public
*/
function fetch_into_file($url, $fp, $ip=null)
{
// set url to post to
curl_setopt($this->curl_handler, CURLOPT_URL,$url);
//set method to get
curl_setopt($this->curl_handler, CURLOPT_HTTPGET, true);
// store data into file rather than displaying it
curl_setopt($this->curl_handler, CURLOPT_FILE, $fp);
//bind to specific ip address if it is sent trough arguments
if($ip)
{
if($this->debug)
{
echo "Binding to ip $ip\n";
}
curl_setopt($this->curl_handler, CURLOPT_INTERFACE, $ip);
}
//set curl function timeout to $timeout
curl_setopt($this->curl_handler, CURLOPT_TIMEOUT, $this->timeout);
//and finally send curl request
$result = curl_exec($this->curl_handler);
if(curl_errno($this->curl_handler))
{
if($this->debug)
{
echo "Error Occured in Curl\n";
echo "Error number: " .curl_errno($this->curl_handler) ."\n";
echo "Error message: " .curl_error($this->curl_handler)."\n";
}
return false;
}
else
{
return true;
}
}
/**
* Send multipart post data to the target URL
* return data returned from url or false if error occured
* (contribution by vule nikolic, [email protected])
* @param string url
* @param array assoc post data array ie. $foo['post_var_name'] = $value
* @param array assoc $file_field_array, contains file_field name = value - path pairs
* @param string ip address to bind (default null)
* @param int timeout in sec for complete curl operation (default 30 sec)
* @return string data
* @access public
*/
function send_multipart_post_data($url, $postdata, $file_field_array=array(), $ip=null)
{
//set various curl options first
// set url to post to
curl_setopt($this->curl_handler, CURLOPT_URL, $url);
// return into a variable rather than displaying it
curl_setopt($this->curl_handler, CURLOPT_RETURNTRANSFER, true);
//bind to specific ip address if it is sent trough arguments
if($ip)
{
if($this->debug)
{
echo "Binding to ip $ip\n";
}
curl_setopt($this->curl_handler,CURLOPT_INTERFACE,$ip);
}
//set curl function timeout to $timeout
curl_setopt($this->curl_handler, CURLOPT_TIMEOUT, $this->timeout);
//set method to post
curl_setopt($this->curl_handler, CURLOPT_POST, true);
// disable Expect header
// hack to make it working
$headers = array("Expect: ");
curl_setopt($this->curl_handler, CURLOPT_HTTPHEADER, $headers);
// initialize result post array
$result_post = array();
//generate post string
$post_array = array();
$post_string_array = array();
if(!is_array($postdata))
{
return false;
}
foreach($postdata as $key=>$value)
{
$post_array[$key] = $value;
$post_string_array[] = urlencode($key)."=".urlencode($value);
}
$post_string = implode("&",$post_string_array);
if($this->debug)
{
echo "Post String: $post_string\n";
}
// set post string
//curl_setopt($this->curl_handler, CURLOPT_POSTFIELDS, $post_string);
// set multipart form data - file array field-value pairs
if(!empty($file_field_array))
{
foreach($file_field_array as $var_name => $var_value)
{
if(strpos(PHP_OS, "WIN") !== false) $var_value = str_replace("/", "\\", $var_value); // win hack
$file_field_array[$var_name] = "@".$var_value;
}
}
// set post data
$result_post = array_merge($post_array, $file_field_array);
curl_setopt($this->curl_handler, CURLOPT_POSTFIELDS, $result_post);
//and finally send curl request
$result = curl_exec($this->curl_handler);
if(curl_errno($this->curl_handler))
{
if($this->debug)
{
echo "Error Occured in Curl\n";
echo "Error number: " .curl_errno($this->curl_handler) ."\n";
echo "Error message: " .curl_error($this->curl_handler)."\n";
}
return false;
}
else
{
return $result;
}
}
/**
* Set file location where cookie data will be stored and send on each new request
* @param string absolute path to cookie file (must be in writable dir)
* @access public
*/
function store_cookies($cookies_file)
{
// use cookies on each request (cookies stored in $cookie_file)
curl_setopt ($this->curl_handler, CURLOPT_COOKIEJAR, $cookies_file);
curl_setopt ($this->curl_handler, CURLOPT_COOKIEFILE, $cookies_file);
}
/**
* Set custom cookie
* @param string cookie
* @access public
*/
function set_cookie($cookie)
{
curl_setopt ($this->curl_handler, CURLOPT_COOKIE, $cookie);
}
function destroy_cookie()
{
//echo "borrando cookies ".$this->cookies_file;
unlink ($this->cookies_file);
}
/**
* Get last URL info
* usefull when original url was redirected to other location
* @access public
* @return string url
*/
function get_effective_url()
{
return curl_getinfo($this->curl_handler, CURLINFO_EFFECTIVE_URL);
}
/**
* Get http response code
* @access public
* @return int
*/
function get_http_response_code()
{
return curl_getinfo($this->curl_handler, CURLINFO_HTTP_CODE);
}
/**
* Return last error message and error number
* @return string error msg
* @access public
*/
function get_error_msg()
{
$err = "Error number: " .curl_errno($this->curl_handler) ."\n";
$err .="Error message: " .curl_error($this->curl_handler)."\n";
return $err;
}
/**
* Close curl session and free resource
* Usually no need to call this function directly
* in case you do you have to call init() to recreate curl
* @access public
*/
function close()
{
//close curl session and free up resources
curl_close($this->curl_handler);
}
}
/**
* @version $Id$
* @package dinke.net
* @copyright © 2005 Dinke.net
* @author Dragan Dinic <[email protected]>
require_once("curl_http_client.php");
$curl = &new Curl_HTTP_Client();
//pretend to be IE6 on windows
$useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
$curl->set_user_agent($useragent);
//uncomment next two lines if you want to manage cookies
//$cookies_file = "/tmp/cookies.txt";
//$curl->store_cookies($cookies_file);
//Uncomment next line if you want to set credentials
//$curl->set_credentials($username, $password);
//Uncomment next line if you want to set specific referrer
//$curl->set_referrer("http://my.referrer.url");
//if you want to send some post data
//form post data array like this one
$post_data = array('login' => 'pera', 'password' => 'joe', 'other_foo_field' => 'foo_value');
//and send request to http://www.foo.com/login.php. Result page is stored in $html_data string
$html_data = $curl->send_post_data("http://www.foo.com/login.php", $post_data);
//You can also fetch data from somewhere using get method!
//Fetch html from url
$html_data = $curl->fetch_url("http://www.foo.com/foobar.php?login=pera&password=joe&other_foo_field=foo_value");
//if you have more than one IP on your server,
//you can also bind to specific IP address like ...
//$bind_ip = "192.168.0.1";
//$curl->fetch_url("http://www.foo.com/login.php", $bind_ip);
//$html_data = $curl->send_post_data("http://www.foo.com/login.php", $post_data, $bind_ip);
*/
?>
?>
|