五,[GXYCTF2019]Ping Ping Ping1

embedded/2024/11/28 8:51:47/

a8ff0cc9da514e6d917d75ef83aff490.png

进入靶场,有提示

bcc3a46906f74f279541173adc5f27b8.png

我们在url试着输入本地IP,返回了ping命令

f9fc52a78ca44293af4f18d5aa62a2a5.png

既然要在url处传参,那就用postman,再输入ip=127.0.0.1 & ls,试着列出目录内容

9eafd59d6aff47c49d3ef6b310d84c82.png

ok,好像是个脏话,它过滤了空格

c6c1f886c46e4138811769419d8012b6.png

试着穿越又看到了脏话,它过滤了符号,一怒之下删掉了../   你猜怎么着,得到了两个文件名

9f4164308cea4beb9cbd6d75ce182be7.png

当然是flag.php更吸引人,但index.php肯定有存在的意义,用cat命令读取文件内容,且不要空格,符号,那就用$IFS$1试着代替空格

a8a097a4aa974160aa0d970c841621b2.png

 

26e85cdcba2b4b0cafe9958a2ff7e0e6.png

两个都尝试后发现flag被过滤了,我们去研究index.php

 

/?ip=
|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);die("fxck your symbol!");} else if(preg_match("/ /", $ip)){die("fxck your space!");} else if(preg_match("/bash/", $ip)){die("fxck your bash!");} else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){die("fxck your flag!");}$a = shell_exec("ping -c 4 ".$ip);echo "
"; print_r($a); } ?>
  1. IP地址的初步安全检查

    • 使用preg_match函数检查输入字符串$ip是否包含一系列特殊字符(如&/?*<, 空格,>'"\()[]{})。
    • 如果检测到这些特殊字符,输出匹配结果(1或0表示是否匹配),并终止脚本执行,显示错误信息"fxck your symbol!"。
  2. 检查空格

    • 如果$ip包含空格,则终止脚本执行,显示错误信息"fxck your space!"。
  3. 检查bash关键字

    • 如果$ip包含字符串"bash",则终止脚本执行,显示错误信息"fxck your bash!"。
  4. 检查flag关键字

    • 使用正则表达式检查$ip是否包含任意顺序的字符组成的"flag"(不区分大小写)。如果包含,则终止脚本执行,显示错误信息"fxck your flag!"。
  5. 执行ping命令

    • 如果通过了上述所有检查,使用shell_exec函数执行ping -c 4命令来测试$ip的连通性。-c 4参数表示发送4个ICMP ECHO_REQUEST消息。
    • 输出空行和ping命令的执行结果。

这里我就没办法了

看了博客后,将flag中的g用$a代替可以绕过

2b1426f61fda4e7d94b61f9b2712246b.png

或者内联执行

f49bf1171ed3462a8d9d9bf8da1ea73a.png

 


http://www.ppmy.cn/embedded/141150.html

相关文章

Linux 共享环境搭建

NFS网络文件系统 说明&#xff1a;这个主要是应用于Linux系统与Linux系统之间的通信。 服务端 步骤&#xff1a; 在被共享的系统中安装nfs服务 sudo apt-get install nfs-kernel-server注意&#xff1a;如果系统提示无法定位软件包&#xff0c;就需要更新软件源 sudo apt-g…

使用Cmake导入OpenCV库的大坑记录

CMakeLists.txt cmake_minimum_required(VERSION 3.20)set(OpenCV_DIR D:/Package/opencv4/opencv/mingw-build/install) #这里根据自己OpenCV位置设定find_package(OpenCV REQUIRED)project(PROJ1 CXX)add_executable(PROJ1 main.cpp)target_include_directories(PROJ1 PR…

常用指标采集 exporter

1. MySQL https://github.com/prometheus/mysqld_exporter可用性 表示MySQL实例是否已停机 mysql_up 表示数据库正常运行的时长&#xff0c;通常使用该指标配置告警&#xff0c;监控运行少于半小时的MySQL实例mysql_global_status_uptime 数据库连接 连接错误是数据库中的…

WPF——ICON按钮制作

前言 首先ICON按钮&#xff0c;即带图标按钮&#xff0c;即图标按钮。 图标按钮在开发时&#xff0c;主要是有两种方式来进行。一是在Button的Content内添加Image&#xff0c;然后设置Image的属性Source来实现&#xff0c;这种方式主要是简单易操作&#xff0c;对于初学者来说…

计算机网络基础回顾

网络有几层&#xff1f; OSI 模型 OSI&#xff08;开放系统互联&#xff09;模型由七层构成&#xff0c;分别是&#xff1a; 物理层 (Physical Layer)&#xff1a;负责传输原始比特流&#xff0c;处理物理连接和电气信号。 数据链路层 (Data Link Layer)&#xff1a;负责节点…

一文理解多模态大语言模型——上

作者&#xff1a;Sebastian Raschka 博士&#xff0c; 翻译&#xff1a;张晶&#xff0c;Linux Fundation APAC Open Source Evangelist 编者按&#xff1a;本文并不是逐字逐句翻译&#xff0c;而是以更有利于中文读者理解的目标&#xff0c;做了删减、重构和意译&#xff0c…

Linux系统之fuser命令的基本使用

Linux系统之fuser命令的基本使用 一、fuser命令介绍二、fuser命令使用帮助2.1 help帮助信息2.1 基本语法①通用选项②文件/设备相关选项③网络相关选项④进程操作选项⑤其他选项 三、fuser命令的基本使用3.1 查找挂载点的进程3.2 查看指定设备进程信息3.3 查找监听特定端口的进…

Maven高级篇

本篇主要讲解做项目过程中学习到一些关于maven使用的知识&#xff0c;主要包括分模块设计、继承&#xff0c;继承中的版本锁定&#xff0c;maven的聚合以及maven私服。 目录 一、分模块设计 二、继承 三、继承中的版本锁定 四、maven的聚合 五、maven私服 一、分模块设计…