RIPS源码精读(二):扫描目标的实例化及token信息的生成

访客5年前黑客资讯1055

很早就有深入剖析学习一款源代码审计东西的主意,在查找rips源码剖析相关材料时,发现相关的学习剖析材料较少,所以挑选rips作为该系列文章的剖析目标,由于没有最新版的rips的源码,因而选取的rips源码为已揭露的版别。由于我是之一次将详细的剖析写下来,而且自身的技能才能问题,在某些场景下的用语或许技能细节描述或许存在误差,请师傅们包容。上一篇文章:RIPS源码精读(一):逻辑流程及lib文件夹大致阐明
 
导言
在main.php的171行邻近,rips对Scanner类进行了实例化,并由此进入正式的剖析流程。
 
内容简介
阅览rips关于token剖析处理相关的源码,并剖析对应的用处及处理逻辑。
 
Scanner类
首先是调用Scanner类的结构函数
$scan = new Scanner($file_scanning, $scan_functions, $info_functions, $source_functions);
各参数阐明如下:
$file_scanning:待扫描文件的文件名
$scan_functions:待扫描的函数类型,由 main.php 中 $_POST['vector'] 的值决议
$info_functions:由 main.php 中 Info::$F_INTEREST 而来,是一个已界说的函数名数组
$source_functions:由 main.php 中 Sources::$F_OTHER_INPUT 而来,是一个已界说的函数名数组
Scanner类结构函数剖析
Scanner结构函数界说如下:
function __construct($file_name, $scan_functions, $info_functions, $source_functions)
首先是很多的变量初始赋值:
//直接传参获取的参数
        $this->file_name = $file_name;
        $this->scan_functions = $scan_functions;
        $this->info_functions = $info_functions;
        $this->source_functions = $source_functions;
        //......
其间夹杂着Analyzer类的初始化,用于获取php的include_path装备
$this->include_paths = Analyzer::get_ini_paths(ini_get("include_path"));
紧接着就是依据文件生成token信息
$tokenizer = new Tokenizer($this->file_pointer);
$this->tokens = $tokenizer->tokenize(implode('',$this->lines_pointer));
unset($tokenizer);
在讲这几行效果之前,要先了解token_get_all函数
token_get_all()函数简略介绍
php手册阐明如下
token_get_all() 解析供给的 source 源码字符,然后运用 Zend 引擎的语法剖析器获取源码中的 PHP 言语的解析器代号
函数界说
array token_get_all ( string $source )
示例代码
 echo 123;>
token_get_all()处理句子
token_get_all(" echo 123;>");
处理结果
Array
(
    [0] => Array
        (
            [0] => 376
            [1] =>
            [2] => 1
        )
    [1] => Array
        (
            [0] => 319
            [1] => echo
            [2] => 1
        )
    [2] => Array
        (
            [0] => 379
            [1] =>
            [2] => 1
        )
    [3] => Array
        (
            [0] => 308
            [1] => 123
            [2] => 1
        )
    [4] => ;
    [5] => Array
        (
            [0] => 378
            [1] => ?>
            [2] => 1
        )
)
能够看到,代码被切割成了五段,其间除了第四段之外,每一段都分为三段.
咱们设$token=token_get_all(....),那么$token[0]便对应着
Array
        (
            [0] => 376
            [1] =>
            [2] => 1
        )
则$token[0][1]对应
那么下一个问题就是$token[0]对应数组中的三个值,别离代表什么意思,解说如下:

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17]  黑客接单网

相关文章

黑客接单真实吗_微信找黑客

V4版别无黑客接单真实吗,微信找黑客 检查其间恣意一笔买卖,能够发现其间的失利类型均为 hard_fail:另一方面,包含加密进犯和勒索软件进犯在内的歹意软件进犯在2018年有所下降。 微软称歹意软件...

数据买卖qq群,找黑客破解qq被骗,微信被盗找黑客有用吗

勾选username和password,点击 [猜解内容],右侧列表中成功显现用户名admin,暗码469e80d32c0559f8Signed Applet Attack运用java自签名的程序进行...

压缩包解压密码,手机黑客怎么联系,找黑客下钱

2)试试能否履行cmd。 其官网展现的插屏广告是在软件内的插屏,实际上在其广告SDK开发文档中,还支撑在本身软件外弹插屏广告,这也正是3.15曝光的展现办法。 windows/fore...

什么是黑客_打鱼机黑客怎么联系-黑客接单平台

然后拿了一些信息,比方数据库暗码:Comparer(比照)——通常是经过一些相关的恳求和呼应得到两项数据的一个可视化的“差异”。 9、用发掘机什么是BurpSuite该渠道供给webshell列表、W...

黑客业务接单_找黑客帮忙反被要挟

如成功,则直接看第四步,如不能成功,可测验以下指令为了供给上下文,实践上会将其分化成各个小框,咱们需求将它包装在所谓的视图中。 这些数据视图能够增加类型化的数组,而且能够运用许多不同类型的类型数组。...

赌博被捉了半夜放人回来,给了行政处罚决定书但是

根据相关数据源统计,目前,全球公共网络中有近300多万计算机开启了3389端口,即未改变端口的远程桌面服务(RDP),对于没有经过配置加固的内网更有大量机器开放相关端口服务。 因此,该漏洞既可能造成互...