当登录界面无法进行sql注入 或者当前需要管理员登录 并且能够轻松进行注册和执行登陆等后续操作 非专用用户 你就可以尝试从登陆后的场景来进行利用。
约束攻击可以参考以前的
约束攻击在注册的地方利用
二次注入注册时未过滤敏感字符 比如注册admin -- 用户 之后利用密码修改 通过sql语句就直接修改admin的密码 仅仅对注册时进行了转义
session在Web中 session是认证用户身份的凭证 它具备如下几个特点
1.用户不可以任意篡改
2.A用户的session无法被B用户获取
也就是说 session的设计目的是为了做用户身份认证。但是 很多情况下 session被用作了别的用途 将产生一些安全问题 我们今天就来谈谈“客户端session” client session 导致的安全问题。
一般的session是存放在服务器端的 比如常规的php存放在服务器端 Django存放在数据库中 而flask是存储在cookie上的 也就是客户端session
1.json.dumps 将对象转换成json字符串 作为数据
2.如果数据压缩后长度更短 则用zlib库进行压缩
3.将数据用base64编码
4.通过hmac算法计算数据的签名 将签名附在数据后 用“.”分割
那么这样的直接储存要如何保证安全呢 那就是hmac加密
这里使用的是签名 但是session本身是可以直接查看的。
看一个小例子
简单来说 就是先进行解码操作 获得本身seeion的信息 可以看到带有token的值就是通过签名来的 所以我们只要得到那个secrect_key 我们就可以进行相同加密 仿造签名了
简单解释一下 签名是通过私钥完成的 可以防止伪造和重放 但是签名并不提供信息保护 也就是可以通过解密还原明文消息 但是我们必须得到私钥才能进行签名。
在flask中session保存在本地 最好习惯性地进行解密 查看敏感信息
对于session的利用 你可以使用这个脚本解密
#!/usr/bin/env python3 import sys import zlib from base64 import b64decode from flask.sessions import session_json_serializer from itsdangerous import base64_decode def decryption(payload): payload, sig payload.rsplit(b . , 1) payload, timestamp payload.rsplit(b . , 1) decompress False if payload.startswith(b . ): payload payload[1:] decompress True try: payload base64_decode(payload) print(payload) print( n ) except Exception as e: raise Exception( Could not base64 decode the payload because of an exception ) if decompress: try: payload zlib.decompress(payload) print(payload) except Exception as e: raise Exception( Could not zlib decompress the payload before decoding the payload ) return session_json_serializer.loads(payload) if __name__ __main__ : #print(decryption( .eJw9kEGLwjAQhf_KkrOH2tqL4MGla4kwEyrRMLmItrU2Ni5UxXbE_77Bw17f431v5r3E_tTXt7OY3_tHPRH7thLzl_g6irlAXs5QXyKMNx0ZiKwDtq5JlG4SzFedyiglvR1Uji25cgS9HEBXF-QyQYaUeO3R77rgxcT0RF0yODmSKVhllbO5ZDRFDG7jyVhn9cZRvO4gaxjMTwJuOQRW6K3O5GTQZAr5yocbUtDfrdI7RxrPNisW4j0R5a0_7e-_l_r6_0KIPZGLmcpXrdWSycgBnfXEMEJWJmR2HeZyBL9lpcsIuYlVsfjgrgdfB8Sh8u11GidiIh63uv8MJKaReP8B9LloLQ.YUb0Sw.HOqA0gKuHnL61bDt3yFi7FqglI8 .encode())) print(decryption(sys.argv[1].encode()))
加解密也可以使用github项目中的文件 当然你需要提供密钥 使用的时候用-h查看一下帮助就行。
工具地址 https://github.com/noraj/flask-session-cookie-manager



