【网络空间安全】SQL Injection_SQL 注入..

SQL 注入漏洞

攻击者利用 web 应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系统有特殊的意义的符号和命令,让攻击者有机会直接对后台数据库下达指令,进而实现对后台数据库乃至整个应用系统的入侵。web

  • 掌握SQL注入
  1. 数据库分类
  2. SQL注入
  3. 实现

数据库分类

当今数据库模型主要分为两种,即关系型数据库和非关系型数据库。redis

关系型数据库mongodb

把复杂结构归结为简单的二元关系(即二位表格形式),经过SQL结构化查询语句存储数据,保持数据一致性,遵循ACID理论(即原子性,一致性,隔离性,持久性),例如MySQL、SQL Server、Oracle数据库

非关系型数据库安全

被称为NoSQL数据库,在特定的场景下能够发挥不可思议的高效率和高性能,例如:memcaahed、redis、mongodb服务器

SQL注入

SQL注入原理svg

SQL注入攻击的本质,服务器没有过滤用户输入的恶意数据,直接把用户输入的数据看成SQL语句执行,从而影响数据库安全和平台安全。工具

SQL注入的本质性能

对于输入检查不充分,致使SQL语句将用户提交的非法数据看成语句的一部分来执行。网站

两个条件

  1. 用户可以控制输入
  2. 本来程序要执行的SQL语句,拼接了用户输入的恶意数据

危害

  1. 绕过登录验证:使用万能密码登录网站后台;
  2. 得到敏感数据:获取网站管理员帐号、密码;
  3. 文件系统操做:列目录、读取、写入文件;
  4. 注册表操做:读取、写入、删除注册表;
  5. 执行系统命令:远程执行命令

形成缘由

  1. 动态字符串构建引发
    不正确的处理转义字符(宽字节注入)、处理类型(报错泄露信息)、处理联合查询、处理错误(报错泄露信息)、处理屡次提交(二次注入)
  2. 后台存在的问题
    后台无过滤或者编码用户数据、数据库能够拼接用户传递的恶意代码
  3. 错误信息处理不当
    详细的内部错误消息显示给用户或者攻击者、错误信息能够直接给攻击者提供下一步攻击帮助
  4. 不安全的数据库配置
  • 默认帐户:使用默认帐户进行数据库的操做管理
  • 权限:数据库安装好以后默认许可管理员权限,能够进行一切操做,但正确的作法应该是申请普通身份运行服务器上的服务,并下降用户权限,只限于本服务将此服务与本机其余服务隔离开来。

了解了SQL注入,那么如何实现SQL注入?

实现

SQL注入分为自动化注入手工注入

下边的工具是为自动化注入准备的

全适配工具

Sqlmap【属于SQL注入工具】

单适配工具

穿山甲注入软件 ; 海阳顶端注入软件【只适配于PHP注入】

其余

NBSI , 阿D注入【属于ASP \ JSP 注入工具 】 ; Havij ,Sqlid 【属于SQL注入工具】

而后是手工注入的核心

其过程大体能够总结为:

  1. 判断是否存在注入点;
  2. 判断字段长度;
  3. 判断字段回显位置;
  4. 判断数据库信息;
  5. 查找数据库名;
  6. 查找数据库表;
  7. 查找数据库表中全部字段以及字段值;
  8. 猜解帐号密码;
  9. 登录管理员后台。

引用一句经典的话:SQL注入其实就是数据和代码抢活干

多言无益,我先摆上一个几年前多数网站都有的漏洞

在网站登录界面输入用户名的时候
直接输入SQL代码:‘whoever’;DROP TABLE users;
其原理:
首先执行第一条,分号为分割符,服务器返回错误,而后执行第二条,会删掉整个user表

后期更新,讲SQL注入的其余实例…

相关文章
相关标签/搜索