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

ops/2024/10/19 3:26:05/

目录

[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


http://www.ppmy.cn/ops/38888.html

相关文章

Java | Leetcode Java题解之第78题子集

题目&#xff1a; 题解&#xff1a; class Solution {List<Integer> t new ArrayList<Integer>();List<List<Integer>> ans new ArrayList<List<Integer>>();public List<List<Integer>> subsets(int[] nums) {dfs(0, nums…

C++笔试训练

i和i区别 #define _CRT_SECURE_NO_WARNINGS //i和i的区别 #include <stdio.h> int main(void) {int i 8;printf("%d\n", i);//9printf("%d\n", --i);//8printf("%d\n", i);//8printf("%d\n", i--);//9printf("%d\n"…

Redis 实战之客户端属性

客户端属性 套接字描述符名字标志输入缓冲区命令与命令参数命令的实现函数输出缓冲区身份验证时间总结 客户端状态包含的属性可以分为两类&#xff1a; 一类是比较通用的属性&#xff0c; 这些属性很少与特定功能相关&#xff0c; 无论客户端执行的是什么工作&#xff0c; 它们…

如何编写可读性高的嵌入式 C 语言代码?|2024网盘分享6.89G嵌入式-物联网 嵌入式新手C语言必学教程

目录 面向对象的 C 基础知识 结构体 函数指针 将函数指针作为结构体的成员 面向对象语言的特性 语言层次的面向对象 C 语言的面向对象 定义接口 接口的实现 测试 测试代码 结束语 面向对象的 C 面向对象的语言更接近人的思维方式&#xff0c;而且在很大程度上降低了…

NLP(12)--语言模型

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 应用-语音识别&#xff1a; 声音的本质是一种波&#xff0c;将波按时间段切分为很多帧&#xff0c;之后进行声学特征提取&#xff0c;每一帧转化为向量。 应用-输入法&#xff1a; 按照语言模型给出概率最高的候选词 语言…

Docker使用进阶篇

文章目录 1 前言2 使用Docker安装常用镜像示例2.1 Docker安装RabbitMQ2.2 Docker安装Nacos2.3 Docker安装xxl-job&#xff08;推荐该方式构建&#xff09;2.4 Docker安装redis2.5 Docker安装mysql 3 Docker自定义镜像3.1 Dockerfile的基本结构3.2 Dockerfile指令3.3 自定义JDK镜…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-2)word2vec模型

一句话归纳&#xff1a; 1&#xff09;CBOW模型&#xff1a; 2c个向量是相加&#xff0c;而不是拼接。 2&#xff09;CBOW模型中的哈夫曼树&#xff1a; 从root开始&#xff0c;向左为1&#xff0c;向右为0。叶子结点对应词有中的一个词。每个词对应唯一的编码。词编码不等长。…

Spring JdbcTemplate使用临时表+事务会话管理实现数据新增、查询及自动清除功能

需求描述&#xff1a; 由于某些情况下当查询过滤参数过大时&#xff0c;执行sql由于参数过大而报错&#xff0c;此时 需要使用临时表的方式&#xff0c;即 当参数超过某个阀值&#xff08;如 1000&#xff0c;可调整&#xff09;新增一张临时表&#xff0c;将原表 与 该临时表进…