黑客游戏:PHP漏洞分析

嗨,你好啊,想挑战一下自己么?

我会发布一个有漏洞的PHP脚本,你要做的就是找到这些漏洞。为了增添趣味,你每找到1个漏洞并说明它的风险(最少说一个风险)就会得1分,每提交1个针对相应漏洞的补丁也会得1分(当然,你的补丁要经得起攻击),总共10分。快来看看你能得几分吧!

提示:此脚本中总共有5个漏洞。

挑战场景:

想象一下,你是一家公司的安全专家,现在,公司需要你检查一段PHP脚本是否存在安全隐患。你需要报告漏洞的内容和风险,并提交你的补丁。

注意,要用通俗易懂的语言来报告哦,公司的决策人可能并不是技术专家。

挑战规则:

1、请不要团队合作。虽然这是一个合作的时代,但黑客是孤独的。

2、请不要使用代码分析工具 。难道你高考可以带老师么?相信自己,捷径会害了你的!

挑战要点:

1、1个漏洞+风险评估=1分。

2、1个补丁=1分。

3、不准合作、不准走捷径。

4、一共5个漏洞

PHP代码

if (isset( $_GET["archive"] ))

{

$archive = str_replace(array(";", "|", "&"), "", $_GET["archive"]);

echo "Evaluating $archive...";

if (strpos($_GET["archive"], "..") !== False)

{

$archive = str_replace("..", "", $archive);

$archive = new DOMDocument();

$archive->loadXML(file_get_contents("php://input"), LIBXML_NOENT | LIBXML_DTDLOAD);

echo simplexml_import_dom($archive)->stuff . "\n";

}

$null = "/dev/null";

$create = "-cf " . $null;

$cmd = "tar";

if (isset($_GET["cmd"]))

{

$cmd = $_GET["cmd"];

}

// $sanitized = '$cmd $create $null $_GET["archive"]';

$sanitized = escapeshellcmd("$cmd $create $null " . escapeshellarg($archive));

echo $sanitized;

exec($sanitized, $err);

if (!$err)

{

//echo "Archive unzipped";

if (isset($_GET["file"]))

{

$file = str_replace(array(";", "|", "&"), "", $_GET["file"]);

echo "writing: $file";

// $fileName = $cmd;

$fileName = $cmd . "_" . uniqid();

file_put_contents($fileName, $file);

}

}

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181125A0LIF000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励