分类目录归档:mysql

php mysql任意密码漏洞以及解决办法

/**
 * mysql任意密码漏洞
 *
 * @param unknown_type $user
 * @param unknown_type $passwd
 * @return unknown
 */
public function getLogin( $user, $passwd ){
    $passwd = md5(md5(md5($_POST['pass'])));
    $where = "username = '{$user}' AND password='{$passwd}'";
    $row = $this->where($where)->selectone();
    return $row;
}

上面的程序如果程序没有对单引号进行转义处理的话(假设存在admin用户)

用户名:admin'#    密码任意

这样就可以登录进去

修改方法
1.简单处理可以改变username的位置
public function getLogin( $user, $passwd ){
        $passwd = md5(md5(md5($_POST['pass'])));
        $where = "password='{$passwd}' AND username = '{$user}'";
        $row = $this->where($where)->selectone();
        return $row;
    }
2.单双引号转义
方法一:在php.ini中设置:magic_quotes_gpc = Off
方法二: $username=stripcslashes($username)

3.改变程序流程先查出用户名是否存在,再判断密码是否正确

mysql LOAD_FILE 在数据库注入中的使用

LOAD_FILE 函数只有满足以下2个条件就可以使用

1.文件权限: chmod a+r  pathtofile
2.文件大小: 必须小于max_allowed_packet

下面使用LOAD_FILE就可以获取到系统敏感信息

SELECT LOAD_FILE( 'D:/xampp/htdocs/www/wanju/htaccess.txt' )

SELECT LOAD_FILE('/etc/hosts')