注入-----数据变代码
sql注入----数据在数据库中执行
数据输入环境:http中都可以 ,get、post、以及http头部信息,文件上传等需要数据库记录的数据
数据库执行语句如何包裹输入的数据:整型(无包裹)、字符串(引号等包裹)
数据输出环境:有输出环境(联合查询) 、无输出环境(布尔型 延时型)
1.sql注入
概念:将恶意的sql查询或者添加语句插入到输入的参数中,再在后台sql服务器解析形成攻击
原理:程序员没有遵循代码与数据分离原则,是用户数据作为代码执行
注释:#或者–空格是单行注释,/**/是内联注释
条件:用户可以控制数据的输入
原本要运行的代码拼接了用户的输入并运行
sql注入产生原因:web服务器向数据访问层发起sql请求,权限验证通过就执行sql语句。网站内部直接发送的sql语句请求一般不会有危险。但实际情况是需要结合用户输入的数据动态构造sql语句,如果用户输入的数据构造称恶意代码,web应用未对使用的参数进行审查,则会形成sql注入漏洞
威胁:猜解后台数据库,盗取网站的敏感信息
绕过验证,例如直接登陆后台
注入可以借助数据库的存储过程进行提权等操作
2.Sql语句
查询语句
SELECT 目标
FROM 表
WHERE 条件
GROUP BY 分列组 HAVING 组选择条件<