【愚公系列】《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浏览器中安装HackBarSwitchyOmega插件,即可解决这一问题。

🔎项目分析

如果读者想安装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 BASICSUNION BASEDERROR/DOUBLE QUERY 等下拉按钮,单击该下拉按钮选择所需的模块,可以直接加载HackBar自带的漏洞测试语句,如图5-5所示。

选择所需的模块信息后,会在输入框中自动填充对应的测试语句。HackBar插件的下侧按钮为 Post dataReferrerHexURLBase64 编码功能按钮。利用下侧的功能按钮可以编辑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编码表:CQw==?不对,重新计算
  • 实际上,"CTF" 的Base64编码为 Q1RG(因为 CQw==需要补齐,但三个字符的编码是 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完成同样操作?

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

相关推荐
超爱吃香菜的菜鸟1 小时前
关于pnpm 部分使用(一)
前端·vue.js
Vuji1 小时前
Pi 插件解剖|git-checkpoint.ts:只用 53 行,让 fork 恢复代码状态
前端·agent
大家的林语冰2 小时前
✌️ 让 Rust 再次伟大,pnpm 12 抛弃 TypeScript,移植 Rust 原地起飞!
前端·javascript·node.js
XPoet3 小时前
AI 编程工程化:实战——从 0 到 1 搭建 AI 编程工作流
前端·后端·ai编程
-今昭-3 小时前
Logstash 管理
java·服务器·前端
名字还没想好☜3 小时前
React 用自定义 useDebounce Hook 治好搜索框频繁请求:防抖、竞态取消与卸载清理
前端·javascript·react.js·react·hooks
杉氧3 小时前
Flutter 跨平台多端适配与 Android/iOS 一键自动化打包发布
android·前端·flutter
障碍的枫子3 小时前
xss和CSRF的攻击和防御
前端·xss·csrf
用户921080262864 小时前
3. 给 Bubble 新增一个 Agent Variant
前端