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

[ctfshow web入门] web29

前置知识

eval: 把字符串按照 PHP 代码来执行,例如eval(“echo 1;”);这个函数拥有回显
system:使php程序执行系统命令,例如,system(“ls”);就是查看当前目录,这个拥有回显
preg_match:查找字符串是否匹配一个正则表达式。参数1是正则表达式,参数2是字符串,其他可选参数请自行学习

linux基础命令:

  • ls:展示当前目录下的所有文件
  • cat:输出当前文件的所有内容
  • tac:从最后一行开始逐行向上遍历输出当前文件的所有内容

信息收集

这里学习php不是一蹴而就的,我刚开始学习的时候也是直接搭建了php的网站,把题目复制到本地,然后自己调试,以此来学习php的函数。我希望读者也能如我一样有一个自己的php网站,用于学习这些php函数代码。

这里的preg_match("/flag/i", $c)表示变量$c是否存在flag这个子字符串,最后的/表示需要遵循的匹配规则,i是大小写忽略
所以这句代码的意思是,$c里是否有flag,大小写忽略,例如fLAg也能正确匹配
而取反后,我们的提交的参数c不能包含flag字样
在这里插入图片描述

解题

这里仅提供一些解题的思路,起到抛砖引玉的作用,我不可能列举出所有的方法,想到啥就写啥了。

这里我们使用system(“ls”);查看当前目录,是否存在我们想要的flag
在这里插入图片描述

方法1

接下来,我们本应该system("cat flag.php"); 即可,但flag被过滤了,我们的输入中有flag就不会执行eval。想要绕过flag非常简单,只需要tac fla*就可以了

为什么不用cat而是tac呢,因为cat获取了完整的php内容,包括<?php ... ?>和注释,这会被eval()当做代码解析,这不是我们希望看到的,我们希望获得的就是php的源码。
在这里插入图片描述

方法2

c=system("cp fla* a.txt");
将flag.php复制到a.txt
在这里插入图片描述

方法3

我们可以给system传变量,这样$c里没有flag,而我们在其他变量里传入flag.php就能完美绕过它的限制
在这里插入图片描述

web28    目录    web30

http://www.dtcms.com/a/122646.html

相关文章:

  • 基于FreeRTOS和LVGL的多功能低功耗智能手表(硬件篇)
  • 微服务篇——SpringCloud
  • 【Ai/Agent】Windows11中安装CrewAI过程中的错误解决记录
  • Python如何用科技点亮触感世界——智能盲文翻译器开发全解析
  • SQL语句
  • 论文阅读笔记:Adaptive Multi-Modal Cross-Entropy Loss for Stereo Matching
  • 封装uniapp request promise化
  • 音视频生命探测仪,救援现场的“视听先锋”|鼎跃安全
  • 我们如何控制调度 C、C++ 中的线程执行?
  • HTTP 压力测试工具autocannon(AI)
  • 琴键上的强化学习:让机器人在真实世界里弹钢琴!
  • Spring如何实现资源文件的加载
  • 网络安全之-信息收集
  • 国内协作机器手焊接领域领军人物分析
  • MCP 实战系列(Day 2)- 动手搓个文件系统 MCP 服务器
  • Linux系统管理与编程12: FTP服务配置
  • 《DataX 安装与简单使用指南》
  • 计算机视觉中的基于网格的卷绕算法全解析
  • Ansible(6)——管理变量
  • TDengine 数据模型设计:多列模式与单列模式对比(一)
  • UE5 matcap学习笔记
  • 单片机领域中哈希表
  • 基于 SpringBoot音乐网站与分享平台
  • 设计模式-命令模式详解
  • 大数据学习(104)-clickhouse与hdfs
  • Python web程序在服务器上面部署详细步骤
  • Java延迟队列
  • 铼赛智能Edge mini斩获2025法国设计大奖 | 重新定义数字化齿科美学
  • 深入解析 C++ 设计模式:原理、实现与应用
  • YOLOv12即插即用--CPAM