zoukankan      html  css  js  c++  java
  • JAVA代码审计之SQL注入

    JAVA代码审计之SQL注入
     
    1. 三种不同框架类型的SQL
      1. JDBC--sql注入
      2. Hibernate--sql注入
      3. Mybatis、iBatis-- sql注入
    2. SQL注入手工审计方法
      1. 步骤1:全局搜索“+”,找到存在+ 拼接的sql语句,查看参数是否有过滤,一般在DAO层
      2. 追溯上层函数,直到,doPost(HttpServletRequest request,HttpServletResponse response)
      3. 查看整个流程中,有没有过滤非法字符串,如果没有,则存在sql注入
      4. 找到页面publick class LoginServlet extends HttpServlet{  doPost}
      5. 在web.xml中搜索LoginServlet,里面配置着每个servlet 的路由信息。
        1. <servlet-mapping>
          1. <servlet-name>loginServlet</servlet-name>
          2. <url-pattern>/login</url-pattern>
        2. <servlet-mapping>
      6. 在前端代码中找到login 函数被谁调用
      7. 本地调试:
        1. 运行代码,开启后端服务,在doPost函数打断点,多打几个
        2. 找到页面,当前是登录页面,点击登录,bp截取请求包,点击forword
        3. 查看代码中断点前后信息
    3. SQL注入-JDBC不安全全的
      1. statment 不能防止ssql注入
      2. “+”号直接拼接 参数(要溯源参数user对象是否有过滤)
        1. payload:
          1. USER_name1111'or'1'='1'#
          2. select * from t_user where userName = ' ''1111'or'1'='1'# " ' and password=' "1111‘
          3. # 号后面的信息都给注释掉了
      3. 修复方案,使用PreparedStatement预处理
      4. JDBC--SQL注入遇到like
        1. 预处理遇到like
          1. 111' or '%'  =’
          2. t_grade and gradeName like '%111' or '%'='%'
        2. 正确写法
          1. 遇到like的正确写法
        3. 当SQL注入--JDBC遇到in
          1. 预处理遇到in 不正确的处理方法
          2. 正确写法
            1.  
    4. Mybatis、iBatis链接方式--sql注入
      1. Mybatis直接拼接--${参数}
        1. Statmdent不能防止sql注入
        2. 使用#{}预处理
          1. PreparedStatement预处理
      2. SQL注入--Mybatis--like防注入
        1. MySQL
          1. select * from_t_user where name like contact('%',#{name},'%')
        2. Oracle
          1. select * from t_user where name like'%'||#{name}||'%'
        3. Sql Server
          1. select * from t_user where name  like '%'+#{name} +'%'
      3. SQL注入--Mybatis--in 防注入
        1.  
     
  • 相关阅读:
    mysql给数据库字段赋值为随机数
    利用lList集合中的subList进行分页
    redis中分页缓存数据
    ios账号第三方登录,判断是否是Ios账号
    通过ip查询ip地址
    MySQL
    排序算法
    139. 单词拆分
    138. 复制带随机指针的链表
    137. 只出现一次的数字 II
  • 原文地址:https://www.cnblogs.com/nancyfeng/p/15404483.html
Copyright © 2011-2022 走看看