一、SQL相关概念
SQL:结构化查询语言,是一种特殊的编程语言,用于数据库中的标准数据查询语言。
SQL注入:是一种常见的web安全漏洞,攻击者利用这个漏洞可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。
1.是一种将SQL语句插入或添加到应用/用户的输入参数中的攻击;
2.这些参数传递给后台的SQL数据库服务器加以解析并执行。
哪里存在SQL注入:
get
post:搜索、用户登录、发表、删除等
http头部注入
cookie注入
任何客户端可控,传递到服务器的变量,并且和数据库进行交互的都有可能存在注入。
原理:SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原有的SQL结构,达到编写程序时出现意料之外结果的攻击行为。
成因:1.程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造SQL语句。
2.未对用户可控参数进行足够的过滤便将参数内容拼接到SQL语句中。
危害:利用SQL注入漏洞,可以获取数据库中的多种信息,例如:管理员后台密码,从而脱取数据库中的内容。特殊情况下还可以修改数据库或插入内容到数据库;如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么还可以直接获取webshell或者服务器系统权限。可以直接访问读写文件。
二、SQL注入的分类