认识docker+LNMP架构

目录

一、docker

1.安装,启动

2.docker相关命令

3.如何使用?

二、LNMP

1.认识LNMP

2.sql注入漏洞挖掘

3.如何绕过检测进行注入


一、docker

1.安装,启动

认识docker+LNMP架构_第1张图片

2.docker相关命令

docker search nginx  搜索镜像
docker pull docker.io/nginx  拉取镜像
docker images -a  列出本地所有的镜像
docker ps -a  列出所有的容器
docker exec  容器ID进到容器内
docker run [OPTIONS] IMAGE根据镜像新建并启动容器。IMAGE是镜像ID或镜像名称
OPTIONS说明:
--name=“容器新名字”:为容器指定一个名称
-d:后台运行容器,并返回容器ID,也即启动守护式容器
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-p:随机端口映射

3.如何使用?

如何使用docker进行安装nginx???

认识docker+LNMP架构_第2张图片

二、LNMP

1.认识LNMP

Linux+nginx+MySQL+PHP

2.sql注入漏洞挖掘

注意:arg是获取用户输入的$_REQUEST$_SERVER。

error('Username or password is empty.');
        }

        $email = arg('email');
        if (empty($email)) {
            $email = $username . '@' . arg('HTTP_HOST');
        }

        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $this->error('Email error.');
        }

        $user = new User();
        $data = $user->query("SELECT * FROM `{$user->table_name}` WHERE `username` = '{$username}'");
        if ($data) {
            $this->error('This username is exists.');
        }

        $ret = $user->create([
            'username' => $username,
            'password' => md5($password),
            'email' => $email
        ]);
        if ($ret) {
            $_SESSION['user_id'] = $user->lastInsertId();
        } else {
            $this->error('Unknown error.');
        }
    }

}

以上是注册功能的代码,在登录时进行用户名和密码的填写,然后将三者传入到create方法。还有该网站的域名从arg('HTTP_HOST')获取,在往上一层就是从$_REQUEST$_SERVER中获取。

此时会出现一个SQL注入漏洞???

因为$_SERVER没有经过转义,只需要在HTTP头Host值中引入单引号,即可造成一个SQL注入漏洞。

3.如何绕过检测进行注入

同时该代码中还有一次检测,filter_var($email, FILTER_VALIDATE_EMAIL),所以在进行注入时要绕过。如何绕过呢???

(1)将特殊字符用\转义,如Joe\'[email protected]

(2)或将local part包裹在双引号中,如"Joe'Blow"@example.com

(3)local part长度不超过64个字符

为什么???这个邮箱包含单引号,将闭合SQL语句中原本的单引号,造成SQL注入漏洞。

以上为docker和lnmp相关介绍,不够全面后期进一步完善。

你可能感兴趣的:(docker,容器,运维)