dvwa 源码分析(四) --- dvwaPhpIds.inc.php分析
根据文件名就知道是IDS相关的
- <?php
- if( !defined( 'DVWA_WEB_PAGE_TO_ROOT' ) ) {
- define( 'DVWA System error- WEB_PAGE_TO_ROOT undefined' );
- exit;
- }
- define( 'DVWA_WEB_ROOT_TO_PHPIDS', 'external/phpids/'.dvwaPhpIdsVersionGet().'/' );
- define( 'DVWA_WEB_PAGE_TO_PHPIDS', DVWA_WEB_PAGE_TO_ROOT.DVWA_WEB_ROOT_TO_PHPIDS );
- // Add PHPIDS to include path
- set_include_path( get_include_path().PATH_SEPARATOR.DVWA_WEB_PAGE_TO_PHPIDS.'lib/' );
- require_once 'IDS/Init.php';
- function dvwaPhpIdsVersionGet() {
- return '0.6';
- }
我们先分析前面的18行
3-6行就是一个是否已定义的判断,在前面我们已经分析过了,这里不再复述。
8-9行定义一个新目录变量,这样就可以更方面的包含目录或文件了。
第8行的dvwaPhpIdsVersionGet()函数在16行定义,返回PhpIds的版本号。
第12行的set_include_path表示包含文件路径,这样做的目的是包含文件的时候可以省略文件路径,直接使用文件名。
第14行又包含一个新的文件,这个文件是在set_include_path的基础上包含的。这里我就不继续分析下去了,因为越分析文件会更多。
下面是几个函数
我们来第一个函数
- // PHPIDS Log parsing function
- function dvwaReadIdsLog() {
- $file_array = file(DVWA_WEB_PAGE_TO_PHPIDS_LOG);
- $data = '';
- foreach ($file_array as $line_number => $line){
- $line = explode(",", $line);
- $line = str_replace("\""," ",$line);
- $datetime = $line[1];
- $vulnerability = $line[3];
- $variable = urldecode($line[4]);
- $request = urldecode($line[5]);
- $ip = $line[6];
- $data .= "<div id=\"idslog\"><b>Date/Time:</b> " . $datetime . "<br /><b>Vulnerability:</b> " . $vulnerability . "<br /><b>Request:</b> " . htmlspecialchars($request) . "<br /><b>Variable:</b> " . htmlspecialchars($variable) . "<br /><b>IP:</b> " . $ip . "</div>";
- }
- return $data;
- }
PHPIDS 日志解析函数
第二个函数
- // Clear PHPIDS log
- function dvwaClearIdsLog() {
- if (isset($_GET['clear_log'])) {
- $fp = fopen(DVWA_WEB_PAGE_TO_PHPIDS_LOG, w);
- fclose($fp);
- dvwaMessagePush( "PHPIDS log cleared" );
- dvwaPageReload();
- }
- }
PHPIDS 日志清理
第三个函数
- // Main PHPIDS function
- function dvwaPhpIdsTrap() {
- try {
- $request = array(
- 'REQUEST' => $_REQUEST,
- 'GET' => $_GET,
- 'POST' => $_POST,
- 'COOKIE' => $_COOKIE
- );
- $init = IDS_Init::init( DVWA_WEB_PAGE_TO_PHPIDS.'lib/IDS/Config/Config.ini' );
- $init->config['General']['base_path'] = DVWA_WEB_PAGE_TO_PHPIDS.'lib/IDS/';
- $init->config['General']['use_base_path'] = true;
- $init->config['Caching']['caching'] = 'none';
- // 2. Initiate the PHPIDS and fetch the results
- $ids = new IDS_Monitor( $request, $init );
- $result = $ids->run();
- if (!$result->isEmpty()) {
- require_once 'IDS/Log/File.php';
- require_once 'IDS/Log/Composite.php';
- $compositeLog = new IDS_Log_Composite();
- $compositeLog->addLogger(IDS_Log_File::getInstance($init));
- $compositeLog->execute($result);
- echo 'Hacking attempt detected and logged.';
- //echo $result;
- exit;
- }
- } catch (Exception $e) {
- /*
- * something went terribly wrong - maybe the
- * filter rules weren't found?
- */
- printf(
- 'An error occured: %s',
- $e->getMessage()
- );
- }
- }
PHPIDS 主函数
这个文件就分析完了,我们回到dvwaPage.inc.php。
dvwa 源码分析(四) --- dvwaPhpIds.inc.php分析的更多相关文章
- dvwa 源码分析(二) --- dvwaPage.inc.php分析
在setup.php中,包含了这个文件,所以这里分析这个文件. <?php if( !defined( 'DVWA_WEB_PAGE_TO_ROOT' ) ) { define( 'DVWA S ...
- Mybatis源码解析(四) —— SqlSession是如何实现数据库操作的?
Mybatis源码解析(四) -- SqlSession是如何实现数据库操作的? 如果拿一次数据库请求操作做比喻,那么前面3篇文章就是在做请求准备,真正执行操作的是本篇文章要讲述的内容.正如标题一 ...
- Sentinel源码解析四(流控策略和流控效果)
引言 在分析Sentinel的上一篇文章中,我们知道了它是基于滑动窗口做的流量统计,那么在当我们能够根据流量统计算法拿到流量的实时数据后,下一步要做的事情自然就是基于这些数据做流控.在介绍Sentin ...
- 40 网络相关函数(八)——live555源码阅读(四)网络
40 网络相关函数(八)——live555源码阅读(四)网络 40 网络相关函数(八)——live555源码阅读(四)网络 简介 15)writeSocket向套接口写数据 TTL的概念 函数send ...
- 39 网络相关函数(七)——live555源码阅读(四)网络
39 网络相关函数(七)——live555源码阅读(四)网络 39 网络相关函数(七)——live555源码阅读(四)网络 简介 14)readSocket从套接口读取数据 recv/recvfrom ...
- 38 网络相关函数(六)——live555源码阅读(四)网络
38 网络相关函数(六)——live555源码阅读(四)网络 38 网络相关函数(六)——live555源码阅读(四)网络 简介 12)makeSocketNonBlocking和makeSocket ...
- 37 网络相关函数(五)——live555源码阅读(四)网络
37 网络相关函数(五)——live555源码阅读(四)网络 37 网络相关函数(五)——live555源码阅读(四)网络 简介 10)MAKE_SOCKADDR_IN构建sockaddr_in结构体 ...
- 36 网络相关函数(四)——live555源码阅读(四)网络
36 网络相关函数(四)——live555源码阅读(四)网络 36 网络相关函数(四)——live555源码阅读(四)网络 简介 7)createSocket创建socket方法 8)closeSoc ...
- 35 网络相关函数(三)——live555源码阅读(四)网络
35 网络相关函数(三)——live555源码阅读(四)网络 35 网络相关函数(三)——live555源码阅读(四)网络 简介 5)NoReuse不重用地址类 6)initializeWinsock ...
随机推荐
- 腾讯云-NGINX搭建静态网站
搭建静态网站 搭建Http静态服务器环境 任务时间:15min ~ 30min 搭建静态网站,首先需要部署环境.下面的步骤,将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务. 00. ...
- 【微信小程序】:客服消息教程
1.本教程完全链接W3Cschool的教程,已经讲的非常清晰和透彻. 2.链接:https://www.w3cschool.cn/weixinapp/weixinapp-api-custommsg-c ...
- mybatis&Hibernate区别
mybatis是一个不完全的orm框架,因为mybatis需要程序员自己写大量的sql,需要程序员对sql的掌握比较高,不过mybatis可以通过xml文件可以灵活的配置要运行的sql语句,将sql与 ...
- HDUOJ-----2175取(m堆)石子游戏
取(m堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- UE 技巧
http://cache.baiducontent.com/c?m=9d78d513d98416b8599d830e7c01a7170e2585744ddcc4523f8a9c12d522195646 ...
- ubuntu 安装php-redis
sudo apt-get install redis-server 测试redis是否安装成功:注意:要开启redisredis-cliset test helloOKget test"ba ...
- CentOS 6.7下配置 yum 安装 Nginx。
第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vim nginx.repo 填写如下内容: [nginx]nam ...
- C# -- 等待异步操作执行完成的方式 C# -- 使用委托 delegate 执行异步操作 JavaScript -- 原型:prototype的使用 DBHelper类连接数据库 MVC View中获取action、controller、area名称、参数
C# -- 等待异步操作执行完成的方式 C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: class Program { static void Main(string[] ...
- Linux常见的进程调度算法
进程调度:在操作系统中调度是指一种资源分配. 调度算法是指: 根据系统的资源分配策略所规定的资源分配算法. 操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源 ...
- 【JUnit4.10源码分析】3.4 Description与測试树
Description使用组合模式描写叙述一个測试树.组合模式中全部元素都是Composite对象. Description有成员变量private final ArrayList<Descri ...