Heim > Backend-Entwicklung > PHP-Tutorial > PHP + Socket 发送http请求进而实现网站灌水

PHP + Socket 发送http请求进而实现网站灌水

WBOY
Freigeben: 2016-06-23 13:46:24
Original
1185 Leute haben es durchsucht

本质上实现组装http信息的请求行,头信息,主题信息,参考it自学网

cookie信息和http请求头有很大关系,注意把http请求头信息传递到函数里面


01-msg.php

<?phprequire ('./http.class.php');$http = new Http('http://home.verycd.com/cp.php?ac=pm&op=send&touid=0&pmid=0');$http->setHeader('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');$http->setHeader('Accept-Encoding: gzip, deflate');$http->setHeader('Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3');$http->setHeader('Connection: keep-alive');$http->setHeader('Cookie: Hm_lvt_c7849bb40e146a37d411700cb7696e46=1371132935,1371551596,1371552570; CNZZDATA1479=cnzz_eid%3D2070887527-1371133011-http%253A%252F%252Fhome.verycd.com%26ntime%3D1371559611%26cnzz_a%3D27%26retime%3D1371559611556%26sin%3Dhttp%253A%252F%252Fwww.verycd.com%252Fi%252F17907141%252F%26ltime%3D1371559611556%26rtime%3D1; __utma=248211998.1671623420.1371133015.1371557486.1371559612.4; __utmz=248211998.1371552579.2.2.utmcsr=verycd.com|utmccn=(referral)|utmcmd=referral|utmcct=/; Hm_lpvt_c7849bb40e146a37d411700cb7696e46=1371554752; post_action=repost; BAIDU_CLB_REFER=http%3A%2F%2Fcwebmail.mail.163.com%2Fjs5%2Fread%2Freadhtml.jsp%3Fssid%3DI7zQECYCxLDKHPlnXYxQm9sNe5EPh1drYPvN26nZekk%253d%26mid%3D45%3A1tbiLRFAhFEFoLvtCAAAsS%26color%3D003399%26preventSetRead%3Don%26font%3D15; uchome_loginuser=http%E5%8D%8F%E8%AE%AE; uchome__refer=%2Fspace.php%3Fdo%3Dpm%26filter%3Dnewpm; __utmc=248211998; sid=9a48b201fb4d176a7188ef2a3560789651eb4766; member_id=17822047; member_name=http%E5%8D%8F%E8%AE%AE; mgroupId=93; pass_hash=e75f942862a5e927a2faffd2d2d582c9; rememberme=false; uchome_auth=4128oUJWyonkCXZvxM4sDRjcugSmt3L0r197Pq%2BPdf8fcLJsUiNZKBXjG0hYuPZSRK3XEs2FuRn1pH2cEFBNc1H0Im7x5A; uchome_sendmail=1; uchome_checkpm=1; __utmb=248211998.1.10.1371559612; dcm=1');$http->setHeader('Referer: http://home.verycd.com/cp.php?ac=pm');$http->setHeader('User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0');$msg = array('formhash'=>'4f23e777','message'=>'我不是在灌水,请放行','pmsubmit'=>'true','pmsubmit_btn'=>'发送','refer'=>'http://home.verycd.com/space.php?do=pm&filter=privatepm','username'=>'http接收');file_put_contents('./res.html',$http->post($msg));echo 'ok';
Nach dem Login kopieren

http.class.php

<?php /*PHP+socket编程 发送HTTP请求要求能 模拟下载,注册,登陆,批量发帖*/// http请求类的接口interface Proto {    // 连接url    function conn($url);    //发送get查询    function get();    // 发送post查询    function post();    // 关闭连接    function close();}class Http implements Proto {    const CRLF  = "\r\n";    protected $errno = -1;    protected $errstr = '';    protected $response = '';    protected $url = null;    protected $version = 'HTTP/1.1';    protected $fh = null;        protected $line = array();    protected $header = array();    protected $body = array();        public function __construct($url) {        $this->conn($url);        $this->setHeader('Host: ' . $this->url['host']);    }    // 此方法负责写请求行    protected function setLine($method) {        $this->line[0] = $method . ' ' . $this->url['path'] . '?' .$this->url['query'] . ' '. $this->version;    }    // 此方法负责写头信息    public function setHeader($headerline) {        $this->header[] = $headerline;     }    // 此方法负责写主体信息    protected function setBody($body) {         $this->body[] = http_build_query($body);    }    // 连接url    public function conn($url) {        $this->url = parse_url($url);        // 判断端口        if(!isset($this->url['port'])) {            $this->url['port'] = 80;        }        // 判断query        if(!isset($this->url['query'])) {            $this->url['query'] = '';        }        $this->fh = fsockopen($this->url['host'],$this->url['port'],$this->errno,$this->errstr,3);    }    //构造get请求的数据    public function get() {        $this->setLine('GET');        $this->request();        return $this->response;    }    // 构造post查询的数据    public function post($body = array()) {              $this->setLine('POST');        // 设计content-type        $this->setHeader('Content-type: application/x-www-form-urlencoded');                // 设计主体信息,比GET不一样的地方        $this->setBody($body);        // 计算content-length        $this->setHeader('Content-length: ' . strlen($this->body[0]));        $this->request();        return $this->response;    }    // 真正请求    public function request() {        // 把请求行,头信息,实体信息 放在一个数组里,便于拼接        $req = array_merge($this->line,$this->header,array(''),$this->body,array(''));        //print_r($req);        $req = implode(self::CRLF,$req);         //echo $req; exit;        fwrite($this->fh,$req);                while(!feof($this->fh)) {            $this->response .= fread($this->fh,1024);        }        $this->close(); // 关闭连接    }    // 关闭连接    public function close() {        fclose($this->fh);    }    }/*$url = 'http://news.163.com/13/0613/09/9187CJ4C00014JB6.html';$http = new Http($url);echo $http->get();*//*set_time_limit(0);$url = 'http://liangyue.net.cn/0523/?';for($i=1;$ipost(array('tit'=>$tit,'con'=>$con,'submit'=>'留言'));    echo $tit,'-----------',$con,'<br>';    usleep(2000);}*/
Nach dem Login kopieren



Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage