sql注入基础知识点总结

    科技2022-07-15  117

    sql注入基础知识点总结

    sql注入原理适用类型sql注入漏洞的常见类型sql注入点的类型sql注入一般步骤如何防御sql漏洞?

    sql注入原理

    sql注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是sql语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。(从客户端提交特殊的代码,从而收集服务器与程序的信息,获取到想要的数据)

    适用类型

    只要是支持批处理SQL指令的数据库服务器,都有可能受到这种手法的攻击;注入本质,是把用户输入数据当作代码执行,有两个关键条件:第一个是用户能控制输入;第二是原本程序要执行的代码,拼接了用户输入的数据,把数据当作代码执行了;错误的回显是敏感信息,是攻击者了解某网站web服务器的重要手段;最常见的盲注验证方法是,构造简单的条件语句,根据返回页面是否发生变化,判断SQL语句是否得到执行;

    sql注入漏洞的常见类型

    基础注入-union注入攻击Boolean注入攻击-布尔盲注报错注入攻击时间注入攻击堆叠查询注入攻击二次注入攻击宽字节注入攻击base64攻击cookie注入攻击-http请求头参数注入XFF注入攻击-http请求头参数注入知道绝对路径的注入

    sql注入点的类型

    数字型注入点字符型注入点搜索型注入点: 这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有“keyword=关键字”,有的不显示的链接地址,而是直接通过搜索框表单提交。 SQL注入原因:①不当的的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当

    sql注入一般步骤

    发现SQL注入位置: · 判断环境,寻找注入点,判断数据库类型;根据注入参数类型,判断注入类型 ·ID=1,数字型注入 Select * from 表名 where id=1

    ·id=‘2’,字符型注入

    Select * from 表名 where id='1'

    ·搜索时没过滤参数,如keyword=关键字

    Select * from 表名 where 字段 like '%关键字%’ 发现WEB虚拟目录,将查询条件替换成SQL语,才接表名,猜解表名,猜列名,猜目标目录的字段长度。

    如何防御sql漏洞?

    核心原则:数据代码分离原则。

    最佳方法:预编译语句,绑定变量,使用预编译的SQL语句,SQL的语意不会变化,攻击者无法改变SQL的结构,即使攻击者插入了类似于‘or ’1’=‘1的字符串,也只会将此字符串作为username查询。从存储过程来防御:先将SQL语句定义在数据库中,存储过程中也可能存在注入问题,应该尽量避免在存储过程中使用动态SQL语句。从数据类型角度来防御:限制数据类型,并统一数据格式。从开发者角度来防御:开发时尽量用安全函数代替不安全函数,编写安全代码。危险函数,常见的执行命令函数,动态访问函数,如c语言中的system(),PHP的eval(),JSP的include()导致的代码越权执行,都是注入。从数据库管理者角度来防御:最小权限原则,避免root,dbowner等最高权限用户直接连接数据库。
    Processed: 0.009, SQL: 9