Sql注入测试--Sqlmap
慕课网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的更多相关文章
- 通过BurpSuite和sqlmap配合对dvwa进行sql注入测试和用户名密码暴力破解
0x1 工具和环境介绍 dvwa:渗透测试环境 BurpSuite:强大的WEB安全测试工具 sqlmap:强大的sql注入工具 以上工具和环境都在kali linux上安装和配置. 0x2 步骤说明 ...
- 详解强大的SQL注入工具——SQLMAP
1. 前言 Windows下的注入工具好的又贵,免费的啊D.明小子等又不好用,我们根本没必要花 时间去找什么破解的havij.pangolin什么的,特别是破解的工具很可能被绑了木马.其实 Linu ...
- sql注入工具sqlmap使用参数说明
Options(选项):--version 显示程序的版本号并退出-h, --help 显示此帮助消息并退出-v VERBOSE 详细级别:0-6(默认为1)Target(目标):以下至少需要设置其中 ...
- 初识sql注入及sqlmap
对于sql注入小白的我,上午在红黑联盟的网站上恶补了一下sql注入的基础知识,(走马观花)似乎明白sql注入是怎么一回事,也看了一些关于sqlmap的资料,再次记录一下吧 下面是关于sqlmap这个工 ...
- java web sql注入测试(3)---现象分析
那为什么出现以上问题呢?这是程序代码层控制不当导致的.如果web前端对输入数据控制严格,会对数据库进行操作的字符串,在客户端做敏感字符转义处理,或者在操作数据库的dao层,使用动态参数的sql,不使用 ...
- java web sql注入测试(1)---概念概述
在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还 ...
- SQL注入测试平台 SQLol -1. 简介与安装
最近下载了SQLol测试了一下,感觉挺好玩的,做一下记录. SQLol是一个可配置得SQL注入测试平台,它包含了一系列的挑战任务,让你在挑战中测试和学习SQL注入语句,SQLol还是比较有创意的项目. ...
- sql注入测试(3)---现象分析
那为什么出现以上问题呢?这是程序代码层控制不当导致的.如果web前端对输入数据控制严格,会对数据库进行操作的字符串,在客户端做敏感字符转义处理,或者在操作数据库的dao层,使用动态参数的sql,不使用 ...
- sql注入测试(1)---概念概述
在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还 ...
随机推荐
- chomd文件权限授予
drwxr -x r- x 什么意思| | | | | | | | | | 12345678910 第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道第2-4位表示这个文件的属主拥 ...
- java基础进阶二:HashMap实现原理分析
HashMap实现原理分析 1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二 ...
- POJ3281(KB11-B 最大流)
Dining Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19170 Accepted: 8554 Descripti ...
- HDU2255(KB10-K 二分图最大权匹配)
奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- JS UNIX 时间戳与时间格式转换
上代码,不多说了,这个没啥说的,记录一下: var date = new Date() // Date 2019-03-05T13:50:39.775Z // 获取1970 至今的毫秒数 var ti ...
- JS之ClassName属性使用
一.style与className属性的对比 在前面的style属性学习中,知道了通过style属性可以控制元素的样式,从而实现了行为层通过DOM的style属性去干预变现层显示的目地,但是这种就是不 ...
- element-ui input组件源码分析整理笔记(六)
input 输入框组件 源码: <template> <div :class="[ type === 'textarea' ? 'el-textarea' : 'el-in ...
- IntelliJ idea 备份与恢复
为了防止突然断电或者电脑突然关机导致idea恢复出厂设置,需要定期备份配置. 一.备份 File---Export Settings 将settings.jar 文件导入到C:\Users\xutin ...
- IDEA项目搭建五——使用JRebel插件实现IDEA热部署
使用IDEA开发时修改了html或js或java代码都需要编译启动浪费了很多时间,所以可以借助热部署插件实现自动编码,每次修改完代码保存后就可以刷新页面看效果很方便,热部署工具有很多在此只推荐JReb ...
- my big day is coming!
明天博士学位论文答辩,给自己加油! 期望一切顺利!