SQL注入的定义:
所谓SQL注入,就是利用现有应用程序的特性,攻击者通过在web表单、URL等可输入数据的地方插入(恶意)SQL语句一并原有SQL语句被代库执行。SQL命令就是前端应用程序和后端数据库之间的接口。
SQL注入的危害:
- 数据库敏感信息泄露
- 网页被篡改,挂马
- 数据库被恶意操作
- 服务器被远程控制,被安装后门
- ……
SQL注入常见分类:
按数据类型:数字型(Integer)、字符型(String)
按返回结果:显错注入(Error-Based)、盲注(Boolean/Time-Based Blind)
SQL注入的形成:
- 数据与代码未严格分离
- 用户提交的参数数据未做充分检查过滤即被代入到SQL命令中,改变了原有SQL命令的“语义”,且成功被数据库执行。
SQL注入常见过程:
客户端:参数值等数据被修改——>服务端:未经检查和过滤即将被修改的数据注入到SQL命令中,SQL命令功能被修改——>数据库引擎:执行被修改后的SQL命令——>服务端:将注入的结果返回给客户端——>客户端:根据上一次注入获取到的敏感信息构造注入语句进一步注入
SQL注入在渗透测试过程中的作用:
- 绕过登录验证:使用万能密码登录网站后台等
- 获取敏感数据:获取网址管理员账号、密码等
- 文件系统操作:列目录、读取、写入文件等
- 注册表操作:读取、写入、删除注册表等
- 执行系统命令:远程执行命令