zoukankan      html  css  js  c++  java
  • rips中如何使用PHP虚拟机自带函数--token_get_all

    这两天在看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]);
                         }
                     }
        
    ?>

    结果如图:

  • 相关阅读:
    [2019南昌邀请赛网络赛D][dp]
    [ Educational Codeforces Round 65 (Rated for Div. 2)][二分]
    [hdoj5927][dfs]
    [cf1140D. Minimum Triangulation][dp]
    [hdoj6483][莫队+线段树/ST]
    使用GAC加速 解决CSP问题 Kakuro
    UVA 11427 Expect the Expected
    UVA 11021 Tribles
    UVA 11174 Stand in a Line 树上计数
    《算法概论》第八章的一些课后题目 关于NP-Complete Problem
  • 原文地址:https://www.cnblogs.com/ermei/p/6385170.html
Copyright © 2011-2022 走看看