[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

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

red5-server源码

red5-server源码:https://github.com/Red5/red5-server

Lua 脚本在 Redis 中执行时的原子性以及与redis的事务的区别

在 Redis 中,Lua 脚本具有原子性是因为 Redis 保证在执行脚本时,脚本中的所有操作都会被当作一个不可分割的整体。具体来说,Redis 使用单线程的执行模型来处理命令,因此当 Lua 脚本在 Redis 中执行时,不会有其他命令打断脚本的执行过程。脚本中的所有操作都将连续执行,直到脚本执行完成后,Redis 才会继续处理其他客户端的请求。 Lua 脚本在 Redis 中原子性的原因

Smarty模板执行原理

为了实现程序的业务逻辑和内容表现页面的分离从而提高开发速度,php 引入了模板引擎的概念,php 模板引擎里面最流行的可以说是smarty了,smarty因其功能强大而且速度快而被广大php web开发者所认可。本文将记录一下smarty模板引擎的工作执行原理,算是加深一下理解。 其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者

(function() {})();只执行一次

测试例子: var xx = (function() {     (function() { alert(9) })(); alert(10)     return "yyyy";  })(); 调用: alert(xx); 在调用的时候,你会发现只弹出"yyyy"信息,并不见弹出"10"的信息!这也就是说,这个匿名函数只在立即调用的时候执行一次,这时它已经赋予了给xx变量,也就是只是

Java程序到CPU上执行 的步骤

相信很多的小伙伴在最初学习编程的时候会容易产生一个疑惑❓,那就是编写的Java代码究竟是怎么一步一步到CPU上去执行的呢?CPU又是如何执行的呢?今天跟随小编的脚步去化解开这个疑惑❓。 在学习这个过程之前,我们需要先讲解一些与本内容相关的知识点 指令 指令是指导CPU运行的命令,主要由操作码+被操作数组成。 其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控