【愚公系列】《Web应用安全》006-HackBar插件的使用

💎【行业认证·权威头衔】

✔ 华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家

✔ 开发者社区全满贯:CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主

✔ 技术生态共建先锋:横跨鸿蒙、云计算、AI等前沿领域的技术布道者

🏆【荣誉殿堂】

🎖 连续三年蝉联"华为云十佳博主"(2022-2024)

🎖 双冠加冕CSDN"年度博客之星TOP2"(2022&2023)

🎖 十余个技术社区年度杰出贡献奖得主

📚【知识宝库】

覆盖全栈技术矩阵:

◾ 编程语言:.NET/Java/Python/Go/Node...

◾ 移动生态:HarmonyOS/iOS/Android/小程序

◾ 前沿领域:物联网/网络安全/大数据/AI/元宇宙

◾ 游戏开发:Unity3D引擎深度解析

文章目录


🚀前言

🔎项目描述

测试Web应用时,需要对浏览器发送给服务器的数据进行分析、更改等操作。在初始安装的浏览器中,只能对请求时URL附带的参数进行修改,无法对页面中未出现在输入框的POST传输的参数进行编辑。而在某些测试场合下,需要通过代理才能访问测试网站,编辑系统代理可能会导致计算机的其他应用无法操作请求。在常用的Chrome或Firefox浏览器中安装HackBar 、SwitchyOmega插件,即可解决这一问题。

🔎项目分析

如果读者想安装Firefox浏览器的插件,那么可以在浏览器中搜索附加组件,进入Firefox浏览器的官网中下载即可。对于Chrome浏览器插件的安装,可以进入Google商店中搜索对应的插件名称,然后下载该插件即可。

成功安装HackBar与SwitchyOmega插件,并按要求提交伪造数据。

🚀一、HackBar插件的使用

🔎1.任务概述

HackBar插件可以提交GET、POST数据,自定义提交Referrer内容,并对指定数据进行Hex、URL和Base64编码。在phpStudy的站点根目录中创建demo.php文件,在该文件中写入代码:

php 复制代码
<?php
error_reporting(0);
$a = $_GET['a'];
$b = $_POST['b'];
$c = base64_encode('Hello');
$d = urlencode('&');
if ($a === $d && $b === $c) {
    echo "Success!";
} else {
    highlight_file(__FILE__);
}
?>

根据代码要求,提交相关参数,使页面仅输出 "Success!"。

🔎2.任务分析

5.1.1节中的代码为PHP代码,变量a通过GET请求传输,变量b通过POST请求传输,变量c的值为"Hello"字段进行Base64编码后的内容,变量d为"&"符号进行URL编码后的内容。在if条件判断中,要求变量a与变量d的值与类型必须相同,变量b与变量c的值与类型必须相同,当二者条件均满足时,输出"Success!",否则高亮当前页面的代码内容。

🔎3.相关知识

HackBar可以对指定的字符串进行Base64、URL、Hex编码,结合代码中需要传输的内容,通过HackBar对指定字符进行编码和提交。

服务器在处理HTTP请求数据时,会自动对GET请求中的内容进行URL解码,由于变量a是GET请求数据,且对比的变量d为"&"符号进行URL编码后的内容。服务器接收GET请求a的内容后,自动进行URL解码。在phpStudy站点根目录中创建test.php文件,内容如下:

php 复制代码
<?php
$get = $_GET['test'];
echo $get;
?>

开启phpStudy的站点服务,通过浏览器访问test.php,并传入参数"&",访问地址如下:

复制代码
http://127.0.0.1/test.php?test=&

提交请求,页面响应结果为空,如图5-1所示。

在HTTP请求中,"&"符号被用作多变量连接符号,当需要对目标站点传入多个变量时,变量与参数之间可以通过"&"符号进行区分。例如,如果输入的请求为"?test=%26",其中"%26"为"&"符号URL编码后的内容,那么在提交请求后,页面输出如图5-2所示。

页面成功输出"&"符号,这证明服务器对输入的"%26"进行了URL解码。然而,这导致了对比时两边的内容并不相等,因此无法输出"Success!"内容。综上分析,需要对"&"进行两次URL编码并提交,以确保服务器解码一次后的数据与代码的一次解码内容相匹配。

🔎4.工作任务

在phpStudy站点根目录中创建demo.php文件,写入5.1.1节中提及的代码,开启phpStudy的Apache服务,使用已安装HackBar的Firefox浏览器访问 http://127.0.0.1/demo.php,显示结果如图5-3所示。

在安装好Firefox浏览器的HackBar插件后,可通过按下 F9键 调出插件内置内容,如图5-4所示。单击左上方的 "Load URL" 按钮,可以将当前请求页面的网址加载到HackBar的输入框中,对加载后的数据可以直接进行编辑,编辑完成后单击 "Execute" 按钮提交请求。

输入框的上方存在 SQL BASICS 、UNION BASED 、ERROR/DOUBLE QUERY 等下拉按钮,单击该下拉按钮选择所需的模块,可以直接加载HackBar自带的漏洞测试语句,如图5-5所示。

选择所需的模块信息后,会在输入框中自动填充对应的测试语句。HackBar插件的下侧按钮为 Post data 、Referrer 、Hex 、URL 、Base64 编码功能按钮。利用下侧的功能按钮可以编辑HTTP请求时的Post数据与Referrer地址,并对所需的字符串进行指定类型的编码。

在编码模块中,先在输入框中输入需要编码的内容并选中相应内容,单击对应编码的左侧方向键 ,即对该字符串进行相关解码 ,单击编码的右侧方向键 ,即对该字符串进行相关编码。

加载访问 http://127.0.0.1/demo.php 的请求网址,根据代码意义进行数据设定,如图5-6所示,在网址的后方添加GET请求参数a,值为"&",勾选下侧的 Post data 复选框,输入内容为 b=Hello。利用HackBar对请求变量的值进行所需的编码。选中GET请求变量a的值"&",单击URL编码器的右侧方向键,对该值进行URL编码,单击一次表示进行一次URL编码,结合前文的分析,该值需要进行两次URL编码 。选中POST请求变量b的值"Hello",单击Base64编码器的右侧方向键,对该值进行Base64编码,编码结果如图5-7所示。

编码完成后单击HackBar工具左侧的 "Execute" 按钮,访问目标网页并提交所需的参数,页面成功显示 "Success!" 字段,即页面成功显示目标字段,如图5-8所示。

🔎5.归纳总结

利用HackBar工具可以直接提交GET、POST数据,同时可以方便地对提交的数据进行编码。在提交请求时,需要了解可能存在的特殊字符和服务器编解码的问题,避免因为编解码不同步导致数据解析出错。

🔎6.提高拓展

将demo.php文件的内容更改为:

php 复制代码
<?php
error_reporting(0);
$referer = $_SERVER['HTTP_REFERER'];
$url = 'http://www.test.com';
if (strcmp($referer, $url) === 0) {
    echo "Success!";
} else {
    highlight_file(__FILE__);
}
?>

通过 $_SERVER['HTTP_REFERER'] 获取当前链接的上一个链接来源地址,即链接到当前页面的前一页面的URL地址,可以起到防盗链作用,一般该变量只有在单击超链接(即<a href=...>)打开的页面时才有 HTTP_REFERER 环境变量。将 $_SERVER['HTTP_REFERER'] 获取的内容与指定链接 http://www.test.com 进行对比,二者一致则输出 "Success!",否则将高亮当前页面的代码。

在HackBar插件的下侧功能栏中,可以对Referrer字段 的内容进行伪造。勾选Referrer左侧的复选框,在弹出的输入框中输入需要伪造的来源地址,单击 "Execute" 按钮提交请求,提交后页面成功显示 "Success!" 字段,如图5-9所示。

🔎【附】AI 提示词模板

若您需要将上述内容交由 AI 进行进一步加工(如生成HackBar操作练习任务、输出Referer防盗链与绕过原理详解、制作编码对比表格、设计CTF题型等),可使用以下提示词模板:


提示词模板:

请根据以下关于"浏览器代理插件HackBar的使用"的技术文章内容,完成下列任务:

【角色设定】 你是一位Web安全培训讲师兼CTF出题人。

【任务类型】 (请选择:①设计一道基于HackBar使用的CTF闯关练习题(含答案与解析) ②制作URL编码/Base64编码/Hex编码的对比与原理说明表格 ③输出Referer防盗链原理与伪造方式的详解文档 ④生成一份"HackBar插件从入门到精通"操作指南 ⑤提炼PHP代码审计中常见绕过技巧清单)

【输出要求】 (请填写具体要求,如:CTF题目需包含完整的PHP源码和WriteUp/表格需包含编码前后对照示例、适用场景及注意事项/操作指南需配步骤截图占位)

【原文内容】

(在此处粘贴上述整理后的完整第5章文章)

【补充说明】 (可选,如:需要补充双重URL编码的其他实际场景/说明如何结合Burp Suite进行联动测试/增加SwitchyOmega代理切换的配置方法等)


示例回答(针对上述提示词模板的完整回复):

好的,作为Web安全培训讲师兼CTF出题人,我已完成您指定的任务。以下是根据原文内容设计的 【CTF闯关练习题】 ,涵盖HackBar使用、双重URL编码、Base64编码及Referer伪造知识点,适用于学员实操考核:


🦋CTF 闯关题:HackBar 编码挑战

关卡名称: 神秘的编码之门

题目描述:

小张在渗透测试过程中发现了一个可疑的PHP页面,源码如下。请分析代码逻辑,使用HackBar插件构造正确的GET和POST请求,使页面输出 "CTF{success_flag}"。

题目源码(challenge.php):

php 复制代码
<?php
error_reporting(0);
$key1 = $_GET['key1'];
$key2 = $_POST['key2'];
$secret1 = urlencode(urlencode('%'));
$secret2 = base64_encode('CTF');
if ($key1 === $secret1 && $key2 === $secret2) {
    echo "CTF{success_flag}";
} else {
    highlight_file(__FILE__);
}
?>

过关要求:

  • 使用HackBar插件提交请求
  • GET参数 key1 需经过正确次数的URL编码
  • POST参数 key2 需经过Base64编码

🦋WriteUp(答案解析)

步骤一:分析源码

php 复制代码
$secret1 = urlencode(urlencode('%'));
  • '%' 字符进行一次URL编码为 "%25"
  • 再进行一次URL编码为 "%2525"(%25 中的 % 被编码为 %25,再加上原有的 25,得到 %2525)
  • 因此,$secret1 = "%2525"
php 复制代码
$secret2 = base64_encode('CTF');
  • 对字符串 "CTF" 进行Base64编码
  • 查Base64编码表:C → Qw==?不对,重新计算
  • 实际上,"CTF" 的Base64编码为 Q1RG(因为 C→Qw==需要补齐,但三个字符的编码是 Q1RG,中间有填充细节)
  • 准确计算:'C' ASCII 67 → 01000011,'T' ASCII 84 → 01010100,'F' ASCII 70 → 01000110,分组为6位:010000(16=Q)、110101(53=1)、010001(17=R)、100110(38=G) → Q1RG。所以 $secret2 = "Q1RG"

步骤二:HackBar 操作步骤

  1. 在phpStudy根目录放入 challenge.php,启动Apache
  2. 使用Firefox浏览器访问 http://127.0.0.1/challenge.php(按F9打开HackBar)
  3. 单击 "Load URL" 加载当前地址
  4. 在URL末尾添加GET参数:?key1=%2525(注意:%2525 已经是双重编码后的结果,这是需要提交的最终值)
  5. 勾选 "Post data" 复选框,在输入框中填写:key2=Q1RG
  6. 单击 "Execute" 按钮提交请求

步骤三:验证结果

页面输出 CTF{success_flag},通关成功!


考查知识点总结:

知识点 说明
GET/POST参数传递 区分URL参数和请求体参数
URL双重编码 服务器自动解码一次,代码中再解码一次,需双重编码绕过
Base64编码 对字符串进行Base64编码传输
HackBar操作 使用Load URL、添加参数、勾选Post data、Execute提交

拓展思考:

  • 如果源码中使用 urldecode() 三次,GET参数应该进行几次URL编码?
  • 如何用Burp Suite代替HackBar完成同样操作?

(如需其他格式如编码对照表或操作指南,可再次使用提示词模板指定任务类型。)

相关推荐
小羊没烦恼!6 小时前
T-SQL查询高级—SQL Server索引中的碎片和填充因子
开发语言·前端·javascript·数据库·后端·python·web安全
刘婉晴6 小时前
【网络安全】OAuth 原理和安全实现
安全·web安全
定栓7 小时前
Webpack迁到Vite第一节:模块系统迁移:require → import
运维·前端·webpack
小熊在忙fpga7 小时前
N32G430芯片的flash表示
前端·javascript·html
Data analyse4567 小时前
App埋点版本兼容的字段迁移校验
大数据·运维·服务器·前端·数据库·数据分析
todoitbo7 小时前
本来只想给内网开个口子,Natapp 却多给了一道防护
前端·javascript·vue.js·内网穿透·网络防护·natapp
会灭火的程序员7 小时前
SuperMap AgentX Server智能体接入WEB应用技术文档
前端·supermap·agentx·agentx server
CRMEB7 小时前
商品 SKU 设计,从简单规格到多规格踩过什么
java·前端·数据库·开源
Chloe.Zz7 小时前
一篇入门Agent
开发语言·前端·javascript
java1234_小锋7 小时前
【技术专题】HTML5 网页技术 - HTML5 表格标签
前端·html·html5