CTF-Web习题:[GXYCTF2019]Ping Ping Ping

news2024/11/16 22:47:47

题目链接:[GXYCTF2019]Ping Ping Ping

解题思路

访问靶机,得到如下页面,类似于URL参数
在这里插入图片描述
尝试用HackBar构造url传输过去看看
在这里插入图片描述
发现返回了ping命令的执行结果,可以猜测php脚本命令是ping -c 4 $ip,暂时不知道执行的函数时system()还是exec(),但是大概能想到这题有命令执行漏洞,那么我们就测试以下:构建url?ip=111;ls,看看有没有目录文件返回:
在这里插入图片描述
发现ls命令执行成功,那么可以确定是命令执行漏洞,且项目路径下还发现有flag.php,我们尝试构造url来cat一下:
在这里插入图片描述
发现回复"fxck your space",证明是有判断过滤了空格,空格的作用一般是分隔关键字,这时候就试试应对空格过滤的办法(想办法识别关键字),尝试了\${IFS}、%09、%0a都不行,最后发现\${IFS}\$9可以绕过过滤:
在这里插入图片描述
但是又发现flag字符串被过滤了,那试试访问index.php页面,发现可以访问,也就是说没有被index.php没有被过滤
在这里插入图片描述
这时候我们可以看到index.php的内容就是正则过滤规则,但是没有显示完全,因为php代码是包裹在<?php?>块中,HTML不认识该标签,所以会把它们当作注释,以上页面代码中缺失的部分按F12查看源码就可以发现,index.php的源码如下:

<?php
//检查GET参数’ip‘是否存在
if(isset($_GET['ip'])){
	$ip = $_GET['ip'];
	if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $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);
}
?>

我们可以从代码里发现flag的过滤规则,任何含义"flag"的字符串都会被过滤,那么我们如下以往的字符绕过技术都将不起作用:

1.fl\ag:使用反斜杠‘\’逃逸字符
2.fla"g:双引号中断字符
3.fla""g:重复双引号混淆过滤器
4.$a=fl;$b=ag;$a$b:字符拼接
5:fla?:通配符
6.fla:通配符
7:fla[a-z]:通配符

在本题的规律规则下,以上绕过均失效,这块不行,再利用其他方法,如printf+16进制和Base64编码解码绕过,发现base64可行:

?ip=111;cat$IFS$9`echo$IFS$9ZmxhZy5waHA=|base64$IFS$9-d`
解析:
1、$IFS$9:环境变量,代表内部字段分隔符,'$IFS$9'实际上就是在命令中插入一个制表符,以绕过过滤器分隔命令
2、`echo$IFS$9ZmxhZy5waHA=|base64$IFS$9-d`:
(1)反引号'`'用于表示首先执行反引号中的命令,并将其输出作为外部命令的一部分,再执行外部命令。
(2)'echo'用于输出字符串
(3)ZmxhZy5waHA=是flag.php的base64编码
(4)'|'管道符用于将前一个命令的输出作为下一个命令的输入
(5)base64 -d 解码一个base64字符串
3、最终命令执行效果:ping -c 4 111;cat flag.php

将构建好的url利用HackBar发送,发现并没有显示
在这里插入图片描述
这里要知道,php代码会被HTML解析成注释,所以查看源码即可发现flag。

知识补充

正则表达式

一、"/.*f.*l.*a.*g.*/"
通过匹配字符之间可以包含任意字符的形式,来检查是否有类似于’flag’的字符串

  1. '.*':这个部分匹配任意数量的任意字符(除了换行符),'.*'的意思是”零个或多个任意字符“
  2. 首尾的'/':正则表达式分隔符,用于表示开始和结束。但也可以用’#‘、’~'来作为分隔符

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

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

相关文章

JavaScript(15)——操作表单元素属性和自定义属性

操作表单元素属性 表单很多情况&#xff0c;也需要修改属性&#xff0c;比如点击眼睛可以看到密码&#xff0c;本质是把表单类型转换为文本框正常的有属性有取值的&#xff0c;跟其他的标签属性没有任何区别 获取&#xff1a;DOM对象.属性名 设置&#xff1a;DOM对象.属性名…

【OpenCV C++20 学习笔记】操作图片

操作图片 概述图片的导入和保存对导入的图片的操作获取像素值Point类型和图片像素 内存管理和引用计数一些简便操作图片可视化更精确的类型转换 概述 在本专栏的第一篇文章中就介绍了一个用OpenCV处理图片的实例&#xff08;《图片处理基础》&#xff09;&#xff0c;这篇文章…

【LeetCode】141.环形链表、142. 环形链表 II(算法 + 图解)

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;数据结构 &#x1f4da;本系列文章为个人学…

基于PyCharm在Windows系统上远程连接Linux服务器中Docker容器进行Python项目开发与部署

文章目录 摘要项目结构项目开发项目上线参考文章 摘要 本文介绍了如何在Windows 10系统上使用PyCharm专业版2024.1&#xff0c;通过Docker容器在阿里云CentOS 7.9服务器上进行Python项目的开发和生产部署。文章详细阐述了项目结构的搭建、PyCharm的使用技巧、以及如何将开发项…

C#/WinFrom TCP通信+ 网线插拔检测+客服端异常掉线检测

Winfor Tcp通信(服务端) 今天给大家讲一下C# 关于Tcp 通信部分&#xff0c;这一块的教程网上一大堆&#xff0c;不过关于掉网&#xff0c;异常断开连接的这部分到是到是没有多少说明&#xff0c;有方法 不过基本上最多的两种方式&#xff08;1.设置一个超时时间&#xff0c;2.…

Python爬虫技术 第13节 HTML和CSS选择器

在爬虫技术中&#xff0c;解析和提取网页数据是核心部分。HTML 和 CSS 选择器被广泛用于定位网页中的特定元素。下面将详细介绍这些选择器如何在 Python 中使用&#xff0c;特别是在使用像 Beautiful Soup 或 Scrapy 这样的库时。 HTML 选择器 HTML 选择器基于 HTML 元素的属性…

Llama 3.1和xAI超集群加速AI军备竞赛

LLama 3.1 先来看看LLama 3.1 405B的效果&#xff0c;例如输入生成上海印象的四连图&#xff0c;然后一键再生成短视频&#xff0c;整体还是可圈可点。 从下面的各项基准而言&#xff0c;LLama3.1系列在同等量级中均有不俗的表现&#xff0c;尤其是405B已经和闭源的GPT-4o不分…

内网横向:PTHPTKPTT

1.PHT横向 2.PTK横向 3.PTT横向 1.PHT横向&#xff1a; 条件&#xff1a;有管理员的NTLM Hash 并且目标机器开 放445端口 在工作组环境中&#xff1a; Windows Vista 之前的机器&#xff0c;可以使用本地管理员组内用户进行攻击。 WindowsVista 之后的机器&#xff0c;只能是…

【iOS】—— Block总结

Block总结 1. Block的使用规范2. __block修饰符__block修饰符的底层原理 3. Block的类型NSGlobalBlockNSStackBlockNSMallocBlock 4. Block的实现及本质初始化部分调用部分本质 5. Block的捕获与内存管理捕获变量捕获对象内存管理 6. 循环引用什么是循环引用循环引用解决方法1.…

抓包工具Charles

1、抓包的目的 遇到问题需要进行分析 发现bug需要定位 检查数据传输的安全性 接口测试时&#xff0c;开发给的需求文档不详细 在弱网环境下APP的测试 2、Charles是java语言编写的程序&#xff0c;本质是一个代理服务器&#xff0c;通过拦截服务端和客户端的http请求&#xff0…

谷粒商城实战笔记-63-商品服务-API-品牌管理-OSS获取服务端签名

文章目录 一&#xff0c;创建第三方服务模块thrid-party1&#xff0c;创建一个名为gulimall-third-party的模块2&#xff0c;nacos上创建third-party命名空间&#xff0c;用来管理这个服务的所有配置3&#xff0c;配置pom文件4&#xff0c;配置文件5&#xff0c;单元测试6&…

西瓜视频下载助手,支持批量下载视频!

我们每天都在接触海量的视频内容&#xff0c;但想要保存自己喜爱的视频却常常受限于平台的各种限制。因此&#xff0c;今天给大家带来一个超级实用的神器——西瓜视频下载助手。 西瓜视频下载助手&#xff08;电脑&#xff09; 工具支持西瓜视频的下载和今日头条的视频下载&a…

kafka详解及应用场景介绍

Kafka架构 Kafka架构&#xff0c;由多个组件组成&#xff0c;如下图所示&#xff1a; 主要会包含&#xff1a;Topic、生产者、消费者、消费组等组件。 服务代理&#xff08;Broker&#xff09; Broker是Kafka集群中的一个节点&#xff0c;每个节点都是一个独立的Kafka服务器…

如何使用EXCEL访问WinCC中的实时数据实现报表

如果项目已经做好了&#xff0c;不想改动现有项目。那么可以使用 EXCEL 通过 OPC 方式访问 WinCC 项目的数据。预先定义好 EXCEL 表格样式&#xff0c;通过以下方式实现。通过以下步骤打开 EXCEL 中的 VB 编辑器 引用 WinCC 提供的 OPC 客户端 Control 控件: Siemens OPC DAAut…

Godot游戏制作 04平台设计

新建创景&#xff0c;添加AnimatableBody2D节点。 添加Sprite2D节点 拖动图片 剪裁图片&#xff0c;吸附模式&#xff1a;像素吸附 添加CollisionShape2D&#xff0c;设置实际形状为矩形 重命名AnimatableBody2D节点为Platform&#xff0c;保存场景&#xff0c;拖动platform场景…

VirtualBox 安装Centos 7 避坑指南 SSH连不上 镜像失效 静态网络配置等

背景 几乎每次安装Centos 7 时&#xff0c;都会遇到各种各样的问题&#xff0c;毕竟每次安装动辄就是半年几年&#xff0c;几乎都是在换工作时&#xff0c;有了新机器才会倒腾一次&#xff0c;时间久远&#xff0c;就会忘记一些细节&#xff0c;这次整理一下&#xff0c;避免以…

数字图像处理笔记(三) ---- 傅里叶变换的基本原理

系列文章目录 数字图像处理笔记&#xff08;一&#xff09;---- 图像数字化与显示 数字图像处理笔记&#xff08;二&#xff09;---- 像素加图像统计特征 数字图像处理笔记&#xff08;三) ---- 傅里叶变换的基本原理 文章目录 系列文章目录前言一、傅里叶变换二、离散傅里叶变…

Vue3与Element-plus配合 直接修改表格中的一项数据——控制输入框的显示与隐藏

利用控制与隐藏输入框,直接修改表格中的每一项数据。 <!-- 表格模块 --> <div><el-table :data"tablelist" style"width: 100%"><el-table-column align"center" prop"deposit" label"接单押金">&l…

【动态规划】力扣.213. 打家劫舍 II

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一…

自动驾驶汽车普及之路

全球范围内自动驾驶汽车的普及正在加速。英国最近通过了 自动驾驶汽车法案 以便在未来几年内实现全自动驾驶和部分自动驾驶汽车安全融入社会。 更多自动驾驶汽车 目前&#xff0c;中国是世界上测试自动驾驶出租车最多的国家。而在美国&#xff0c;各大城市已将“自动驾驶出租车…