SQL注入定义
- SQL Injection:通过将SQL命令插入到WEB表单递交或输入域名或页面请求的查询字符串,达到欺骗服务器执行恶意的SQL命令的目的。
- 具体而言,利用现有的应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,可以通过在WEB表单中输入SQL语句得到一个存在安全漏洞的网站上的数据库,而非按照设计者的意图去执行SQL语句。
1、本质:代码和数据不区分。
2、成因:未对用户提交的参数数据进行校验或有效地过滤,直接进行SQL语句的拼接,导致改变了原有SQL语句的语义,传进数据库解析引擎中执行。
3、结果:SQL注入。
触发SQL注入
- 所有的输入只要是和数据库进行交互的,都可能触发SQL注入。
- 常见的注入包括:
GET参数触发SQL注入
POST参数触发SQL注入
COOKIE触发SQL注入
其他参与SQL执行的输入都可能进行SQL注入
SQL注入过程
SQL注入作用
- 绕过登录验证:使用万能密码登录网站后台等。
- 获取敏感数据:获取网站管理员账号、密码等。
- 文件系统操作:列目录,读取、写入文件等。
- 注册表操作:读取、写入、删除注册表等。
- 执行系统命令:远程执行命令。