WeChall_PHP-Local File Inclusion(LFI)
PHP - Local File Inclusion(LFI)
题目:
中文翻译如下:
核心代码:
$filename = 'pages/'.(isset($_GET["file"])?$_GET["file"]:"welcome").'.html';
include $filename;
代码详解:
- 当要 判断一个变量是否已经声明的时候 可以使用 isset 函数
- 判断表达式是否成立?表达式1:表达式2(三目运算符)
如果条件成立,执行表达式1,否则执行表达式2 - include:运行指定文件
从以上代码中看出,我们每次输入的文件名都会在最后加上.html,我们需要删除.html,在php<5.3.4版本之前,是存在00截断漏洞的,因此我们可以尝试使用00截断
%00截断介绍:
%00截断,例如1.php%00.txt,白名单在测试时会直接将这个带入,判断后缀名(因为此时1.php%00.txt是一个字符串整体),但执行该代码时,会自动截断%00后面的内容,只要记住会删除包括%00及后面的所有内容
解题过程:
首先题目提到,需要执行solution.php,那么我们直接访问试试看呢
(中文释义:您不能直接执行此脚本。请在up/index.php中使用LFI vuln包含它。)这是最简单的本地文件包含,这里不能直接在lfi目录下执行solution.php,需要使用到
../
,看到下方有文件包含,因此,我们先在题目中选择一个进去看看
如下图:
我们在url中再来试试下面的测试
http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=solution.php
(中文释义:
PHP警告(2):include(pages / solution.php.html):无法打开流:/ home / wechall / www / wc5 / www / challenge / training / php / lfi / up / index中没有这样的文件或目录 .php(54):eval()‘代码 行 1
PHP警告(2):include():无法在/ home / wechall / www / wc5 / www / challenge中打开’pages / solution.php.html’以包含(include_path =’。:/ usr / share / php’) /training/php/lfi/up/index.php(54):eval()'d代码 行 1)
- 看到这个显示up中没有中没有solution.php.html,猜想可能是html的问题,于是我们使用00截断
http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=solution.php%00
结果如下图:
- 这回是删除了,但是还是没有显示,于是我们返回上面几层目录看看
根据这个我们才看出,solution.php是在lfi目录下,因此,我们使用…/来访问(注:这里直接使用http://www.wechall.net/challenge/training/php/lfi/solution.php是不行的,他强制要求你使用本次文件包含) - 最后在http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=solution.php%00中重新构造url,构造时需要注意,solution.php在lfi目录下,但他代码在执行中会增加一个pages目录,本来我们使用下面这个构造就可以
http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=../solution.php%00
但执行后却是下图所示这时(注:它这时的目录为http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=pages/../solution.php%00
):
多了一个pages目录,我们需要到达lfi目录就需要使用两个../
,第一个../
跳出pages,第二个../
跳出up到达lfi。最后,构造的url为
www.wechall.net/challenge/training/php/lfi/up/index.php?file=../../solution.php%00
执行结果为:
成功完成LFI
WeChall_PHP-Local File Inclusion(LFI)相关推荐
- phpmyadmin 4.8.1 Remote File Inclusion(CVE-2018-12613)远程文件包含漏洞复现
漏洞描述 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞.该漏洞来自一部分代码,其中页面在phpMyAdmin中被重定向和加载,以及对白名单页面进行不正确的测试. 攻击者必须经过身份验证 ...
- 利用pearcmd.php本地文件包含(LFI)
利用pearcmd.php本地文件包含(LFI) 一.前言 pearcmd这个东西很久以前就已经复现过了,但是当时没有记录下来.这些天在整理之前比赛的wp的时候突然看见了pear的LFI到getshe ...
- Face Alignment at 3000 FPS via Regressing Local Binary Features(CVPR2014)读后感(first pass)
Face Alignment at 3000 FPS via Regressing Local Binary Features(CVPR2014)读后感(first pass) 这篇文章还是通过训练形 ...
- 【java笔记】File类(2):获取,判断,创建,删除,遍历目录方法
[java笔记]File类(1)概述,静态成员,构造方法_m0_52043808的博客-CSDN博客 获取功能方法: public String getAbsolutePath():返回此File的绝 ...
- 【java笔记】File类(1)概述,静态成员,构造方法
[java笔记]File类(2):常用方法_m0_52043808的博客-CSDN博客 java.io.File类: 文件和目录路径名的抽象表示. ●java把电脑中文件和文件夹(目录)封装为了一个F ...
- Android单元测试之Local unit tests(上)
Android单元测试之Local unit tests(上) 简介 本地单元测试 JUnit 4 添加依赖 测试例子 结论 Mockito 添加依赖 测试例子-mock基本使用 测试例子-mock与 ...
- jai-core-1.1.3.jar was cached in the local repository 问题解决(maven)
jai-core-1.1.3.jar was cached in the local repository 问题解决(maven) 问题: Failure to find javax.media:ja ...
- The Google File System(GFS)学习笔记
文章目录 引子 GFS的架构 读数据 写数据 流水线式的网络数据传输 记录追加 总结 引子 这篇文章是我学习极客时间徐文浩老师的<大数据经典论文解读>课程的学习笔记,大量的文字和图片来自专 ...
- 【java笔记】File类(3):FileFilter文件过滤器原理和使用
在File类中有两个和ListFiles重载的方法,方法的参数传递的是过滤器 java.io.FileFilter接口:用于File对象过滤器 抽象方法:boolean accept(File p ...
最新文章
- Gradle 修改 Maven 仓库地址(阿里镜像)
- 使用数值计算库Zero - VC6调用失败、cfree调用成功
- 2019年湘潭大学程序设计竞赛(重现赛)补题:H.Chat(分组背包)
- SpringMVC异常处理流程
- 更新wpscan_wpscan扫描工具
- Leetcode每日一题:1024.video-stitching(视频拼接)
- 说说程序员应该知道的术语(中文+英文)
- 在任务分解结果中,最底层的要素必须是实现项目目标的充分必要条件
- (转载)python-hwdata
- 编程简单的计算机,计算机简单编程示例
- 数字图像处理(冈萨雷斯)学习 第二章 数字图像基础
- turtle库绘图:绘制QQ所有表情
- Python如何实现图片显示
- 腾讯元老赚够钱后辞职,到安徽隐居,每天对着200亩地发呆
- 【项目】区块链在电商领域中的应用-草莓糖(CMT)(一)
- 局域网与城域网(1)(网工)
- linux下划线后面加变量名,Shell中下划线_与变量的关系
- 维度表,实体表,事实表之间的关系
- IDE,PATA,SATA,PCIe与SCSI接口
- 将两个有序顺序表合并为一个新的有序顺序表MergeList_Sq