这两天在看rips源码,发现,它在审计php代码时调用了php虚拟机自带的token_get_all此函数。

这一函数会将php源码按照内置的规则进行归纳,并输出成数组格式。

如:

<?php

$tokens = token_get_all('<?php echo(123); ?>');

for($i=0 ; $i<count($tokens);$i++){
for($j=1 ; $j<count($tokens[$i]);$j++){
echo "</br>";
//token_name可以将数字表示的字符串的类型转化为php中固定名称,此函数PHP自带
$token_name = token_name($tokens[$i][0]);
echo $token_name;
echo "</br>"; echo htmlspecialchars($tokens[$i][$j]);
}
} ?>

页面展示为:

使用token_name时:

不使用token_name时:

<?php

$tokens = token_get_all('<?php echo(123); ?>');

for($i=0 ; $i<count($tokens);$i++){
for($j=0 ; $j<count($tokens[$i]);$j++){
echo "</br>";
echo "</br>"; echo htmlspecialchars($tokens[$i][$j]);
}
} ?>

如图:

rips使用token_get_all对文件进行整理时:

<?php

                $lines_stack = array();
//读取文件内容并转化成数组
$lines_stack[] = file("C:\\wamp\\www\\test\\index.php");
echo "</br>";
//对数组进行整理
$lines_pointer = end($lines_stack);
//将数组转化成String型,并使用token_get_all
$tokens = token_get_all(implode(' ',$lines_pointer));
//遍历并输出
for($i=0 ; $i<count($tokens);$i++){
//token_get_all所整理出的数组第0位代表字符串类型,第1位代表字符串内容,第2位是字符串所在文件中的行数。
for($j=1 ; $j<count($tokens[$i]);$j++){
echo "</br>";
$token_name = token_name($tokens[$i][0]);
echo $token_name;
echo "</br>"; echo htmlspecialchars($tokens[$i][$j]);
}
} ?>

结果如图:

rips中如何使用PHP虚拟机自带函数--token_get_all的更多相关文章

  1. Window10中利用Windbg与虚拟机(window7)中调试驱动建立方法

    想起自己的windbg配置就转载:eqera的windows内核调试配置,真的是获益良多希望他不会介意我转载他的博客,帮了我很多,记录下来给我也给大家, 其中我主要看的是VMWare的pipe建立,而 ...

  2. 客户机中PLSQL DEV访问虚拟机中的ORCLE11g,错误百出!

    客户机中PLSQL DEV访问虚拟机中的ORCLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签: ORACLE 忙了一下午,只有两个字形容:麻烦!   ...

  3. Linux 在VMware中搭建CentOS6.5虚拟机

    原文:http://www.cnblogs.com/PurpleDream/p/4263465.html Linux 在VMware中搭建CentOS6.5虚拟机 前言:      本文主要是我在大家 ...

  4. 设置 VMware 中的 Mac OS 虚拟机进入 Recovery 模式

    Ø  简介 本文主要介绍 VMware 中的 Mac OS 虚拟机如何进入 Recovery 模式的方法,具体步骤如下: 1.   选择 Mac OS 虚拟机,点击"打开电源是进入固件&qu ...

  5. Linux3 在VMware中搭建CentOS6.5虚拟机

    前言:      本文主要是我在大家hadoop集群之前 ,需啊先安装CentOS虚拟机,记录在此,作为参考.如果能帮助到其他人,自然是更好啦. =========================== ...

  6. VirtualBox中安装CentOS-6.6虚拟机

    1. 下载 可以到官网下载,http://mirror.centos.org/centos/ 如果下载速度太慢的话,也可以到163镜像下载: http://mirrors.163.com/centos ...

  7. VirtualBox中安装CentOS-6.6虚拟机(转载)

    1. 下载 可以到官网下载,http://mirror.centos.org/centos/ 如果下载速度太慢的话,也可以到163镜像下载: http://mirrors.163.com/centos ...

  8. 解决windows 10 9926 中vmware安装的虚拟机无法桥接上网的问题

    从windows 10 出来之后就安装了使用,但一直有一个问题直到9926也没有解决,那就是vmware下的虚拟机无法桥接上网,但NAT方式正常.发现有一种办法可以实现桥接方式上网.但这种方式下本机与 ...

  9. Linux中如何克隆KVM虚拟机

    转载:https://yq.aliyun.com/articles/64860 作者 digoal 日期 2016-11-11 标签 Linux , KVM , 虚拟化 , 克隆 背景 当需要批量部署 ...

随机推荐

  1. ps--记录几个方法步骤

    1.图片文字去掉 1.1 矩形工具-->吸管-->alt+delete 1.2 钢笔工具-->Ctrl+回车(变换选区)-->吸管-->alt+delete 2.图层锁不 ...

  2. Oracle用户权限分配

    一.权限分类 系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言). 实体权限:某种权限用户对其它用户的表或视图的存取权限.(是针对表或视图而言的). 二.系统权限管理 1.系统权限分类: ...

  3. JMeter 连接数据库报错No suitable driver found for jdbc:xxxxxxxxx

    添加JDBC Connection Configuration 和 JDBC Request 组件,添加相关信息 注意两个组件里面输入的Variable Name 必须一致 运行查看结果树出现如下错误 ...

  4. Memo 的当前行、当前列与当前字符

    procedure TForm1.Memo1Click(Sender: TObject); begin   Text := Format('当前列:%d, 当前行:%d', [Memo1.CaretP ...

  5. Flex timer使用 keydown事件注册到stage

    Flex timer使用 keydown事件注册到stage: <?xml version="1.0" encoding="utf-8"?> < ...

  6. open in browser

    Sublime Text 3 Build 3065 Preferences-Key Bindings User: 直接key binding:{ "keys": ["al ...

  7. C# App.config配置文件的讲解

    App.config是C#开发WinForm程序的配置文件,开发Web程序的配置文件叫Web.config.本文介绍App.config的简介使用. 我们先来打开一个App.config文件,看看它的 ...

  8. FMS中的onStatus

    在FlashCom中的Camera, Microphone, LocalConnection, NetConnection,NetStream和 SharedObject对象都提供了事件响应,onst ...

  9. 国内值得关注的官方API集合

    项目地址:https://github.com/marktony/Awesome_API 本页仅收集国内部分官方API,如需查看其他版本,请点击这里. 目录 笔记 出行 词典 电商 地图 电影 后端云 ...

  10. 不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN

    在 /home/your_name/TensorFlow/DCGAN/ 下新建文件 train.py,同时新建文件夹 logs 和文件夹 samples,前者用来保存训练过程中的日志和模型,后者用来保 ...