[GXYCTF 2019]Ping Ping Ping(内联执行)、[鹤城杯 2021]EasyP ($_SERVER)

2024-05-10 19:12

本文主要是介绍[GXYCTF 2019]Ping Ping Ping(内联执行)、[鹤城杯 2021]EasyP ($_SERVER),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

[GXYCTF 2019]Ping Ping Ping

内联执行

[鹤城杯 2021]EasyP 

['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI']


RCE命令注入可参考:

RCE漏洞及其绕过——[SWPUCTF 2021 新生赛]easyrce、caidao、babyrce-CSDN博客 

[GXYCTF 2019]Ping Ping Ping

先输入127.0.0.1,ping成功了

ls查看根目录,发现flag.php与index.php文件

先cat查看一下index.php文件,用$IFS$9绕过空格

正则过滤了很多东西,包括.*f.*l.*a.*g.*

<?phpif(isset($_GET['ip'])){$ip = $_GET['ip'];if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){print_r($match);print($ip);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 "<pre>";print_r($a);}?>

内联执行

在linux系统中,反引号作为内联执行,输出查询结果的内容。

于是就可以使用cat$IFS$9`ls`  这个命令来输出ls里面的flag.php以及index.php中的内容。以得到flag。

[鹤城杯 2021]EasyP 

先学习一下:

['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI']

_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 三者区别-CSDN博客

1.$_SERVER['PHP_SELF']:获取当前执行脚本的文件名(相对于网站根目录的路径及 PHP 程序名称。)

2.$_SERVER['SCRIPT_NAME']:获取相对于网站根目录的路径及 PHP 程序文件名称。

3.$_SERVER['REQUEST_URI']:获取当前URL的 路径地址。

e.g 有URL:http://www.baidu.com/php/flag.php/flag?a=11111

        $_SERVER['PHP_SELF'] 得到:/php/flag.php/flag

        $_SERVER['SCRIPT_NAME'] 得到:/php/flag.php

        $_SERVER['REQUEST_URI'] 得到:/php/flag.php/flag?a=11111

POST传参了guess,并且(string)转换成了字符型

如果$guess等于$secret,回显一个名为$flag的变量的字符串(===强制类型)

1.  $_SERVER['REQUEST_URI']:获取当前URL的 路径地址

$secret,$flag都不知道是哪来的,所以这一串代码没有什么用... ...看下面就行。

正则过滤了包含的文件名utils.php,以及后面GTE传参的show_source

2.  basename():删除从最后一个斜杠之前的所有内容 

#输出4.txt
basename /1/2/3/4.txt

3. $_SERVER['PHP_SELF']:用于获取当前执行脚本的文件名,读取文件夹下的一个文件。

__FILE__是一个魔术常量,它包含当前脚本的完整路径和文件名。 

故 用show[sourceshow.source绕过正则show_source

由于basename() 显示最后一个斜杠 / 后的所有内容,所以用utils.php/啊(只要在后面加个非ASCII码的东西就可以绕过绕过

最终payload为:

utils.php/啊?show[source=1

这篇关于[GXYCTF 2019]Ping Ping Ping(内联执行)、[鹤城杯 2021]EasyP ($_SERVER)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/977312

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作