渗透测试工具之sqlmap

  1. sqlmap是什么

在这个数据有价的时代数据库安全已经成为了重中之重,于是就整理了一下最常用的一款(反正我上大学的时候它还是蛮流行的...)数据库安全方面的渗透测试工具sqlmap的使用笔记。

sqlmap是一个自动化的sql注入渗透工具,指纹检测、注入方式、注入成功后的取数据等等都是自动化的,甚至还提供了一个字典来将取回来的hash爆破,当然对于真实环境中这爆破功能战斗力基本为0....

sqlmap是使用python写的,因此具有跨平台的特性,并且下载下来解压就可以使用啦,因此下载安装部分不再介绍。

2. 如何使用

模拟一个真实的场景,我写了一个有sql注入漏洞的登录接口作为测试用来练习sqlmap的使用,就拿它开刀来取得一个合法的登录口令。

step 1. 检测注入点

首先检测参数是否可注入:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar"

需要注意的是上面的url一定要用引号括起来不然会报错的。

按照提示一步一步选择即可,如果觉得选项太多太麻烦可以使用--batch来让程序自己个选择:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch

如果可以注入的话,结果应该是类似于这个样子的:

image

 

上面的意思就是发现了两个注入点,这两个注入点就是传入的username和passwd参数。

step 2. 取数据

当手中有了注入点的时候,就相当于是有了这个数据库的访问权,接下来把需要的数据取回来即可。

想象一下登录口令一定存放在某张表下,可是我连这台机器上都有哪些数据库都不知道该怎么办呢,--dbs查看数据库:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch --dbs

我自己机器数据库有些不可描述的库,我打了下码,大致就是这个样子吧:

image

我是能看到有哪些数据库了,但这有毛线用啊,我想知道的是这个应用程序当前使用的数据库是哪个啊,使用 --current-db:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch --current-db

image

啊我看到了当前的数据库是sql_inject_demo,我要赶紧知道这个库下面都有哪些表:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch -D sql_inject_demo --tables

image

啊,可恶,忘了多做几张混淆视听的表了,在实际环境中一般都会有百八十张表差不多的,但是存储用户的一般脑回路正常的都会跟user这个词沾边的,所以确定到底是哪个表是用户表难度还是蛮低的,好了这一关权当放水通过了,接下来我要看这张表中都有哪些字段,因为我需要用户名和密码这两个列的数据,但是首先我得知道存储这两个字段的列名字,所以看一下这个用户表的表结构:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch -D sql_inject_demo -T t_user --columns

image

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsszf.html