Java反射总结

  • 反射中的方法

    1
    2
    3
    4
    public void execute(String className, String methodName) throws Exception {
    Class clazz = Class.forName(className);
    clazz.getMethod(methodName).invoke(clazz.newInstance());
    }
    • 获取类的方法

      forNameobj.getClass()

    • 实例化类对象的方法

      newInstance

    • 获取函数的方法

      getMethod

    • 执行函数的方法

      invoke

Read More

某核酸检测信息查询平台的漏洞发现

最近我在的城市疫情有点严重,连续被捅了8次嗓子,在某次查询核酸结果的时候,我发现了查询网站好像不那么安全,于是开始了研究。

漏洞发现

平台界面

在查询核酸检测结果时,发现每次请求的API参数是相同的,并且请求无需通过验证。那么,这里的验证码很可能只有前端验证,后端并没有进行验证,并且加密算法是固定的。只要知道是如何加密的,就可以直接通过身份证号查询到公民信息。

Read More

JWT中的安全隐患

JWT特征

JWT生成的token.连接的三段字符串组成,即{HEADER}.{PAYLOAD}.{SIGNATURE}

  • HEADER

    HEADER是对算法和token类型进行base64Url加密。如以下JSON对应的HEADEReyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9,这是token的第一部分。

    1
    2
    3
    4
    {
    "alg": "HS256",
    "typ": "JWT"
    }

Read More

PHP过滤函数缺陷

  • ==与===

    ==不比较类型,===比较类型。

  • md5

    1
    2
    3
    4
    5
    if($_GET['name'] != $_GET['password']) {
    if(MD5($_GET['name']) == MD5($_GET['password'])) {
    echo $flag;
    }
    }
    • 科学计数法

      如果一个字符串为合法数字+e+合法数字类型,将会解释为科学计数法的浮点数。

      那么只要找到字符串的MD5值为0e开头的,即可绕过。如:name=QNKCDZO&password=240610708

      但是这种方法只能在==情况下绕过,因为===是会比较类型,而MD5函数返回的是字符类型,无法转换成数字。

    • 数组

      md5函数无法处理数组,如果传入的为数字,会返回NULL。如:name[]=1&password[]=2。这种绕过在===的情况下也可以使用。

Read More

使用宝塔面板搭建Hexo博客

因为以前使用WordPress搭建博客,加载速度较慢,而且许多功能用不上,于是今天尝试搭建Hexo博客。

tip:本文中的方法是将文件部署到本地,并非Github上。

安装

  • 要求

    Node.js (Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本)

1
npm install -g hexo-cli

Read More