⑴ php的网站,怎么扫描出潜藏的一句话木马
查找那些高危函数就行了,比迅如困如eval
php后门木马常用的函数亩念大橡轮致上可分为四种类型:
1. 执行系统命令: system, passthru, shell_exec, exec, popen,
proc_open
2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate,
gzuncompress, gzdecode, str_rot13
3. 文件包含与生成: require, require_once, include, include_once,
file_get_contents, file_put_contents, fputs, fwrite
4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
⑵ PHP 对数组进行压缩编码,哪种最好
<?php
@set_time_limit(0);
if(php_sapi_name()!=='禅乎cli') {
header('Content-Type:text/plain');
}
$s = file_get_contents('xxx');
$data = array('data'=>str_repeat($s,100));
function benchmark($function, $times=1){
$started_at = microtime(1);
$data = null;
for($i=0; $i<$times; $i++){
$data = $function();
}
printf("%.5fs, length:%.5fm\n\n", microtime(1)-$started_at, (strlen($data) / 1024 /1024));
}
echo "serialize \n";
benchmark(function() use($data){
$t = ((serialize($data)));
$s = unserialize((($t)));
return $t;
});
echo "serialize + base64 \n";
benchmark(function() use($data){
$t = base64_encode((serialize($data)));
$s = unserialize((base64_decode($t)));
return $t;
});
echo "serialize + gzip \n";
benchmark(function() use($data){
$t = (gzcompress(serialize($data)));
$s = unserialize(gzuncompress(($t)));
return $t;
});
echo "serialize+base64_encode +gzip \n";
benchmark(function() use($data){
$t = base64_encode(gzcompress(serialize($data)));
$s = unserialize(gzuncompress(base64_decode($t)));
return $t;
});
exit();
返回值:
serialize
0.01427s, length:6.02410m
serialize + base64
0.17287s, length:8.03214m
serialize + gzip
0.43907s, length:1.44310m
serialize+base64_encode +gzip
0.51364s, length:1.92414m
感觉各有差袭慧优势, 不知道选择哪种方案来做...
要么时间慢, 要么容量大, 没有即时间快,又容量小的方案虚答
⑶ 用PHP查找文本文件中指定字符间的值[
楼主,给你一个能看清取值过滚塌程的程序(变量的汉字部分可以随便改)
<?php
$a = "eval(Urldecode(gzuncompress(base64_decode('哇哈哈哈串') )))";
echo $a;//输出变量原值
echo "<兄羡hr />";
$a1=strpos($a,"'");
echo $a1;//输入第一个'出现的位置
echo "<hr />";
$a2=strrpos($a,"'");
echo $a2;//输出第二个'出现的位置
echo "<hr />";
$a3 = substr($a,$a1+1,$a2-$a1-1);
echo $a3;//输出期望值
?>
运行结果:羡备拍
eval(Urldecode(gzuncompress(base64_decode('哇哈哈哈串') )))
--------------------------------------------------------------------------------
第一个'出现在42的位置
--------------------------------------------------------------------------------
第二个'出现在53的位置
--------------------------------------------------------------------------------
取从第42+1开始后的53-42-1个字符,就是结果
哇哈哈哈串
⑷ php 使用 gzcompress( )压缩以后 服务器的c 语言uncompress()不能解压,该怎么处理呀
不懂C语言,不过gzcompress()是敬袜压缩字符凯宴串的。uncompress是解压缩文件的,不可能解压的亮孙激了的吧
⑸ 到底什么是PHP序列化
在PHP中,序列化用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构。本文讲述PHP序列化的四种方案,感兴趣的可以了解一下
序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。
1、什么是PHP序列化——serialize和unserialize函数
这两个是序列化和反序列化PHP中数据的常用函数。
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//序列化数组$s = serialize($a);echo $s;//输出结果:a:3:{s:1:"a";s:5:"Apple";s:1:"b";s:6:"banana";s:1:"c";s:7:"Coconut";}
echo ''
;
//反序列化$o = unserialize($s);
print_r($o);
当数组值包含如双引号、单引号或冒号等字符时,它们被反序列化后,可能会出现问题。为了克服这个问题,一个巧妙的技巧是使用base64_encode和base64_decode。
$obj = array();//序列化$s = base64_encode(serialize($obj)); //反序列化$original = unserialize(base64_decode($s));
但是base64编码将增加字符串的长度。为了克服这个问题,可以和gzcompress一起使用。
//定义一个用来序列化对象的函数
function my_serialize( $obj ) { return base64_encode(gzcompress(serialize($obj))); }
//反序列化function my_unserialize($txt) { return unserialize(gzuncompress(base64_decode($txt))); }
2、什么是PHP序列化——json_encode 和 json_decode
使用JSON格式序列化和反序列化是一个不错的选择:
使用json_encode和json_decode格式输出要serialize和unserialize格式快得多。
JSON格式是可读的。
JSON格式比serialize返回数据结果小。
JSON格式是开放的、可移植的。其他语言也可以使用它。
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//序列化数组$s = json_encode($a);echo $s;//输出结果:{"a":"Apple","b":"banana","c":"Coconut"}
echo '
;
//反序列化$o = json_decode($s);
在上面的例子中,json_encode输出长度比上个例子中serialize输出长度显然要短。[page]
3、什么是PHP序列化——var_export 和 eval
var_export 函数把变量作为一个字符串输出;eval把字符串当成PHP代码来执行,反序列化得到最初变量的内容。
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//序列化数组$s = var_export($a , true);echo $s;//输出结果: array ( 'a' => 'Apple', 'b' => 'banana', 'c' => 'Coconut', )
echo '
';
//反序列化eval('$my_var=' . $s . ';');
print_r($my_var);
4、什么是PHP序列化——wddx_serialize_value 和 wddx deserialize
wddx_serialize_value函数可以序列化数组变量,并以XML字符串形式输出。
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//序列化数组$s = wddx_serialize_value($a);echo $s;
//输出结果(查看输出字符串的源码): ApplebananaCoconut
echo '
';
//反序列化$o = wddx_deserialize($s);
print_r($o);//输出结果:Array ( [a] => Apple [b] => banana 1 => Coconut )
可以看出,XML标签字符较多,导致这种格式的序列化还是占了很多空间。
结论
上述所有的函数在序列化数组变量时都能正常执行,但运用到对象就不同了。例如json_encode序列化对象就会失败。反序列化对象时,unserialize和eval将有不同的效果。
本篇《什么是PHP序列化?这个知识点才是你应该了解到的用》到这里就已经结束了,小编一直认为,某一个编程软件受欢迎是有一定原因的,首先吸引人的一定是其功能,环球网校的小编祝您PHP学习之路顺利,如果你还想知道更多php知识,也可以点击本站的其他文章进行学习。
⑹ php gzencode函数需要扩展吗
gzencode
(PHP 4 >= 4.0.4, PHP 5)
gzencode — Create a gzip compressed string
说明
string gzencode ( string $data [, int $level = -1 [, int $encoding_mode = FORCE_GZIP ]] )
This function returns a compressed version of the input data compatible with the output of the gzip program.
For more information on the GZIP file format, see the document: » GZIP file format specification version 4.3 (RFC 1952).
参数
data
The data to encode.
level
The level of compression. Can be given as 0 for no compression up to 9 for maximum compression. If not given, the default compression level will be the default compression level of the zlib library.
encoding_mode
The encoding mode. Can be FORCE_GZIP (the default) or FORCE_DEFLATE.
Prior to PHP 5.4.0, using FORCE_DEFLATE results in a standard zlib deflated string (inclusive zlib headers) after a gzip file header but without the trailing crc32 checksum.
In PHP 5.4.0 and later, FORCE_DEFLATE generates RFC 1950 compliant output, consisting of a zlib header, the deflated data, and an Adler checksum.
返回值
The encoded string, or FALSE if an error occurred.
更新日志
版本 说明
5.4.0 FORCE_DEFLATE now generates RFC 1950 compliant output.
4.2.0 The encoding_mode parameter was added
范例
The resulting data contains the appropriate headers and data structure to make a standard .gz file, e.g.:
Example #1 Creating a gzip file
<?php
$data = implode("", file("bigfile.txt"));
$gzdata = gzencode($data, 9);
$fp = fopen("bigfile.txt.gz", "w");
fwrite($fp, $gzdata);
fclose($fp);
?>
参见
gzdecode() - Decodes a gzip compressed string
gzdeflate() - Deflate a string
gzinflate() - Inflate a deflated string
gzuncompress() - Uncompress a compressed string
gzcompress() - Compress a string
» ZLIB Compressed Data Format Specification (RFC 1950)
gzeof> <gzdeflate
[edit] Last updated: Sat, 17 Nov 2012
⑺ 高分求一段PHP加密代码的解密算法
eval(Urldecode(gzuncompress(base64_decode('加密字符串') ))); 你这句话不就是解码出来了吗??你还想怎么处理?'加密字符串'这里换成变量就行了嘛,多个变量的话用数组存放,再租仿森遍历这个数组不就行了吗??
我晕,你不会将值赋给一个变量来保存呀,例如这样,eval('$str = '.Urldecode(gzuncompress(base64_decode('加密字符串') )));这样就是行大扮了,echo $str;就可以看得到弊亩了,
⑻ 求PHP解码,不知是什么加密的
?php
//解密PHP
$file='Code2.php';
$fp=fopen($file,'r');
$str=fread($fp,filesize($file));
fclose($fp);
$code=strdecode($str);
//forfuncde1
preg_match("/;(.*)]='(.*?)';for(/e",$code,$res);
$c1=$res[2];
//forfuncde1
preg_match("/;(.*)=(.*)('(.*)');(.*);(.*)$/e"胡让,$res[1],$rs);
$c2=$rs[3];
//for睁做帆funcde2
preg_match("/'(@(.*?)(\'(.*?)\'))/e",$code,$res);
$c3=悉雹$res[2];
preg_match("/'.(.*?).'/e",$c3,$r);
preg_match("/('(.*?)','/e",$r[1],$r2);
$c4=$r2[1];
$c4=base64_decode(de1(destr($c4),1));
$c3=str_replace($r[0],$c4,$c3);
$funstr=gzuncompress(base64_decode($c3)).base64_decode($c1);
preg_match("/if(.*),'(.*?)'))/e",$funstr,$res);
$c5=$res[2];
//findmaincode
preg_match("/'(@(.*)(\'(.*?)\'.(/e",$code,$res);
$c=$res[2];
preg_match("/'.(.*?).'/e",$c,$r);
preg_match("/('(.*?)','/e",$r[1],$r2);
$c6=base64_decode(de1(destr($r2[1]),1));
$c=str_replace($r[0],$c6,$c);
//find$de2
preg_match("/".((.*)='(.*?)'));/e",$code,$res);
$de2=destr($res[2]);
$x=($de2.=de2($de2));
$c.=$x;
$decode=gzuncompress(base64_decode($c));
$str=explode('<!--<?phpendif;?>',$decode);
$str=explode('?><?php$GLOBALS',$str[1]);
$decode=$str[0].'?>';
echo$decode;
file_put_contents($file.'.de.php',$decode);
//////////////////////////////
functionde1($de1,$str2=''){
global$c1,$c2;
if(!$str2)return(base64_decode(destr($de1)));
$s9=de1($c2);
for($i=0;$i<strlen($de1);$i++)
$s9.=ord($de1{$i})<245?((ord($de1{$i})>140&&ord($de1{$i})<245)?chr(ord($de1{$i})/2):$de1{$i}):"";
return(base64_decode($s9));
}
functionde2(&$de2){
global$c5;
if(strstr($de2,$c5)){
$de2=str_replace($c5,'',$de2);
$de2=gzuncompress($de2);
}
if(strstr($de2,$c5)){
$de2=str_replace($c5,'',$de2);
de2($de2);
}
}
/////////////////////////////
functionstrdecode($str){
$len=strlen($str);
$newstr='';
for($i=0;$i<$len;$i++){
$n=ord($str[$i]);
$newstr.=decode($n);
}
return$newstr;
}
functiondecode($dec){
if(($dec>126||$dec<32)){
return'['.$dec.']';
}else{
returnchr($dec);
}
}
functiondestr($str){
$k=0;
$num='';
$n=strlen($str);
$code='';
for($i=0;$i<$n;$i++){
if($str[$i]=='['){
$k=1;
}elseif($str[$i]==']'){
$num=intval($num);
$code.=chr($num);
$k=0;
$num=null;
}else{
if($k==1){
$num.=$str[$i];
}else{
$code.=$str[$i];
}
}
}
return$code;
}
?>
不行就改改正则什么的