[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

相关文章

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

C#如何优雅地取消进程的执行之Cancellation详解

《C#如何优雅地取消进程的执行之Cancellation详解》本文介绍了.NET框架中的取消协作模型,包括CancellationToken的使用、取消请求的发送和接收、以及如何处理取消事件... 目录概述与取消线程相关的类型代码举例操作取消vs对象取消监听并响应取消请求轮询监听通过回调注册进行监听使用Wa

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War

Oracle数据库执行计划的查看与分析技巧

《Oracle数据库执行计划的查看与分析技巧》在Oracle数据库中,执行计划能够帮助我们深入了解SQL语句在数据库内部的执行细节,进而优化查询性能、提升系统效率,执行计划是Oracle数据库优化器为... 目录一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 S

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 中原子性的原因