我应该怎么做才能获得$flag? 这些代码的漏洞是什么?是在 $_GET 中吗-6ren">
gpt4 book ai didi

php - 这段php代码的漏洞在哪里?

转载 作者:行者123 更新时间:2023-12-02 23:31:12 24 4
gpt4 key购买 nike

我正在解决codeshell.kr的问题

  <?php 
include("./config.php");

$foo = $_GET['______foo_adm1nkyj______'];
$check = urldecode($_SERVER['QUERY_STRING']);

if(preg_match("/_| /i", $check))
{
die("no hack ~_~");
}
if($foo == "adm1nkyj")
{
echo $flag;
}

echo "<br/>";
highlight_file(__FILE__);
?>

我应该怎么做才能获得$flag? 这些代码的漏洞是什么?是在 $_GET 中吗?或 preg_match()?尽管用谷歌搜索我还是找不到它。

最佳答案

解决办法是这样的:

http://123.111.158.161/codeshell/prob2/?......foo.adm1nkyj......=adm1nkyj

它之所以有效,是因为 PHP 在请求数据数组的键中用下划线替换点和空格( $_GET$_POST$_REQUEST$_COOKIE )。

来自PHP docs :

Note: Dots and spaces in variable names are converted to underscores. For example <input name="a.b" /> becomes $_REQUEST["a_b"].

这可能是寄存器全局变量还存在的时候的遗留物。

关于php - 这段php代码的漏洞在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39793641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com