工具简介

  • 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注入,且具有显示数据功能,那么我们可以通过拼接参数进行表的联合查询来盗取所需数据

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

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

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

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

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

使用BurpSuite抓取报文

使用sqlmap -r /etc/test –dbs获取所有数据库名称

初级安全入门——SQL注入的原理与利用的更多相关文章

  1. 初级安全入门——XSS注入的原理与利用

    XSS的简单介绍 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者 ...

  2. Sql注入基础原理介绍

    说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...

  3. SQL注入的原理以及危害

    SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符 ...

  4. 【渗透课程】第五篇-SQL注入的原理

    哈哈哈,讲到注入了.我想给大家讲注入的原理.这个我们前面的前言篇就说过,所谓的SQL注入就是,绕过数据库验证机制直接执行SQL语句.怎么说呢,我们先讲一个概念吧! 网站和网页的区别 单纯的网页是静态的 ...

  5. 简单说说mybatis是防止SQL注入的原理

    mybatis是如何防止SQL注入的 1.首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterT ...

  6. PHP代码审计入门(SQL注入漏洞挖掘基础)

    SQL注入漏洞 SQL注入经常出现在登陆页面.和获取HTTP头(user-agent/client-ip等).订单处理等地方,因为这几个地方是业务相对复杂的,登陆页面的注入现在来说大多数是发生在HTT ...

  7. SQL注入的原理及一般步骤

    原理 SQL注入是一种攻击方式,在这种攻击方式中,恶意代码被插入到字符串中,然后该字符串传递到SQL Server的实例以进行分析和执行.任何构成SQL语句的过程都应进行注入检查,因为SQL Serv ...

  8. 【荐】PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项

    我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...

  9. Java学习笔记47(JDBC、SQL注入攻击原理以及解决)

    JDBC:java的数据库连接 JDBC本质是一套API,由开发公司定义的类和接口 这里使用mysql驱动,是一套类库,实现了接口 驱动程序类库,实现接口重写方法,由驱动程序操作数据库 JDBC操作步 ...

随机推荐

  1. 阿里云 qW3xT.4 挖矿病毒问题

    查了一下.是个挖矿病毒,cpu 占用巨高 .杀了又有守护进程启动.网上有些杀死这个病毒的办法,大家可以试试.但是不确定能杀死. 建议直接重装系统. 然后,说说这货怎么传播的. 他通过redis .目前 ...

  2. Kafka 基本概念学习笔记

    一. 什么是Kafka 面向数据流的生产,转换,存储,消费的整体流处理平台 二.Kafka三大特性 1.发布和订阅数据的流,类似于消息队列,消息系统 2..数据流存储平台 3.当数据产生的时候,对数据 ...

  3. 通过状态机来对axi_lite总线进行操作

    通过状态机来对axi_lite总线进行操作 状态跳转: 1.初始状态 将axi_lite读写两个信道分开进行控制,在初始状态,就根据读,写信号来判断应该跳转到那一个状态. 2.写状态 在写状态中不需要 ...

  4. BT.656 NTSC制式彩条生成模块(verilog)

    BT.656 NTSC制式彩条生成模块(verilog) 1.知识储备 隔行扫描是将一副图像分成两场扫描,第一场扫描第1,2,5,7...等奇数行,第二场扫描2,4,6,8...等偶数行,并把扫奇数行 ...

  5. 时钟分频方法---verilog代码

    时钟分频方法---verilog代码 本文以SDI播出部分的工程为例,来说明一种时钟分频的写法.SD-SDI工程中播出时钟tx_usrclk为148.5MHz,但tx_video_a_y_in端的数据 ...

  6. STL序列式容器学习总结

    STL序列式容器学习总结 参考资料:<STL源码剖析> 参考网址: Vector: http://www.cnblogs.com/zhonghuasong/p/5975979.html L ...

  7. 胖子哥的大数据之路(10)- 基于Hive构建数据仓库实例

    一.引言 基于Hive+Hadoop模式构建数据仓库,是大数据时代的一个不错的选择,本文以郑商所每日交易行情数据为案例,探讨数据Hive数据导入的操作实例. 二.源数据-每日行情数据 三.建表脚本 C ...

  8. Lucene 特殊字符的问题

    SolrQuerySyntax http://wiki.apache.org/solr/SolrQuerySyntax solr的处理方式: https://svn.apache.org/repos/ ...

  9. 【Https】Spring RestTemplete支持Https安全请求

    实现步骤 Step1: 自定义ClientHttpRequestFactory package com.example.demo.https; import org.springframework.h ...

  10. Windows进程单实例运行

    场景         Windows进程单实例运行,如果有进程没有退出,继续等待,直到进程完全退出,才会进入下一个实例 HANDLE pHandle = NULL; do  {  pHandle = ...