Ihipop 学校的 Discuz X1.5 论坛被黑,在那里吵了一个下午。Google 一下“Discuz! X1-1.5 notify_credit.PHP Blind sql injection exploit”,你就知道。 Discuz 是国内很流行的论坛系统,被黑的网站应该会很多吧。不过我对入侵别人的网站不感兴趣,同时也鄙视那些代码都不会写只会使用别人放出的工具攻击的所谓的“黑客”。
粗略看了一下代码,这个 sql 注入漏洞是 urldecode 函数造成的。在 PHP 手册中,urldecode 函数下面有一个警告: The superglobals $_GET and $_REQUEST are already decoded. Using urldecode() on an element in $_GET or $_REQUEST could have unexpected and dangerous results. 而 Discuz 的开发人员(估计是新手)画蛇添足,多加了一个 urldecode:
<div class="codetitle"><a style="CURSOR: pointer" data="77590" class="copybut" id="copybut77590" onclick="doCopy('code77590')"> 代码如下: