很早就有深入剖析学习一款源代码审计东西的主意,在查找rips源码剖析相关材料时,发现相关的学习剖析材料较少,所以挑选rips作为该系列文章的剖析方针,由于没有最新版的rips的源码,因而选取的rips源码为已揭露的版别。由于我是之一次将详细的剖析写下来,而且自身的技能才能问题,在某些场景下的用语或许技能细节描述或许存在误差,请师傅们包容。
导言
RIPS是一个源代码剖析东西,它运用了静态剖析技能,可以自动化地发掘PHP源代码潜在的安全缝隙
本篇内容
作为本系列文章的开端,只介绍rips的逻辑流程以及lib文件夹下各文件大致内容剖析,不详细剖析代码审计的细节,相关细节在之后的文章中剖析
全体结构
RIPS东西的全体架构如下:
+-- CHANGELOG [file]
+-- config [dir]
| +-- general.php
| +-- help.php
| +-- info.php
| +-- securing.php
| +-- sinks.php
| +-- sources.php
| +-- tokens.php
+-- css [dir]
| +-- ayti.css
| +-- barf.css
| +-- code-dark.css
| +-- espresso.css
| +-- notepad++.css
| +-- phps.css
| +-- print.css
| +-- rips.css
| +-- rips.png
| +-- scanning.gif
| +-- term.css
| +-- twlight.css
+-- index.php [file]
+-- js [dir]
| +-- exploit.js
| +-- hotpatch.js
| +-- netron.js
| +-- script.js
+-- lib [dir]
| +-- *** yzer.php
| +-- constructer.php
| +-- filer.php
| +-- printer.php
| +-- scanner.php
| +-- searcher.php
| +-- tokenizer.php
+-- LICENSE [file]
+-- main.php [file]
+-- README.md [file]
+-- windows [dir]
| +-- code.php
| +-- exploit.php
| +-- function.php
| +-- help.php
| +-- hotpatch.php
| +-- leakscan.php
config目录:放置各种装备信息
css目录:放置css款式文件
js目录:放置js代码文件
lib目录:rips的中心代码文件
window:rips的前端构成
lib文件夹阐明
lib文件夹寄存rips运转的中心文件,界说了很多函数以及类用以完结rips完好的代码剖析功用
*** yzer.php
仅界说了Analyzer类,并在类中界说了三个函数,别离是get_tokens_value,get_var_value,getBraceEnd,Analyzer类首要用以依据token信息剖析文件信息
constructer.php
本文件界说了五个类,别离为VarDeclare、VulnBlock、VulnTreeNode、InfoTreeNode、FunctionDeclare,别离用以存储变量、缝隙总干、每个缝隙详细信息、存储信息、存储函数
filer.php
仅界说了函数read_recursiv,用以遍历文件夹下的文件信息
printer.php
界说很多函数,根本都是用于将剖析得到的成果输出至前端页面
scanner.php
仅界说了scanner类,类中包含很多办法,本文件为rips剖析操作的中心文件,包含token处理、字段处理等功用
searcher.php
仅界说了searchFile函数,首要用于依据token信息剖析缝隙状况,并运用VulnTreeNode类加以实例化
tokenizer.php
仅界说了Tokenizer类,类中界说很多函数,其他文件中所用到的token信息均来历于此文件
index.php 剖析
index.php是rips项意图进口文件,因而我放在了之一个剖析。
代码构成首要是前端文件,功用方面首要将方针途径、扫描类型等参数发送至剖析模块。
在index.php的112行邻近,触发点击事情,进入main.php
main.php剖析
main.php是整个rips代码剖析的开端部分
装备文件引进:
include('config/general.php'); // 首要为各种参数的初始设置
include('config/sources.php'); // 或许从外部引进数据的函数或全局变量,如$_GET、file_get_contents()
include('config/tokens.php'); // 将代码分割成许多个token,以便于词法剖析
include('config/securing.php'); // 依据函数的意图运用以及作用不同区分,如 htmlspecialchars 划入数组变量 $F_SECURING_XSS
include('config/sinks.php'); // 灵敏函数汇总,依据函数对应的功用不同进行更进一步的区分
include('config/info.php'); // 对各种函数名增加对应注释,如sqlite_open()=>'using DBMS SQLite'
中心代码引进:
include('lib/constructer.php'); // 类信息
include('lib/filer.php'); // 仅界说了一个函数,用以获取指定途径下一切文件
include('lib/tokenizer.php'); // prepare and fix token list
include('lib/ *** yzer.php'); // string *** yzers
include('lib/scanner.php'); // provides class for scan
[1] [2] [3] [4] [5] 黑客接单网
Sucuri BLOG最近发布了2019年Q2季度被黑网站趋势陈述(Website Hacked Trend Report 2019 -Q2)。这家组织的事端呼应小组和歹意程序研讨组对部分被黑站点进行...
一 “已知”or “不知道” 已知的已知,已知的不知道,不知道的不知道,这个最近安全职业也谈的比较多,现在圈内热炒的“要挟情报”,其实应该归于“已知的不知道”,对本地来说是不知道要挟,其实是其他当...
F12 输入 imageData.name , document.body.outerHTML 能够看调试成果select * from admin where id=1.1union select...
4月7、售后服务套路多,明修暗骗躲不过一、多样化的进犯投进办法无黑客接单论坛,网络上赌博输钱找黑客 图1:真假页面链接比照Facebook 没有对此事置评。 文件名黑客接单论坛,网络上赌博输钱找黑客,...
无首要,咱们在视频中看到了经久不衰的“神器”猫池。 或许你能够有一个无符号的Int16数组,它能够将其分化成16位,处理它就好像是处理一个无符号的整数。 20、!@#$%^&* (新呈现)能接...
news.maiyadi.comBulletin board:1.4获取数据库类型以及表和字段 registry.bind("hello", hello);#include "stand...