精华内容
下载资源
问答
  • session加密方式
    千次阅读
    2021-02-01 01:50:49

    Mysql8.0默认采用了新的caching_sha2_password的身份验证方式,此方式并不兼容常规的老的web服务接口,当然,不排除后面会出现。比如phpmyadmin5.0测试版已经出现兼容caching_sha2_password的模式。

    为了继续维持我们常见的web连接的mysql身份验证方式,我们需要将默认的连接方式及root账户的连接方式恢复为旧的mysql_native_password方式。

    1.使用root账户登入mysql,查询目前mysql的用户的身份验证方式。

    select host,user,plugin,authentication_string from mysql.user;

    显示如下:

    mysql> select host,user,plugin,authentication_string from mysql.user;

    +-----------+------------------+-----------------------+------------------------------------------------------------------------+

    | host | user | plugin | authentication_string |

    +-----------+------------------+-----------------------+------------------------------------------------------------------------+

    | localhost | XXX | mysql_native_password | *6XXXXXXXXXXXXXXXXXXXX61 |

    | localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIXXXXXXXXXXXXXBRBEUSED |

    | localhost | mysql.session | caching_sha2_password | $A$005$THISIXXXXXXXXXXXXXXXXXXXXXXXXXXSTNEVERBRBEUSED |

    | localhost | mysql.sys | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTXXXXXXXXXXXXVERBRBEUSED |

    | localhost | root | mysql_native_password | *67FXXXXXXXXXXXXXXXXXXXXX961 |

    +-----------+------------------+-----------------------+------------------------------------------------------------------------+

    5 rows in set (0.00 sec)

    mysql>

    可以在plugin看到身份插件验证方式.

    更改root账户的验证方式为 mysql_native_password ,在mysql管理界面输入对应密码

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'

    刷新配置启用

    FLUSH PRIVILEGES;

    更多相关内容
  • flask、session、cookie解加密脚本
  • 后续的一个包,也没什么有用信息,看到 session 这部分,应该是base64编码,尝试了解码未得到结果,登录成功后,尝试其他功能看能否得到有用信息 修改密码部分,网页源码中有端倪 访问地址,发现更多有用信息,...
    1. 进入靶场,没什么特殊页面,如果运气足够好的话,账号:admin,密码:123,否则注册一个用户,然后登录抓包,看能否得到有用信息
      在这里插入图片描述
      后续的一个包,也没什么有用信息,看到 session 这部分,应该是base64编码,尝试了解码未得到结果,登录成功后,尝试其他功能看能否得到有用信息

    2. 修改密码部分,网页源码中有端倪
      在这里插入图片描述
      访问地址,发现更多有用信息,flask 是 python 的 web 端框架,赶紧搜索了一下 flask session
      Flask的session使用

    3. 利用
      flask中session是存储在客户端cookie中的,也就是存储在本地。flask仅仅对数据进行了签名。签名的作用是防篡改,而无法防止被读取。而flask并没有提供加密操作,所以其session的全部内容都是可以在客户端读取的,这就可能造成一些安全问题。

       (1)session 可以设置/获取
       (2)需要在 config.py 文件中配置 SECRET_KEY 
       (3)可以进行伪造,网上找一下 flask session 的伪造方法
      

      flask session 加密解密工具

    4. 取用我们自己注册的用户登录成功的 session 进行解密,如下
      在这里插入图片描述

    根据题目可知,登录管理员账户应该可得 flag,审计代码的结果发现,在 index.html 中也有提到
    在这里插入图片描述
    在这里插入图片描述
    那么我们就用上述解密得到的结果,修改用户名为 admin,再加上 SECRET_KEY 进行加密,伪造 payload

    SECRET_KEY 在 config.py 中位 ckj123

    import os
    
    class Config(object):
        SECRET_KEY = os.environ.get('SECRET_KEY') or 'ckj123'
        SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:adsl1234@db:3306/test'
        SQLALCHEMY_TRACK_MODIFICATIONS = True
    
    1. 根据以上信息,伪造 session
      在这里插入图片描述
      重新登录,bp 抓包,用伪造的 session 替换原来的 session 即可
      在这里插入图片描述
      在这里插入图片描述

    2. 在代码审计的时候,我们发现,注册、登录和修改密码处,都对用户名进行了小写转化~~
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    3. 此处应当可做文章,假设第一次注册时,输入用户名转化为 ADMIN ,我们再去修改密码时转化为 admin,这样不就可以绕过登录和注册界面直接修改 admin 密码了么?因此进行 Unicode 编码欺骗;这里原理就是利用nodeprep.prepare函数会将unicode字符ᴬ转换成A,而A在调用一次nodeprep.prepare函数会把A转换成a。

    ᴬᴰᴹᴵᴺ -> ADMIN -> admin
    

    用 ᴬᴰᴹᴵᴺ 注册并登录,然后修改密码,即可修改 admin 用户密码

    1. 总结
      Unicode 编码未接触过的东西,搞的有疲惫,ᴬᴰᴹᴵᴺ 这个东西真不好找啊,浪费很长时间在Unicode编码上
    展开全文
  • 这是 PHP 的自定义加密会话处理程序(使用session_set_save_handler )。 它几乎与任何版本的 PHP 兼容,并且不使用较新的SessionHandler接口。 示例用法 <?php require_once 'vendor/autoload.php' ; $ salt = ...
  • session共享中遇到的坑。自己通过更改源码实现自定义功能
  • 机架会话加密的cookie 机架会话处理中间件,用于将会话数据序列化为加密的cookie; 这也是异步的。 这可能不是最安全的解决方案,但比将会话数据以明文形式存储在cookie中要好。 话虽这么说,与该密码派生的密钥...
  • sessionKeys(JavaScript) sessionKeys是一种加密工具,用于使用JavaScript生成唯一的用户ID,与NaCl兼容的加密和数字签名密钥。 它与兼容,当给定相同的用户名和密码时,可以使用Ruby在服务器端生成相同的ID和加密...
  • 1.登录界面提交过来的数据进行cookie和session的设置,其中cookie设置加密确保安全性 public function index(){ if(IS_POST){ $username=I('post.username'); $pwd=I('post.pwd','','md5');

    1.登录界面提交过来的数据进行cookie和session的设置,其中cookie设置加密确保安全性

      public function index(){
            if(IS_POST){
                $username=I('post.username');
                $pwd=I('post.pwd','','md5');       
                /*通过调用模型来获取查询结果,此处D方法为thinkphp内置,意为采取自定义的方式实例化模型
                相当于 $User = new \Home\Model\AdminModel();
                当 \Home\Model\AdminModel 类不存在的时候,D函数会尝试实例化公共模块下面的 \Common\Model\AdminModel 类*/           
                $adminInfo = D('admin')->check($username,$pwd);
    
                if($adminInfo){
                    //登录成功后使用cookie存储登录用户信息
                    session('adminInfo',$adminInfo);
    
                    //加密函数加密
                    $lockInfo=addLock($adminInfo);
                    cookie('adminInfo',$lockInfo,3600);
                    $this->redirect('Index/index');
                }else{              
                    cookie('isLogin',0);
                    $this->error('用户名或者密码输入有误!','',1);
                }
            }else{          
                $this->display('login');
            }
        } 

    2.加密函数如下:

        function addLock($arr){
          //数组进行序列化
          $str=serialize($arr);
          $key='$#**)UU*#';
          $newStr=md5($key.$str);
          return $newStr;
        }   

    3.在公共控制器中初始化的过程中设置cookie和session的验证,如果没设置session或者提交的内容与浏览器存储的内容不符合的话就会提示登录失败:

        function __construct(){
            //加载父类的构造方法
            parent::__construct();
    
                $sessionInfo=session('adminInfo');
    
                $cookieInfo=cookie('adminInfo');
    
                //如果设置了session或者经过加密后的提交内容与cookie上次的设置值不相等的话就提示错误
                if(!$sessionInfo||$cookieInfo!=addLock($sessionInfo)){                
                    //如果没有登录则1秒后跳转到登录页面
                    $this->error('您还没登录,请先登录!',U('Login/index'),1);
                }
            }
    展开全文
  • session_key是微信服务器生成的针对用户数据进行加密签名的密钥 session_key的用途 (1)对wx.getUserInfo()接口得到“用户信息中的密文”进行解密。 (2)对它“稍作处理”,用作维护小程序的登录态。 “稍微处理”...
  • :hammer_and_pick: SvelteKit的加密“无状态” cookie会话 通过此后端实用程序,您可以创建会话,并通过加密的印章将其存储在浏览器cookie中。 这提供了强大的客户端/“无状态”会话。 从客户端的角度来看,存储在...
  • - 常见的非对称加密算法和非对称的加密方式? ? ? ? ? ? ?- 老版本只使用jwt进行加密的弊端? ? ? ? ? ? ?- 授权中心的授权流程? ? ? ? ? ? ?- 如何整合网关组件实现jwt安全验证? ? ? ? ? ? ?- 理解什么是公钥什么是...
  • 它使用扩展来提供加密和HMAC-SHA-256身份验证。 类扩展了PHP的默认 ,并且仅在内部保存处理程序上添加了加密层。 会话管理逻辑保持不变,这意味着您可以将SecureSession与PHP扩展提供的所有PHP会话处理程序(如...
  • postgresql加密方式

    千次阅读 2021-10-15 13:27:48
    postgresql加密方式 1.md5 存储方式:md5(‘用户名+密码’) 2.scram-sha-256 ##查看加密方式 select name,setting from pg_settings where name =‘password_encryption’; ##查询相关参数 password_encryption= ...

    postgresql加密方式

    password_encryption是动态参数,修改配置参数不需要重启服务,可动态加载

    方式1.md5

    1.存储方式:md5(‘用户名+密码’)
    2.在版本14之前,默认加密方式是md5

    方式2.scram-sha-256

    1.从10+(含10)版本开始支持SCRAM-SHA-256
    2.低版本的驱动不支持SCRAM-SHA-256,如JDBC会出现The authentication type 10 is not supported错误信息
    是否支持scram的驱动参考表:https://wiki.postgresql.org/wiki/List_of_drivers
    3.14+(含14)版本后密码加密默认是scram-sha-256

    查看加密方式
    select name,setting from pg_settings where name ='password_encryption';
    或者
    show password_encryption;
    
    sha256需要加载pgcrypto插件
    ##安装插件
    create extension pgcrypto;
    
    ##查看插件信息
    \dx
    或者
    select * from pg_available_extensions;
    
    ##遇到错误
    ERROR: could not open extension control file "/usr/local/pgsql/share/extension/pgcrypto.control": No such file or directory
    
    ##解决办法
    1)原始的安装包的contrib路径下找到对应的插件信息/data/postgresql-11.4/contrib/pgcrypto
    2)cd /data/postgresql-11.4/contrib/pgcrypto
    3)make USE_PGXS=1
    4)make USE_PGXS=1 install
    
    ps:直接使用make install还是有可能会出现以下错误信息:
    Makefile:48: ../../src/Makefile.global: No such file or directory
    Makefile:49: /contrib/contrib-global.mk: No such file or directory
    make: *** No rule to make target `/contrib/contrib-global.mk'.  Stop.
    

    升级加密方式

    ##密码相关的表信息,可以看到具体的加密方式
    select usename,passwd from pg_shadow;
    select rolname,rolpassword from pg_authid;
    
    ##看到密码信息是******
    select usename,passwd from pg_user;
    select rolname,rolpassword from pg_roles;
    

    升级步骤

    1)开发确定客户端工具驱动支持scram-sha-256的加密方式,不支持则需要进行客户端升级
    2)通过pg_shadow和pg_authid两张表进行查询,确认非scram加密用户

    select usename,passwd from pg_shadow where passwd not like 'SCRAM-SHA-256%';
    
    select rolname,rolpassword from pg_authid where rolpassword not like 'SCRAM-SHA-256%';
    

    3)修改对应的加密配置参数

    alter system set password_encryption='scram-sha-256';
    ##热加载
    select pg_reload_conf();
    

    4)重设非scram用户密码

    \password username
    

    5)查看用户密码是否全部修改成sha-256

    select rolname,rolpassword from pg_authid where rolpassword not like 'SCRAM-SHA-256%';
    

    6)检查用户登录是否正常

    测试

    1.查看用户密码信息
    postgres=# select rolname,rolpassword from pg_authid where rolname not like ‘pg%’;

    rolnamerolpassword
    zhangsanmd5c1cb843f3929978af615fe7dfbf532cb
    xiaohongSCRAM-SHA-256$4096:ZNlDvGgYo9Q7+xLFgLL2nA==$lBfUIDCPefgk2BN7s9nHXk/sJ8kNw+vVtbS9MhAf2CI=:5A/a0qezFeqGtsxa1v7gNlasBeKHmWn8Hq4ZW46TZog=

    2.修改pg_hba.conf配置文件的密码认证方式为scram-sha-256之后,原来的md5的加密用户则无法登陆
    vi pg_hba.conf

    #"local" is for Unix domain socket connections only
    local   all             all                                     scram-sha-256
    #IPv4 local connections:
    host    all             all             127.0.0.1/32            scram-sha-256
    host    all             all             172.16.0.0/16              scram-sha-256
    

    3.修改配置参数

    postgres=# alter system set password_encryption='scram-sha-256';
    ALTER SYSTEM
    
    postgres=# select pg_reload_conf();
     pg_reload_conf
    ----------------
     t
    (1 row)
    
    postgres=# show password_encryption;
     password_encryption
    ---------------------
     scram-sha-256
    (1 row)
    

    4.登陆测试,测试发现登陆认证失败
    [postgres@k8s-node1 root]$ psql -U zhangsan -d postgres
    Password for user zhangsan:
    psql: FATAL: password authentication failed for user “zhangsan”

    5.如果修改pg_hba.conf的方式为md5,则兼容md5和scram-sha-256两种加密密码的登录验证方式
    vi pg_hba.conf

    #"local" is for Unix domain socket connections only
    local   all             all                                     md5
    #IPv4 local connections:
    host    all             all             127.0.0.1/32            md5
    host    all             all             0.0.0.0/16              md5
    

    aws关于scram-sha-256的文档说明

    云测试

    • 修改参数通过控制台参数组修改才有效
    • 能在客户端修改的参数都是只改变session类参数,无法修改全局性参数,主要权限不够
    • 测试版本11.4,发现在修改加密参数后,原方式和新方式的加密都能正常登录(除驱动不支持外)
    -- aws禁止配置热加载
    postgres=> select pg_reload_conf();
    ERROR:  permission denied for function pg_reload_conf
    
    -- 权限不够使用的用户是创建实例的“超级”用户
    postgres=> alter system set password_encryption='scram-sha-256';
    ERROR:  must be superuser to execute ALTER SYSTEM command
    
    -- 云没有pg_authid表权限
    select * from pg_authid;
    ERROR:  permission denied for table pg_authid
    
    -- 可以通过log_statement的日志观察用户账号变更为md5还是sha-256
    

    postgresql密码过期

    -- 查看用户密码过期时间信息valuntil,默认是永不过期
    select * from pg_user;
    
    -- 设置用户的密码过期时间
    alter user zhangsan valid until '2021-12-25 16:15:00';
    
    -- 超过设置期限之后,无论是第三方客户端登录,还是本地服务器psql客户端登录都会出现验证失败信息
    psql: FATAL:  password authentication failed for user "zhangsan"
    
    • pg密码有限期只是针对客户端有效,数据库服务不受限制。也就是说用户过期后无法登录,但是存在数据库中的账号密码信息依旧存在不会过期,重新修改过期时间后则可以重新使用
    • 设置密码有效期时,网络访问控制文件pg_hba.conf中不能配置为trust认证方式
    展开全文
  • 目录导航session 的产生过程统计session的个数,来实现在线人数的统计登陆密码的加密 session 的产生过程 浏览器发出请求后,如果是跳转到默认jsp 页面,jsp 页面会直接产生一个session,原因是jsp 本质是一个...
  • CTFsession伪造脚本,有解密和加密的,一定要有私钥才能进行。
  • 前后台交互加密方式

    千次阅读 2019-04-29 18:03:36
    一、登录机制 粗略地分析, 登录机制主要分为登录验证、登录保持、登出三个部分。... 登录认保持是指客户端登录后, 服务器能够...容易想到的方案是,客户端登录成功后, 服务器为其分配sessionId, 客户端随后每次请...
  • 是一个通过地址栏参数或Session在页面间传值,而其中的传过去的参数在地址栏是加密的!对于初学者既可以学习加密,也可以学习如何传值!加密算法是用的Rijndael加密,通用的哦,也可以用在winform中 开发工具:...
  • 某些系统喜欢把 session 内容编码后加密放在 cookie 里面 那么你可以 1.你可以共用 cookie,然后把数据放在 nodejs 和 拍黄片(Sorry,是PHP) 都可以取到的地方,例如 redis。影像中 php 默认的 session 是写他自己...
  • session共享的四种方式

    千次阅读 2020-07-05 16:00:29
    按照自定义的加密规则将session数据加密保存到cookie中: 优点:服务器压力减小,同时能够解决在多个服务器之间session不共享的问题。 缺点:不同的浏览器对cookie容量有大小限制;客户端每次请
  • 一、由于laravel对session进行了重写,因此在laravel里不存在原生session,若想使用原生,则...//在入口处开启原生session二、Crypt加密解密,上源码:use Illuminate\Support\Facades\Crypt; public function crypt()
  • 共享session的几种方式

    千次阅读 2018-03-23 12:29:27
    1、为什么需要共享session假设某个网站是由多台服务器提供服务,nginx...2、共享session的几种方式1)、基于NFS的session共享NFS(Net FileSystem),顾名思义,也就是网络文件系统,即将session存储目录挂载到所有...
  • 就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术在当今被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56bits。 非对称式加密: 就是加密...
  • 组长拍了拍小黑的脑袋: 我这一顿不是白吃哦,下个星期你把现在方式修改一下,修改成 Session 集中存储的方式。 给你一个小提示,可以使用 spring-session。 小黑: 好吧,吃人嘴短,下周我研究下。 总结 最后总结...
  • 加密

    2012-05-29 19:05:59
    加密是有时效性的,通常楼主说的这种情况不需要考虑防止别人从内存中把密钥读出来,这种密钥一般是一个session(会话,或者...足够安全的做法就是服务器端产生session key以后,是用PKI的方式加密sessioin key的,PK
  • Shiro之加密方式-yellowcong

    万次阅读 2017-12-17 20:29:26
    Shiro加密验证,是通过自身的方式来进行验证的。有无加密加密的两种验证方式。在密码的生成方面,我们可以通过`SimpleHash`来生成密码。
  • 登录信息(session)存储方式总结

    千次阅读 2021-11-25 17:30:11
    1、前端存储cookie 用户登录时判断完用户名密码等,将登录对象加密返回到前端,前端用ajax将登录对象存入cookie,此后...2、后端存储session User user = userMapper.selectById(mobile); if (null == user) {.
  • django中session实现方式

    千次阅读 2017-11-17 10:30:58
    django中session实现方式 request.session.modified = True # session存储机制的问题
  • DES加密和RSA加密(Java)

    千次阅读 2022-01-08 00:05:23
    DEC加密和RSA加密(Java)
  • [代码审计]PHP中session的存储方式(WP)

    千次阅读 2020-08-02 20:43:24
    文章目录SESSION的常用知识基本概念要点Session基本介绍Session工作原理一些与解题相关基本概念session存储的方式session存储格式(序列化)session如何将session存入数据库并使用session的存储位置session存储的默认...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 155,022
精华内容 62,008
关键字:

session加密方式