ctfshow——54命令执行,需要严格的过滤

本文介绍了一种在命令执行环境中绕过过滤的技术,利用特殊字符和命令替代实现目标。通过实例演示了如何使用如uniq、xxd等命令,并讨论了空格绕过的多种方法。

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

命令执行,需要严格的过滤

在这里插入图片描述了解一个正则表达式的小知识

.* 代表匹配0到无数个字符

我们通过读代码得知它过滤了很多内容 flag cat等等
那么我们就只好选择用?来代替我们要输入的内容的方式/或者用它没有匹配的方法,比如:

  1. uniq:用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
  2. xxd:命令转换二进制文件为十六进制文件
  3. rev:翻转读文件

来输入。绕过空格的方法:

  • %09 Tab键的URL编码
  • $IFS$9 $IFS是内部字段分隔符的缩写
  • ${IFS}
  • < 重定向符号

那么我们用?c=rev${IFS}fla?.php来试一下
在这里插入图片描述
在这里插入图片描述成功拿到flag
最后我们再将他逆置过来即可
在这里插入图片描述

我们也可以用一种不太精确的方式,即?代替被过滤的内容来达到我们的目的
在这里插入图片描述

/?c=/???/c?t${IFS}????????

即/?c=/bin/cat flag.php
在这里插入图片描述

### CTFShow Web254 挑战赛题解法 #### SQL 注入漏洞利用 在处理SQL注入时,通过特定参数的操纵可以触发数据库错误信息泄露。对于本案例中的`refer`注入/报错注入,在输入特殊字符或语句结构后能够使应用程序返回详细的数据库错误消息[^1]。 ```sql ' OR '1'='1 ``` 这种类型的攻击通常用于获取表名、列名以及其他敏感数据的信息。当成功执行上述查询之后,可能会暴露更多关于内部架构的内容,从而为进一步探索提供线索。 #### 正则表达式替换函数的安全隐患 针对PHP环境中使用的 `preg_replace()` 函数带有 `/e` 修饰符的情况,该功能允许将匹配到的结果作为 PHP 代码来评估并执行。如果用户提交的数据未经严格过滤就被传递给此方法,则可能导致远程命令执行的风险。例如: ```php <?php // 不安全的做法 $input = $_GET['data']; echo preg_replace('/(.*)/e', $input, ''); ?> ``` 在这种情况下,攻击者可以通过精心构造请求参数来实现任意代码执行,进而读取服务器端文件或其他操作[^2]。 #### 文件读取与Flag 获取 通过对Web应用逻辑的理解以及对已知路径猜测,发现存在可访问的目标文件位于 `/var/www/html` 下面名为 `ctf_go_go_go` 的文本文件内包含了最终答案即 Flag 。使用简单的 GET 请求携带相应指令即可完成这一过程: ```bash curl http://example.com/?cmd=cat%20/var/www/html/ctf_go_go_go ``` 这一步骤揭示了整个挑战的核心目标——找到隐藏于指定位置内的字符串标记,并将其格式化为比赛所要求的形式:`ctfshow{...}`[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值