• SQL注入初了解


    1.什么是SQL注入

           服务端没有过滤用户输入的恶意数据,直接把用户输入的数据当做SQL语句执行,从而影响数据库安全和平台安全。

    2.SQL两个条件:

    (1)用户能够控制输入

    (2)原本要执行的SQL语句,拼接了用户输入的恶意数据 

    3.SQL注入过程:

    (1)攻击者访问有SQL漏洞的网站,寻找注入点

    (2)攻击者构造注入语句,注入语句和程序的SQL语句结合生成新的SQL语句

    (3)新的SQL语句被提交到数据库中进行处理

    (4)数据库执行了新的SQL语句,引发SQL注入攻击

    4.SQL带来的危害(数据丢失)

    1. 绕过登录验证:使用万能密码登录后台(过时)
    2. 获取敏感数据:获取网站管理员、密码等
    3. 文件系统操作:列目录,读取、写入文件等
    4. 注册表操作:读取、写入、删除注册表等
    5. 执行系统命令:远程执行命令   

    5.SQL注入示例 

    1.万能密码:通过用户名处传入参数 'or 1=1 --进行密码登录

    6、MYSQL系统数据库中重要的表

    SQL 注入中最常见利用的系统数据库,经常利用系统数据库配合 union 联合查询来获取数据库相关信息,因为系统数据库中所有信息都在这个数据库里面,比如所有数据库名、所有的表名、列名以及列名的数据库类型等

    MYSQL系统数据库information_schema包含的三张非常重要的表:

    1. columns表:给出了表中的列信息
    2. schemata表:提供了关于数据库的信息
    3. tables表:给出了关于数据库中的表的信息

    schemata表:这个表里面存放的数据库信息,这个表里面最关键的就是schema_name列,这里面存放了所有数据库名称,查询这个列所有的值即可拿到所有数据库名

    存放的就是show databases;一样的结果

    columns表:这个表给出了所有表中的所有列信息,但是同时也包含了数据库名,所有表名,所有列名值对应列column_name,所有数据库名值对应列table_schema,所有表名值对应table_name列,当然此表还有其他列信息,如图,但是这里暂时只关注此三个列。

     

     tables表:这个表给出了所有表的信息,但是同时也包含了数据库名,所有表名,所有数据库名值对应列table_schema,所有表名值对应table_name列,当然此表还有其他表的信息 

     

  • 相关阅读:
    tomcat8 优化
    业务安全及案例实战
    【学习笔记】C#基础 - 由C/C++衍生出来的面向对象的编程语言
    LangChain与大型语言模型(LLMs)应用基础教程:神奇的Agent
    LeetCode 0592. 分数加减运算:手把手分步のC++讲解
    计算机毕业设计(41)java小程序毕设作品之在线教育视频学习小程序系统
    西门子机床联网
    什么是用来评估神经网络,神经网络的数据预处理
    【代码精读】中断路由代码导读:当cpu运行在TEE来了一个Group0中断
    100个Python实战项目(十二)Python 并发图像下载器
  • 原文地址:https://blog.csdn.net/lin152235/article/details/126137086