当前位置: 首页 > news >正文

[WeChall] PHP 0817 (PHP, Exploit) 解决和原理

题目

I have written another include system for my dynamic webpages, but it seems to be vulnerable to LFI.
Here is the code:

<?php
if (isset($_GET['which']))
{
        $which = $_GET['which'];
        switch ($which)
        {
        case 0:
        case 1:
        case 2:
                require_once $which.'.php';
                break;
        default:
                echo GWF_HTML::error('PHP-0817', 'Hacker NoNoNo!', false);
                break;
        }
}
?>

Your mission is to include solution.php.

分析

任务目标是包含solution.php文件。

根据官网PHP: switch - Manual的介绍,可以看到:

Note:

注意 switch/case 作的是松散比较。

当一个非数字开头的字符串与数字0进行==比较时,结果总是true.因此可以直接提交solution作为which变量的值,"solution"相当于0,必然会执行require_once命令。

更多知识可以参考字符串与数字0比较要注意

答案

因此,答案也就出来了。浏览器访问下面链接即可。

http://www.wechall.net/challenge/php0817/index.php?which=solution

相关文章:

  • 禁用笔记本自带键盘
  • [WeChall] Training: PHP LFI (Exploit, PHP,Tra..
  • Ubuntu18.04 用Tweaks 调整标题栏的点击行为
  • 解决 Ubuntu下 谷歌浏览器 不保存自动填充密码
  • 解决 have unmet dependencies: youdao-dict :
  • 解决VMware 小度wifi 驱动报错问题 Driver error
  • 对 eval(‘new Image().src=....ment.cookie) 的理解
  • 在 VMware 虚拟机中 安装 Windows7 精简版系统
  • 解决 Ubuntu cherry键盘 三键同时按切换大写的问题
  • Python3 解决1元钱一瓶汽水,喝完后两个空瓶换一瓶
  • Python3 找出1000以内的所有完数 简单解决方法
  • Python 补充calcSn()函数,求Sn=1-3+5-7+ 9-11
  • python3 题目:打印如下九九乘法表 需要限制格式
  • Python3 古典问题: 有一对兔子,从出生后第3个月
  • Python3 判断字符串是否是回文 用列表实现的方法
  • Google 是如何开发 Web 框架的
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Elasticsearch 参考指南(升级前重新索引)
  • gf框架之分页模块(五) - 自定义分页
  • Java小白进阶笔记(3)-初级面向对象
  • JS变量作用域
  • php的插入排序,通过双层for循环
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • vue脚手架vue-cli
  • 分享几个不错的工具
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前端工程化(Gulp、Webpack)-webpack
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 应用生命周期终极 DevOps 工具包
  • 优化 Vue 项目编译文件大小
  • 正则与JS中的正则
  • k8s使用glusterfs实现动态持久化存储
  • Spring第一个helloWorld
  • #大学#套接字
  • $GOPATH/go.mod exists but should not goland
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (办公)springboot配置aop处理请求.
  • (多级缓存)多级缓存
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (六)激光线扫描-三维重建
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三)elasticsearch 源码之启动流程分析
  • (转)EXC_BREAKPOINT僵尸错误
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .FileZilla的使用和主动模式被动模式介绍
  • .java 9 找不到符号_java找不到符号
  • .Net Core 中间件验签
  • .NET 中创建支持集合初始化器的类型
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .net反编译工具