易想团购系统通杀SQL注入漏洞分析及利用
找到get_client_ip()函数:
// 获取客户端IP地址 function get_client_ip(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return($ip); }
果然没过滤,看了下很多地方用到这个函数。
比如:
if($_REQUEST['act'] == 'verify') { $id = intval($_REQUEST['id']); $user_info = $GLOBALS['db']->getRow("select * from ".DB_PREFIX."user where id = ".$id); if(!$user_info) { showErr($GLOBALS['lang']['NO_THIS_USER']); } $verify = $_REQUEST['code']; if($user_info['verify'] == $verify) { //成功 $_SESSION['user_info'] = $user_info; $GLOBALS['db']->query("update ".DB_PREFIX."user set login_ip = '".get_client_ip()."',login_time= ".get_gmtime().",verify = '',is_effect = 1 where id =".$user_info['id']); $GLOBALS['db']->query("update ".DB_PREFIX."mail_list set is_effect = 1 where mail_address ='".$user_info['email']."'"); $GLOBALS['db']->query("update ".DB_PREFIX."mobile_list set is_effect = 1 where mobile ='".$user_info['mobile']."'"); showSuccess($GLOBALS['lang']['VERIFY_SUCCESS'],0,APP_ROOT."/"); }
团购系统嘛,其实不用看代码,登陆的这些地方必定会用这个函数。
果断的,登陆的时候在http头里面加了个client_ip,值为127′