Charles使用教程

news2024/11/17 1:44:28

目录

  • 预备知识
    • 1.HTTP调试代理工具原理
    • 2.Charles简介
  • 实验目的
  • 实验环境
  • 实验步骤一
  • 实验步骤二
  • 实验步骤三

预备知识

1.HTTP调试代理工具原理

HTTP调试代理工具广泛应用于web程序开发、安全测试、流量分析等工作。HTTP调试代理工具工作于TCP/IP参考模型中的应用层,浏览器连接HTTP调试代理工具设置的代理端口后所有满足自定义规则的发往服务器的请求将发送至该工具,用户可以通过该工具确定该流量是否发送至服务器,同时可以修改请求数据(HTTP Request data)和响应数据(HTTP Response data)。HTTP数据流向如图1所示,其中实线表示HTTP请求,虚线表示HTTP响应。从功能实现角度来看,HTTP调试代理工具需要实现如下4项功能:1.解析HTTP数据,如:解析HTTP请求数据和响应数据;2.修改HTTP数据,如:在设置断点后,可修改浏览器发送过来的请求数据,或者修改服务器响应的数据;3.重定向请求,如:利用本地文件替换远程文件,调试线上的js/css代码;4.构造请求,如:构造请求发送数据,比如可以构造畸形HTTP数据来测试网站安全性。
在这里插入图片描述

2.Charles简介

Charles是一款常用的HTTP调试代理工具,除了Charles以外常见的HTTP调试代理工具还有有burp suite和fiddler。三种不同的HTTP调试代理工具有不同的优点,相比较而言:burp suite的优势在于功能强大、流量过滤规则丰富;fiddler的优势在于功能简单、流量过滤规则设置方法简单;Charles的优势在于用户交互性能更友好,既可以将流量按照时间序列分组也可以按照域名分组。除此之外,随着更多的网站启用HTTPS,在网络调试过程中捕获HTTPS数据包的场景越来越多,使用burp suite和fiddler都需要先处理好SSL证书的问题,但是Charles工具内置了SSL证书处理机制,几步简单的操作即可添加SSL证书到根证书,使得捕获HTTPS数据更加便捷。

实验目的

通过本实验了解HTTP调试代理工具的运行原理,掌握Charles常见功能使用方法。

实验环境

在这里插入图片描述
实验拓扑图:
攻击主机/漏洞主机:win7,IP地址:10.1.1.10。
辅助工具:xampp、Charles。
Charles工具请在实验机内下载使用:http://tools.hetianlab.com/tools/charles.zip。

实验步骤一

本实验从介绍Charles的基本配置开始到详细讲解Charles的捕包、重复发包、文件映射、DNS欺骗等功能的使用方法,最后介绍如何使用Charles完成文件上传绕过攻击。
1.Charles基本配置与基本功能介绍。
2.Charles的数据包修改、重复发包、文件映射、DNS欺骗和模拟慢速网络等功能的使用。
3.使用Charles完成文件上传绕过攻击。
任务描述:介绍Charles的基本配置信息和基本功能。
1.Charles界面如下:
todo
其中工具栏显示了最常用的十个功能图标,标号1-10的图标表示的功能为:
1)清除当前会话下的所有HTTP数据包。
2)开启/关闭HTTP数据包记录功能。
3)开启/关闭模拟慢速网络功能。
4)开启/关闭断点。
5)基于选中HTTP请求生成新的HTTP请求。
6)重放选中HTTP请求。
7)验证HTTP响应(HTML、CSS、RSS/Atom数据)是否符合w3c规范。
8)购买序列号。
9)工具箱。
10)设置。
2.Charles提供了HTTP代理、SOCKS代理、反向代理三种代理。
配置Charles的HTTP代理功能有两种方法,一是在菜单栏【Proxy-Proxy settings-Proxies】选项设置HTTP代理端口和SOCKS代理端口,然后在浏览器上或者其他移动客户端上根据Charles的代理地址和端口设置代理。
在这里插入图片描述
在这里插入图片描述
二是在菜单栏【Proxy-Windows proxy】选项中选中Charles将Charles设置成windows全局代理,这样做的好处是windows平台所有软件默认使用Charles作为代理。
配置和使用SOCKS代理的方法与HTTP代理类似。
配置反向代理,在菜单【Proxy-Reverse Proxies Settings】选项中可以配置远程映射的端口,比如下面的配置将remoteip.com:80端口映射到本地1080端口,本地访问1080端口将获得remoteip.com:80返回的数据。
在这里插入图片描述
3.在使用Charles时经常用到的功能是:
自动忽略无关域名流量的功能,在菜单【Proxy-Proxy settings-Options】选项设置自动忽略数据包的域名信息,下图设置将忽略所有www.google.com域名的流量:
在这里插入图片描述
设置聚焦域名流量功能,在菜单【View-Focused Hosts】选项设置关心域名信息,比如此处关心localhost的流量,如下图设置即可。
在这里插入图片描述
4.Charles有两种方法对流量进行分组,一是按照域名对流量进行分组:
在这里插入图片描述
二是按照时间序列对流量进行分组:
在这里插入图片描述
5.Charles有三种筛选流量的方式:
如下图所示,在Filter表单中直接输入关键词进行过滤,此方法适合临时性筛选流量。
在这里插入图片描述
在菜单【Proxy-Recording Settings】选项中既可以设置留下哪些流量(Include)也可以设置删除哪些流量(Exclude),此方法适合永久性筛选流量,在捕获流量前设置好规则可以减少捕获的流量数目。
在这里插入图片描述
在这里插入图片描述
选中流量后,右键选中Focus选项,逐个筛选流量,之后选中流量列表右下方的Focused按钮,即可展示所有选中的流量。此方法适合筛选那些无法通过域名来准确识别的流量。
todo
在这里插入图片描述
6.捕获HTTPS数据包前需要安装Charles颁发的SSL证书。点击菜单【Help-SSL Proxying-Install Charles Root Certificate】后,直接点击安装证书即可。
todo
在这里插入图片描述
菜单【SSL Proxy Setting】配置SSL代理。
在这里插入图片描述
下图是设置Charles进行SSL Proxy设置前后捕获的HTTPS数据差异对比图,左图明显都是乱码:
todo

实验步骤二

任务描述:介绍Charles常用功能,按使用频率高低逐个介绍,大部分功能见【Tools】菜单。具体讲解Charles的数据包修改、重复发包、文件映射、DNS欺骗、模拟慢速网络等功能的使用。
1.Compose/Compose Request,编辑HTTP请求来适应测试需求,比如构造畸形HTTP请求测试服务器的异常处理机制。
在这里插入图片描述
2.Repeat/Advanced Repeat,重复发送数据包,比如使用Charles刷票,或者测试服务器的高并发处理性能。
在这里插入图片描述
3.DNS Spoofing Settings,DNS欺骗功能,比如APP测试时,APP访问线上服务器一般是通过域名的方式来进行,这些域名往往都硬编码在程序中,我们可以将线上服务器的域名重定向至测试服务器的域名来进行测试。下面的实验将baidu.com重定向至本地IP,访问baidu.com的效果如图。
在这里插入图片描述
在这里插入图片描述
4.Throttle Setting,模拟慢速网络:
本功能主要应用于测试移动APP在慢速网络或高延迟网络情况下的性能差异,如下图所示可选择多种网络模式,并可自行修改MTU等参数。
在这里插入图片描述
5.No Caching Settings,不对数据包进行缓存:
启用该功能后,Charles会在每个HTTP请求中自动添加如下请求头:

pragma:no-cache
Cache-Control:no-cache

在这里插入图片描述
6.Block Cookies Settings,阻止网站返回Cookie。
7.Map Remote Settings,将网络请求文件替换成远程文件,比如将线上服务器的访问请求都重定向到测试服务器,降低线上服务器的压力。
8.Map LocalSettings,将网络请求文件替换成本地文件。该功能在web前端测试的过程中应用比较普遍,比如web前端做测试时在不方便把css文件直接部署到线上服务器的情况下,可以用本地写好的css文件代替线上css文件进行测试。
9.Rewrite Settings,对某一类网络请求进行正则替换,比如将HTTP请求中的用户名admin替换成另一个用户的用户名user。
10.Black List Settings,网络访问黑名单策略,黑名单中的流量将被丢弃或者返回403信息,如下图所示。
在这里插入图片描述
在这里插入图片描述
11.White List Settings,网络访问白名单策略,只有满足白名单规则的流量才可以通过,其它的流量被丢弃或者返回403信息。
12.Mirror Settings,将HTTP响应数据保存到本地磁盘,供后期分析和研究使用。

实验步骤三

任务描述:使用Charles完成文件上传绕过攻击(用本机模拟的,先将下载的upload.php放到C:\WWW路径下,并在C:\WWW路径下新建一个名为uploads的文件夹)
1.访问http://10.1.1.10/upload.php,可上传图片至服务器,上传test.php文件提示如下图。upload.php文件存在文件上传漏洞,服务器程序仅仅验证上传文件的类型(Content-Type参数)是否为图片,而Content-Type参数是可以在前端修改的。
在这里插入图片描述
在这里插入图片描述
2.点击Proxy→Breakpoints Settings设置断点如下,并启用Charles断点。
在这里插入图片描述
在这里插入图片描述
3.访问http://10.1.1.10/upload.php,上传一个test.php文件,修改Charles中的数据包。
数据包修改前:
在这里插入图片描述
将数据包的Content-Type参数修改为image/jpeg:
在这里插入图片描述
4.php文件上传成功,使用Charles修改Content-Type参数绕过服务器端对上传文件的检测。访问上传文件http://10.1.1.10/uploads/test.php,结果如图。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11970.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker容器的5个实用案例

Docker 是一个开源平台,可以轻松地为任何应用创建一个轻量级的、 可移植的、自给自足的容器。大多数 Docker 容器的核心是在虚拟化环境中运行的轻量级 Linux 服务器。 Docker Linux 容器有什么实际用例吗?现在让我们一探究竟。 为什么使用 Docker? D…

力扣(LeetCode)792. 匹配子序列的单词数(C++)

二分查找 直观思考,本题可以将 wordswordswords 中每个单词 wordwordword 依次和目标字符串 sss 比较,检查是否为子串。时间复杂度 n∑i0m−1wordsin\times \sum_{i0}^{m-1}words_in∑i0m−1​wordsi​ nnn 是 sss 的长度, mmm 是 wordswordswords 的长…

壁纸号的玩法,拿出来收费未免也太坑人了,所以,直接上教程。

网上关于斗音变现的攻略写得比较少,可以理解为目前仍是风口,都在闷声发大财,虽然我也做知识付费,但是这壁纸号的玩法,拿出来收费未免也太坑人了…… 所以,直接上教程…… 一、准备斗音号 这一块不用多说&…

数据结构之实现队列

文章目录前言1.队列的相关介绍1.队列的定义2.队列的实现方式2.队列具体实现1.队列声明定义2.队列的接口1.初始化接口2.数据的插入和删除3.获取队头元素和队尾元素4.获取队列元素个数和队列判空以及队列3.总结前言 之前谈到了栈的实现,现在来说说另一种数据结构——…

[hadoop全分布部署]虚拟机Hadoop集群配置/etc/hosts、配置无密码登录(SSH)

👨‍🎓👨‍🎓博主:发量不足 个人简介:耐心,自信来源于你强大的思想和知识基础!! 📑📑本期更新内容:虚拟机Hadoop集群配置/etc/hosts…

Centos 7下安装php+mysql+nginx+wordpress教程新版

安装zsh+oh-my-zsh 安装zsh的原因是因为不喜欢自带的ssh工具,感觉没有这个好用,我最常用的就是记忆功能,比如输入某个字母,按上下键会自动补全已经使用过的命令,安装也很简单,一条命令搞定,他的扩展也很多,这里只讲最简单的安装,当然也可以不需要安装。 执行yum inst…

Linux基本指令

这一章我们将讲解在Linux系统下,一些基本指令的用法和功能. 后面有一些重要的指令我们将单独讲解. 目录 ls 指令 pwd 指令 cd 指令 touch 指令 mkdir 指令★ rmdir 指令 && rm指令★ man 指令★ cp 指令 ★ mv 指令★ cat && tac指令 e…

nodejs+vue毕业生就业知道信息平台系统

大学毕业生招聘系统分三个身份登录,一个学生,一个管理员,一个是企业用户。学生可以注册登录管理自己的简历,应聘职位,企业用户可以发布招聘,收到应聘信息,查看学生简历,收藏学生简历,而管理员可以修改任何信息。 管理员模块有: 1.…

【8-数据库表结构的创建后台管理系统的搭建】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了,请点击这里!】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

OPSS-PEG-N3,OPSS-PEG-azide,巯基吡啶-PEG-叠氮化学试剂供应

1、名称 英文:OPSS-PEG-N3,OPSS-PEG-azide 中文:巯基吡啶-聚乙二醇-叠氮 2、CAS编号:N/A 3、所属分类:Azide PEG Orthopyridyl disulfide (OPSS) PEG 4、分子量:可定制,2K 巯基吡啶-PEG-叠…

海量短视频打标问题之多模态机器学习

引言 接着讲,既然我们是给视频打标签,那么肯定就不能只局限于图像上做文章。视频文件包含的信息很多,一个短视频除了有一帧一帧的图像,还有声音信息,甚至还有字幕或者用户打的标签和文字评论之类的这些信息&#xff0…

第2关:ZooKeeper配置

配置项介绍 基础配置 tickTime:Client和Server通信心跳数。 Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔tickTime的时间就会发送一个心跳。tickTime以毫秒为单位。 initLimit:LF初始通信时限。 集群中的followe…

muduo库的高性能日志库(二)——LogStream文件

目录概述FixBuffer类(模板缓冲区)LogStream类LogStream.hLogStream.cc十进制整数转化为字符串地址(指针)数据转换为16进制字符串浮点类型数据转化为字符串Fmt类C单元测试框架(简略)什么是单元测试常用测试工…

用了CDN就一定比不用更快吗?

对于开发同学来说,CDN这个词,既熟悉又陌生。 平时搞开发的时候很少需要碰这个,但却总能听到别人提起。 我们都听说过它能加速,也大概知道个原因,但是往深了问。 用了CDN就一定比不用更快吗? 就感觉有些…

C++ Reference: Standard C++ Library reference: Containers: deque: deque: cbegin

C官网参考链接&#xff1a;https://cplusplus.com/reference/deque/deque/cbegin/ 公有成员函数 <deque> std::deque::cbegin const_iterator cbegin() const noexcept;返回指向开始的常量迭代器 返回指向容器第一个元素的const_iterator。 const_iterator是指向const内…

大一新生HTML期末作业,实现登录页面

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

js+贝塞尔曲线+animate动画

文章目录一 介绍二 示例1阶贝塞尔曲线2阶贝塞尔曲线3阶贝塞尔曲线:4/n阶贝塞尔曲线三 封装和使用bezier.jsApp.jsxApp.scss一 介绍 贝塞尔曲线(Bzier curve)&#xff0c;又称贝兹曲线或贝济埃曲线&#xff0c;是应用于二维图形应用程序的数学曲线。 下面是我们最常用到bezier曲…

【7-创建商城系统的子模块并将修改后的信息使用Git提交到Gitee上】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了&#xff0c;请点击这里&#xff01;】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

测试.net开源敏感词检测库ToolGood.Words

微信公众号“DotNet”看到介绍.net开源敏感词检测库ToolGood.Words的文章《.NET Core一款高性能敏感词检测开源库》&#xff0c;根据参考文献2中的测试&#xff0c;该库的检测效率比C#自带的正则效率高8.8倍&#xff0c;如果数量量越大性能优势越明显。   ToolGood.Words的Gi…

英文Paper写作如何尽量避免抄袭?

说到英文Paper的写作&#xff0c;我们就不得不提到reference&#xff0c;中文称之为引用。在国外&#xff0c;合理正确的利用reference非常重要&#xff0c;国外对于知识产权的保护很严格&#xff0c;对于抄袭行为也是不能容忍的。学术表现差或是学术不诚实问题是造成学生被开除…