首先,我不是想破解或做任何违法行为.以为我让你们知道.我有一个客户希望我对他的系统进行一些修改,当我看着它时,我注意到NOTHING被转义了.我不是在开玩笑,没有任何东西被逃脱.我向他解释说拥有这样一个系统是不安全的.然后他继续告诉我他已经有这样的系统这样几年没有发生任何事情.我需要告诉他他的系统不安全,但我真的不知道要执行sql注入.这里有一些使用$_GET并且没有转义的查询.
SELECT *,DATE_FORMAT(joined,'%M %d,%Y') as \"Joined\" FROM `members` WHERE `name` LIKE '".$ltr."%' ORDER BY points DESC LIMIT $page,50
这是另一个:
SELECT * FROM groups WHERE id=$thisladder[grid]
我唯一看到“可能”清理$_GET的是这个函数:
if (!ini_get('register_globals')) { $superglobals = array($_SERVER,$_ENV,$_FILES,$_COOKIE,$_POST,$_GET); if (isset($_SESSION)) { array_unshift($superglobals,$_SESSION); } foreach ($superglobals as $superglobal) { extract($superglobal,EXTR_SKIP); } }
上述函数可能正在清理变量.是的,系统也使用寄存器全局变量,这也很糟糕.
我也做了一个备份,以防万一.
不能说它比
http://xkcd.com/327/好.
但话说回来,正如Marc B所说,忘记sql注入,register_globals
更糟糕.从来没有想过我会真正看到它被模仿,以防万一它关闭.