慕课网sqlmap学习笔记:

一、SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

例如

(1)在url上添加参数请求查询:http://index.com/?id=1

以上是通过url查询id为1的数据,但如果我们在后面传参这样写:http://index.com/?id=1' or '1'='1

那么执行的查询语句就是where xx='1' or '1'='1',这样查询的就是全部的数据。

(2)或者是登录时的免密登录,在传参的时候将注释符号#传入,注释后面密码的查询和验证,这样就可以只通过用户名免密登录

用户名:' or 1=1#

这样查询语句执行的就是:where username='' or 1=1# and password='',直接注释掉密码的验证

(3)对数据表的恶意操作

传入的参数为 or 1=(drop xx from xx)等,可以对数据表进行删除操作,所以sql注入的安全性问题很重要,sql注入是在保证查询where语句恒真的情况下可以对数据表做任意操作

(4)资源枚举,其实就是通过枚举法也就是穷举法对数据库名,备份数据库名,数据表名,列名等进行猜测,然后通过服务器返回的错误提示中得到信息,便可以进行sql注入操作。

而为何一些表单提交和输入文本框中的请求可以sql注入呢,就是后端没有对用户输入的数据进行过滤验证。所以判断是否可以进行sql注入是我们即将进行sql注入攻击的第二步。

第一步是确定我们要进行sql注入的地方。

第二步尝试性地输入一个使wehre查询语句恒真的语句,通过返回的错误的提示可以知道该输入域是否对输入的字符串进行过滤

第三步可以通过猜测表名,列名等方法可以测试

二、sql注入工具--Sqlmap

Sqlmap是一款自动化sql注入的工具,其功能强大,支持多种数据库,包括mysql,sqlserver等主流的数据库,采用独特的sql注入方法来达到自动化注入扫描漏洞的目的。

1)基于布尔的盲注(Type:boolean-based blind),即可以根据返回页面判断条件真假的注入。
   2)基于时间的盲注(Type:time blind),即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
   3)基于报错注入(Type:error-based),即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
   4)联合查询注入(union query),可以使用union的情况下的注入。
   5)堆查询注入,可以同时执行多条语句的执行时的注入

1、sqlmap环境搭建

(1)python2.7版本下载

(2)sqlmap下载:http://sqlmap.org/,将sqlmap文件放在python2.7的文件夹下

(3)环境变量设置,添加sqlmap文件夹的环境变量

(4)打开命令窗口,输入sqlmap.py -h则安装成功

2、测试环境搭建

搭建一个包含了sql注入,xss等漏洞的测试环境以便学习sql注入知识点。

安装php环境:由于源码是php的则需要安装php的环境

(1)安装php环境:wampserver下载安装:Apache+mysql+php集成安装环境,简化该集合环境安装配置流程,减少了环境配置的繁琐

问题1:安装完成后打开时报错:

解决方案:http://blog.csdn.net/xiaoqiang_0719/article/details/52785604

下载安装:

重启电脑即可。如果还是弹出该错误,首先检查下下载的软件是32位的还是64位的,第二可以卸载wampserver重新下载安装即可。

问题2:wampserver本地环境启动后显示橙色不显示绿色

解决方案:http://www.xuewangzhan.net/wenti/10270.html

80端口号被占用,修改端口号即可

将wampserver>bin>apache>apachex.xx>httpd.conf文件以下信息的端口号换成8080

Listen 0.0.0.0:80
Listen [::0]:80

改成:

Listen 0.0.0.0:8080
Listen [::0]:8080

右键图标refresh即可。

(2)准备测试源码dvwa:https://github.com/ethicalhack3r/DVWA

a.下载dvwa解压,解压到运行代码的位置,即将解压的安装包放在wampserver下的www文件夹下

b.复制dvwa解压的路径

c.图标鼠标右键Apache>http.config,修改文件

d.添加host:计算机>c盘>windows>system>drivers>etc>hosts,文件结尾添加127.0.0.1  dvwa的域名:dvwa.localhost,即127.0.0.1  dvwa.localhost,修改时显示权限不足时,在弹出的窗

口点击是即可

e.测试是否域名添加成功:打开命令窗口,ping dvwa.localhost

f.重启wampserver

(3)修改配置文件,添加数据库账号

a.打开dvwa>config>复制config文件,将文件后缀名改为php结尾

b.打开config.inc.php,修改用户名,密码,端口号(3306)

用户名为root,密码修改为空,端口号5432改为3306

c.浏览器打开http://localhost:8080/dvwa/setup.php,进入安装界面

d.点击Create/Reset Database创建数据库,过会页面会自动跳转到登录页面:

e.数据库的登录账号和密码获取:右键dvwa图标>phpMyadmin>users表:admin/password

f.登录dvwa,默认的用户名和密码为:admin/password,进入到以下的页面

3、sqlmap使用

(1)获取系统的基本信息

登录dvwa,设置安全的等级,设置为low,网站的安全等级为low时才能进行注入测试。

点击SQL injection输入注入的信息,复制注入信息后提交的url

a.sqlmap的参数格式:

sqlmap.py -u 目标地址

sqlmap.py -u "http://localhost:8080/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="" --batch                      #不加入地址后面的#

查找注入点以及可注入的方式,得到数据库是mysql,以及数据库的版本,注入点的参数为id

sqlmap.py -r 保存的请求头文件:

谷歌浏览器>测试的网站右键>检查

>Networks>F5重新加载网站>选中网址信息右键>copy>copy request header

在sqlmap文件夹下新建一个文本文件重新命名,将复制的头文件的信息粘贴保存

(2)sqlmap数据库检测

通过sqlmap获取数据库的数据

a.查看数据库

sqlmap.py -u 目标地址 --cookie=“” --dbs:查看数据库名称

查找大数据库的名称为‘dvwa’

b.扫描数据表

查看数据库表名称:sqlmap.py -u 目标地址 --cookie=“” --table:查询出所有数据库的所有表

查询数据表数据:sqlmap.py -u 目标地址 --cookie=“” --dump:查询出所有数据表的所有数据

c.导出数据

sqlmap.py -u 目标地址 --cookie=“” --dump-all

e.指定数据库查询

dvma下所有数据表数据

(1)指定数据库名称查找数据表:sqlmap.py -u 目标地址 --cookie=“” -D 数据库名称 --dump

指定dvwa数据库查找到两个表:users,guestbook,查询结果:

(2)指定数据表名称查找数据表的数据:sqlmap.py -u 目标地址 --cookie=“” -D 数据库名称 --dump -T 数据表名称

指定查找dvwa数据库users数据表的数据查询结果:

(3)指定查询users表的表结构:

查询结果:

(4)破解密码

查询到了users表的数据后发现密码都是md5加密存储的

可以网上直接搜索md5解密,将加密后的字符解密后得到的admin用户的密码为:password

另外,也可以用sqlmap自带的字典破解密码:

在获取users数据表的过程中会出现问题选择,询问是否破解密码

最后破解密码显示为:

括号内的为破解后的密码

4、sqlmap 注入post

1、post注入参数介绍

2、如何使用post请求注入

sqlmap.py -u "url" --cookie="" --data=“post源码” --batch --smart

注:--batch --smart启发式判断,batch自动执行yes,smart智能判断

post源码的获取:

(1)dvwa网站>xss stored>输入参数点击提交

(2)复制提交后的url

(3)谷歌浏览器>测试的网站右键>检查>Network,复制cookie以及Form Data

选择view source复制:

(4)运行post注入测试

(5)刷新dvwa的网站查看注入的结果

3、如何快速地批量注入测试

sqlmap.py -l txt文件名 --batch --smart

text文件:请求的地址,请求的头信息以及Form Data即post源码信息

(1)谷歌浏览器>测试的网站右键>检查>Network,Request Header>view source

(2)新建text文件,第一行填写请求的网站地址及端口号,第二行开始粘贴复制的Request Header,最后粘贴复制的Form Data的view source信息,如下所示:

(3)多个请求即批量注入,复制添加以上信息放在文件的后面,用分割符区分开保存即可
5、批量检测注入漏洞

sqlmap.py -g "url匹配" --batch --smart

url匹配使用谷歌搜索语法,由于谷歌浏览器没有翻墙,这个后期补充上笔记。

三、防护sql注入

那么,如何防护sql的注入呢

(1)永远不要相信用户的输入,必须对用户的输入进行校验,过滤,可以通过正则表达式,输入的字符长度限制但双引号,转义字符等,可以前后端进行结合对用户的输入验证

(2)重要的数据等不能明文显示,必须加密

(3)不要用管理员的权限登录数据库,可以在数据库的安全性文件夹-架构-新建架构,然后在数据表上添加架构的名称,查询数据表时需要在表明前面加上架构的前缀才能查询,这样有效防止对数据表名的猜测。

(4)对于系统的错误提示尽可能少,或者对其提示进行改变,隐藏不必要的系统信息。

Sql注入测试--Sqlmap的更多相关文章

  1. 通过BurpSuite和sqlmap配合对dvwa进行sql注入测试和用户名密码暴力破解

    0x1 工具和环境介绍 dvwa:渗透测试环境 BurpSuite:强大的WEB安全测试工具 sqlmap:强大的sql注入工具 以上工具和环境都在kali linux上安装和配置. 0x2 步骤说明 ...

  2. 详解强大的SQL注入工具——SQLMAP

    1. 前言  Windows下的注入工具好的又贵,免费的啊D.明小子等又不好用,我们根本没必要花 时间去找什么破解的havij.pangolin什么的,特别是破解的工具很可能被绑了木马.其实 Linu ...

  3. sql注入工具sqlmap使用参数说明

    Options(选项):--version 显示程序的版本号并退出-h, --help 显示此帮助消息并退出-v VERBOSE 详细级别:0-6(默认为1)Target(目标):以下至少需要设置其中 ...

  4. 初识sql注入及sqlmap

    对于sql注入小白的我,上午在红黑联盟的网站上恶补了一下sql注入的基础知识,(走马观花)似乎明白sql注入是怎么一回事,也看了一些关于sqlmap的资料,再次记录一下吧 下面是关于sqlmap这个工 ...

  5. java web sql注入测试(3)---现象分析

    那为什么出现以上问题呢?这是程序代码层控制不当导致的.如果web前端对输入数据控制严格,会对数据库进行操作的字符串,在客户端做敏感字符转义处理,或者在操作数据库的dao层,使用动态参数的sql,不使用 ...

  6. java web sql注入测试(1)---概念概述

    在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还 ...

  7. SQL注入测试平台 SQLol -1. 简介与安装

    最近下载了SQLol测试了一下,感觉挺好玩的,做一下记录. SQLol是一个可配置得SQL注入测试平台,它包含了一系列的挑战任务,让你在挑战中测试和学习SQL注入语句,SQLol还是比较有创意的项目. ...

  8. sql注入测试(3)---现象分析

    那为什么出现以上问题呢?这是程序代码层控制不当导致的.如果web前端对输入数据控制严格,会对数据库进行操作的字符串,在客户端做敏感字符转义处理,或者在操作数据库的dao层,使用动态参数的sql,不使用 ...

  9. sql注入测试(1)---概念概述

    在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还 ...

随机推荐

  1. Python发送短信提醒

    Python发送短信可借助腾讯云平台提供的短信服务 发送短信需要的及格参数: 1.SDK_AppID和SDK_Key 2.签名: 3.模板ID 下面贴出源码DEMO: from qcloudsms_p ...

  2. Android-事件分发(ViewGroup)

    http://blog.csdn.net/guolin_blog/article/details/9153747 http://blog.csdn.net/lmj623565791/article/d ...

  3. 面试中常问的List去重问题,你都答对了吗?

    面试中经常被问到的list如何去重,用来考察你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固. 我们大家都知道,set集合的特点就是没有重复的元素.如果集合中的数据类型是基本 ...

  4. 解决 iframe 后退不是主页面后退(浏览器 history)问题

    前言:项目中的主页面里有 iframe,切换 iframe 的 src 地址之后,再点浏览器的回退之后,会导致 iframe 里面回退,而不是主页面回退. 问题 浏览器机制的原因,在 iframe 导 ...

  5. NIO学习笔记五:Buffer 的使用

    Java NIO中的Buffer用于和NIO通道进行交互.数据是从通道读入缓冲区,从缓冲区写入到通道中. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO Buffe ...

  6. 用eclipse 搭建struts2环境

    一,下载struts2对应的jar包,(http://struts.apache.org/download.cgi#struts2514.1),我一般下载struts2.3版本的 二,打开eclips ...

  7. onkeyup小练习

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 排错-windows下 ORA-12560 TNS 协议适配器错误解决方法

    排错-windows下_ORA-12560 TNS 协议适配器错误解决方法 by:授客 QQ:1033553122 问题描述: 修改SQL*Plus窗口属性后,重新打开SQL*Plus时出现ORA-1 ...

  9. NetBeans 打开项目中文乱码最简单的解决办法

    网上各种修改配置文件,中文乱码还是没有解决,其实不是NetBeans的问题,是编辑器设置的字符集不支持中文,最简单的办法:!!! 设置新字体即可 !!!

  10. Linux服务器ftp+httpd部署

    一.ftp安装 1.安装vsftpd 命令:yum -y install vsftpd 2.修改ftp配置文件 命令:vim /etc/vsftpd/vsftpd.conf 3.按i进入insert模 ...