DVWA学习笔记--03--File Inclusion

0x00

第三个是文件包含漏洞

分为远程文件包含和本地文件包含两种

但是远程文件包含是需要开启allow_url_include()这个函数才行

0x01

low

在low下的全部源码

<?php

// The page we wish to display
$file = $_GET[ ‘page‘ ];

?>

想怎么包含怎么包含

如果包含的参数错了 则会报错 那么服务器的路径就给爆出来了(开了错误显示)

远程包含--

本地包含--

就没写别的文件  直接利用dvwa带的文件

如果不知道绝对路径 仅有相对路径也可以这样包含

0x02

medium

在medium下的全部源码

<?php

// The page we wish to display
$file = $_GET[ ‘page‘ ];

// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );
?>

可见medium下 增加了一个replace函数 将"http://", "https://","../", "..\""  都进行了一次过滤

这种replace一次过滤还是很简单的 双写绕过就好了

远程包含--

本地包含--

有绝对路径的

没有绝对路径的

0x03

high

在high下的全部源码

<?php
// The page we wish to display
$file = $_GET[ ‘page‘ ];

// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
    // This isn‘t the page we want!
    echo "ERROR: File not found!";
    exit;
}
?>

加了一个fnmatch()函数

一个匹配的函数

意思就是在参数不为include.php的时候 参数必须以file开头

因为题目给了三个本地文件嘛 file1.php file2.php file3.php

file-本地传输协议 主要用于访问本地计算机中的文件

file:///path 这个可以直接访问文件(file://也行)

所以把这个用上就能正好绕过这个防护

至于远程文件上传我没有找到什么好姿势

以后再看看其他的协议

0x03

impossible

在impossible下的全部源码

<?php

// The page we wish to display
$file = $_GET[ ‘page‘ ];

// Only allow include.php or file{1..3}.php
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {
    // This isn‘t the page we want!
    echo "ERROR: File not found!";
    exit;
}

?>

可见impossible下直接对传入的参数进行了一个名单匹配

关于 ‘!= ‘的绕过只想到md5加密后的0e可以绕过

没想到其他的绕过方法

而且就算绕过了也没法访问我们想要的路径

所以没办法了(姿势不够)

时间: 2024-10-12 22:59:25

DVWA学习笔记--03--File Inclusion的相关文章

C++ GUI Qt4学习笔记03

C++ GUI Qt4学习笔记03 qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QMainWindow可以创建一个窗口 图形用户界面(GUI)应用程序通常会使用很多的图片,最常见的为应用程序提供图片的方法是使用Qt的资源机制(resource mechanism) 使用Qt资源系统,必须创建一个资源文件,并且在识别该资源文件的.pro文件中添加一行代码. RESOURCES = spr

python学习笔记(03):函数

默认参数值:   只有在行参表末尾的哪些参数可以有默认参数值,即 def func(a, b=5 )#有效的 def func( a=5,b )#无效的 关键参数: #!/usr/bin/python # Filename: func_key.py def func(a, b=5, c=10): print 'a is', a, 'and b is', b, 'and c is', c func(3, 7) func(25, c=24) func(c=50, a=100) #输出: $ pyth

HTTP 学习笔记03

通用信息头 Cache-Control : no-cache(不缓存当前请求) [*] Connection:close(返回当前请求后立即断开)[*] Date:...(HTTP消息产生的时间) Pragma:no-cache (不缓存) [*] Trailer:Date(哪些能放到实体内容后的头字段) Transfer-Encoding:chunked (指定传输编码方式)[*] Upgrade:HTTP/2.0,SHTTP/1.3 (支持的版本) Via:HTTP/1.1 Proxy1,H

linux学习笔记 (fork && FILE && PC)

一. 下面的代码是对fork的测试 运行结果为: 可以看出,所有进程的pid 为 10604 ~ 10611  (共 8 个   2 ^ 3) 修改循环条件,让循环执行5次, 所有进程的pid 为 : 10637 ~ 10668 (共 32 个  2 ^ 5) 可以看出,循环执行n次,进程的数目为: 2 ^ n 个 二. FILE结构体: 首先定位: cd /usr/include 搜索: gerp 'FILE' stdio.h 搜索出了一大堆,但其中有一行代码:  typedef struct

mongodb 学习笔记 03 -- 查询表达式

mongodb 学习笔记 03 – 查询表达式 不等于,大于,小于 !=: db.stu.find({name:{$ne:'billvsme'}}) 名字不是'billvsme' > : db.stu.find({age:{$gt:18}}) 年纪大于18 < : db.stu.find({age:{$lt:18}}) 年纪小于18 >=: $gte <=: $lte in/not in/all $in :db.goods.find(stu_id:{$in:[93001,93002

Android自定义View学习笔记03

Android自定义View学习笔记03 预备知识 BitMap类 BitMap位图类,其中有一个嵌套类叫Bitmap.Config,内部有四个枚举值.这个类的作用是定义位图存储质量,即存储一个像素的位数,以及是否能显示透明.半透明颜色(Possible bitmap configurations. A bitmap configuration describes how pixels are stored. This affects the quality (color depth) as w

SWIFT学习笔记03

1.断言 let age = -3 assert(age >= 0, "A person's age cannot be less than zero") // 因为 age < 0,所以断言会触发 2.Swift赋值符(=)不返回值,以防止把想要判断相等运算符(==)的地方写成赋值符导致的错误.数值运算符(+,-,*,/,%等)会检测并不允许值溢出. 3.在对负数b求余时,b的符号会被忽略.这意味着 a % b 和 a % -b的结果是相同的,但-a是不一样的. 4.不同

HTML学习笔记03

HTML学习笔记03 一.HTML标题 HTML标题通过<h1>-<h6>等标签进行定义的,<h1>定义最大的标题,<h6>定义最小的标题. 二.HTML水平线 HTML水平线可以用<hr>标签. 三.HTML注释 HTML注释采用设置<!--注释-->进行注释. 四.HTML段落 HTML段落采用<p>标签,还可以使用<br>标签进行换行. 五.文本格式化 <b>定义粗体文本,<big>

【OpenGL 学习笔记03】点画多边形

1.点画多边形 //定义填充多边形的点画模式.mask为32 x 32 的位图指针,1画0不画,使用前必须启用多边形点画功能 void glPloygonStipple(const GLubyte* mask); //绘制一个矩形 void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2); 2.示例 #include <GL/glut.h> #include <stdlib.h> void display(void) { G

OGG学习笔记03

OGG学习笔记03-单向复制简单故障处理 环境:参考:OGG学习笔记02-单向复制配置实例实验目的:了解OGG简单故障的基本处理思路. 1. 故障现象故障现象:启动OGG源端的extract进程,data pump进程,一段时间后发现进程均被终止. GGSCI (oradb30) 1> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT ABENDED LPJY1 00:00:00