ctfshow(91,96,97)--PHP特性

Web91

源代码:

show_source(__FILE__);
include('flag.php');
$a=$_GET['cmd'];
if(preg_match('/^php$/im', $a)){if(preg_match('/^php$/i', $a)){echo 'hacker';}else{echo $flag;}
}
else{echo 'nonononono';
}Notice: Undefined index: cmd in /var/www/html/index.php on line 15
nonononono

审计

GET传参cmd,保存到变量a.
preg_match()函数查询变量a中的php字符串。

preg_match(str $pattern,str $var)
第一个参数是字符串类型的搜索模式。
第二个参数是输入的字符串。
该函数的作用就是匹配输入的字符串中的目标字符,且只匹配一次,匹配成功一次后将不再向后继续匹配。
如果成功匹配,则返回1;匹配失败,则返回0.

分析本题中的函数:

preg_match('/^php$/im', $a)

^php$表示匹配以php开头且以php结尾的字符串,其实就是匹配字符串php。
后面的i和m是模式修饰符,i表示匹配不区分大小写,m表示将含有换行符字符串视为多行,每行分别匹配。

思路

payload如下:

?cmd=p%0aphp //%0a是ASCII编码的换行符

第一个匹配函数preg_match('/^php$/im', $a),是多行模式匹配,第一行的p没有成功匹配,就会去第二行匹配,在第二行成功匹配到php,返回值为1.
第二个匹配函数preg_match('/^php$/i', $a),不是多行匹配,在第一行没有匹配到php,返回值0.
因此我们成功执行到 echo $flag; ,得到flag.

Web96

源代码:

highlight_file(__FILE__);if(isset($_GET['u'])){if($_GET['u']=='flag.php'){die("no no no");}else{highlight_file($_GET['u']);}
} 

审计

GET传参u。
条件判断,如果u==‘flag.php’,结束程序执行。如果结果为false,显示u所指向的界面的源代码。

思路

flag显然在flag.php文件中,但是我们不能直接传参?u=flag.php
这里介绍一个网页目录的知识点:

假如网页根目录下有flag.php文件,查找文件使用 /flag.php 这里的 / 就是指根目录
同理, ./代表的是当前目录, …/ 代表的是上一级目录

这里的flag.php是在当前目录下,所以可以令:

?u=./flag.php

得到flag.

还有如下解法:

?u=/var/www/html/flag.php  //使用了flag.php的绝对路径查询。一般情况下我们访问的网页目录都是/var/www/html目录
?u=php://filter/read=convert.base64-encode/resource=flag.php //使用php伪协议读取

Web97

源代码:

include("flag.php");
highlight_file(__FILE__);
if (isset($_POST['a']) and isset($_POST['b'])) {if ($_POST['a'] != $_POST['b']){if (md5($_POST['a']) === md5($_POST['b']))echo $flag;}else{print 'Wrong.';}
} 

审计

POST 传参a,b
第一处条件判断:a != b ,返回值为true进入下一步。
第二次条件判断:md5($_POST['a']) === md5($_POST['b']),返回值为true,得到flag。

MD5是一种加密方式
由于MD5不能加密数组,如果输入数组,将会返回NULL

所以我们可以POST a,b为数组:

a[]=1&b[]=2

这样a!=b,但是在md5加密后的结果都为null,成功得到flag。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/6432.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

QCustomPlot添加自定义的图例,实现隐藏、删除功能(二)

文章目录 QCustomPlot初识和基本效果图实现步骤:详细代码示例:实现原理和解释:使用方法:其他参考要实现一个支持复选框来控制曲线显示和隐藏的自定义 QCPLegend 类,可以通过继承 QCPLegend 并重写绘制和事件处理方法来实现,同时发出信号通知曲线的状态变更。 QCustomPl…

基于Java公益志愿捐赠管理系统设计与实现(源码+LW+调试+开题报告)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

【反射率】-- Lab 转换(excel)

系列文章目录 文章目录 系列文章目录前言一、CIE1.CIE 简介2.cie 1931标准色度匹配函数数据3.从CIE1931RGB到CIE1931 XYZ 二、Lab颜色空间的理解1.Lab色差公式怎么计算色差 三、D65光源Lab计算总结 前言 一、CIE 1.CIE 简介 CIE是由国际照明工程领域中光源制造、照明设计和光…

RRSIS: Referring Remote SensingImage Segmentation

Abstract 从遥感图像中定位目标在实际应用中有很大的用处。 参考图像分割的目的是分割出给定表达所指向的对象,这在自然图像中得到了广泛的研究。我们为这项任务创建了一个名为RefSegRS的新数据集,使我们能够评估不同的方法。我们提出了一种语言引导的跨…

【论文复现】自动化细胞核分割与特征分析

本文所涉及所有资源均在这里可获取。 作者主页: 七七的个人主页 文章收录专栏: 论文复现 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 自动化细胞核分割与特征分析 引言效果展示HoverNet概述HoverNet原理分析整…

长亭那个检测能力超强的 WAF,出免费版啦

告诉你们一个震撼人心的消息,那个检测能力超强的 WAF——长亭雷池,他推出免费社区版啦,体验地址见文末。 八年前我刚从学校毕业,在腾讯做安全研究,看到宇森在 BlackHat 上演讲的议题 《永别了,SQL 注入》 …

U-net网络实现细胞分割

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

Word首行空格不显示空格符号问题

Word段落首行空格设置指南 问题描述 在Word中编辑文档时,有时会遇到段落首行敲击空格键却不显示空格的问题。这通常与Word的自动更正设置有关。 解决方法 要解决此问题,需要调整Word的自动更正设置。具体步骤如下: 打开Word的"自动更…

Remix部署智能合约时报错:Gas estimation failed

1、在Remix部署智能合约时报错如下: 2、这时候即使发送交易,也无法部署 3、后来看到有人建议说调整一下GAS LIMIT,调整到30000000也不行,甚至当调整到6000000以后连交易记录都没有了 4、最终解决办法:Remix 和 Ganache…

我要精通前端-块级元素和行内元素深入学习笔记

真的发现前端天天增删改查&#xff0c;真的是问一些比较细节的知识&#xff0c;我真的懂么 1、块级元素间的margin会重叠&#xff0c; <div class"head"></div> <div class"content"></div>.head {margin: 5px;border: 10px sol…

C语言 循环高级

时间&#xff1a;2024.11.6 一、学习内容 1、无限循环 无限循环&#xff1a;循环永远停不下来 注意点&#xff1a;无限循环因为永远停不下来&#xff0c;所以下面不能再写其他的代码了 2、break 跳转控制语句&#xff1a; 在循环的过程中&#xff0c;跳到其他语句上执行 #…

62-Java-面试专题(1)__基础

62-Java-面试专题(1)__基础-- 笔记 笔记内容来源与黑马程序员教学视频 文章目录 62-Java-面试专题(1)__基础-- 笔记Java-面试专题(1)笔记中涉及资源&#xff1a; 一、二分查找①&#xff1a;代码实现1. 流程2. 代码实现3. 测试 ②&#xff1a;解决整数溢出&#xff08;方法一&…

解决CORS (跨源资源共享) 错误

问题引入 前端代码 <template><div id"hello-vue" class"demo">{{ message }}</div><el-button type"primary" click"handleClick">我是一个按钮</el-button></template><script setup>//加…

微信小程序 uniapp网络记账设计个人理财系统

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 aa账簿 (自动编号、用户id、用户账号、备注、登记时间、消费类型、创建时间、消费金额)&#xff1b; 配置文件 (自动编…

【SQL Server】华中农业大学空间数据库实验报告 实验一 数据库

实验目的 熟悉了解掌握SQL Server软件的基本操作与使用方法&#xff0c;认识界面&#xff0c;了解其两个基本操作系统文件&#xff0c;并能熟练区分与应用交互式与T-SQL式两种方法在SQL Server中如何进行操作&#xff1b;学习有关数据库的基本操作&#xff0c;包括&#xff1a…

大腾智能3D一览通携手飞书,实现高效设计协同

设计生产作为制造业的核心环节&#xff0c;其效率与协同性直接关系到企业的市场竞争力和响应速度。 在设计部门内部&#xff0c;虽然可以直接发送3D格式的文件进行沟通和评审&#xff0c;但当涉及到跨部门甚至是跨企业的协作时&#xff0c;情况就变得复杂。通常需要大量的多角…

Java项目实战II基于Spring Boot的药店管理系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着医疗行业的快速发展和人们对健康需…

qt QHeaderView详解

1、概述 QHeaderView 是 Qt 框架中的一个类&#xff0c;它通常作为 QTableView、QTreeView 等视图类的一部分&#xff0c;用于显示和管理列的标题&#xff08;对于水平头&#xff09;或行的标题&#xff08;对于垂直头&#xff09;。QHeaderView 提供了对这些标题的排序、筛选…

【Android】使用productFlavors构建多个变体

项目需求 在一个设备上安装两个一样的程序app 需求解决 我们知道每一个app都有一个包名的&#xff0c;如果一个app在Android设备上安装之后&#xff0c;再安装这个app的话会进行覆盖安装&#xff0c;因为他们两个的包名是一样的&#xff0c;默认是一个app。 但是我们现在需…

AI笔筒操作说明及应用场景

AI笔筒由来&#xff1a; 在快节奏的现代办公环境中&#xff0c;我们一直在寻找既能提升效率、增添便利&#xff0c;又能融入企业文化、展现个人品味的桌面伙伴。为此&#xff0c;我们特推出专为追求卓越、注重细节的您设计的AI笔筒礼品版&#xff0c;它集高科技与实用性于一身…