文章目录
在我日常的渗透测试工作中,用的最多的软件就是Burp Suite,我觉得它功能多样,界面清晰简洁,即使是之前完全没接触过这类软件的人也可以很快上手,所以实际上在刚入行的时候我根本就没再去学去用什么其他的软件了。但随着测试的系统越来越多,我发现有时会遇到在Burp Suite中抓不到包的问题!我现在也不知道这种情况产生的原因,只知道在burp里抓不到包就无法进行常规的测试操作,令我这个菜鸟感到非常着急(唉~
目前遇到过两种抓不到包的情况:一是微信小程序,二是测试APP的时候在进入APP和登录时都可以正常抓到包,但偏偏进了需要测试的功能点之后就抓不到包了。
听大佬说,要用“全局代理”,要用“花瓶”……虽然不是很懂但是去安装了Charles并学了一下怎么使用,然后顺利在burp中抓到了包,在这里记录一下以备未来如果忘记了可以翻一翻。
本文仅简单记录了在一次渗透测试工作中,通过借助Charles来解决burp中抓不到包的问题的配置步骤,不涉及Charles的具体功能介绍和如何安装等内容。
Charles 是在PC端常用的网络包截取工具,Charles 通过将自己设置成系统的网络访问代理服务器,使所有的网络访问都要经过它,从而实现了对网络包的截取和分析。
有关Charles比较全面的介绍和使用方法可以参考别人的这篇文章:https://www.jianshu.com/p/dd6a24f0c73d
PS:看了Charles的使用方法之后,我感觉Charles好像和burp的功能差不多啊,但是界面和操作方法似乎不如burp来的简洁,所以才没有burp那么出名吗?
点击Charles窗口内上部工具栏图标的最后一个(Settings),点击弹出菜单中的Proxy Settings,填入代理端口 8888(或者自定义,但不能和系统已占用端口冲突),并且勾上“Support HTTP/2”和 “Enable transparent HTTP proxying”,点击右下角OK即可。


先给PC端安装证书,点击位于屏幕顶端的菜单栏的Help,找到SSL Proxying,选择Install Charles Root Certificate按照提示就可以下载安装上。接下来是要把证书设置成信任(这很关键!方法在下面)。

安装PC端证书之后,在Mac的“钥匙串访问”(安装证书时“钥匙串访问”应该会自己弹出来)的左侧点击“系统”,从显示已安装证书的列表里找到Charles的证书,在证书位置点击鼠标右键,在出现的菜单中点击“显示简介”,展开窗口中的“信任”一栏,设置为“始终信任”。

再给手机端安装证书,步骤如下:
1.还是点击位于屏幕顶端的菜单栏中的Help并找到SSL Proxying,这一次选择有on a Mobile Device的这一项。
2.点击后会弹出窗口提示设置的方法,按照提示在手机端将代理设置为电脑的ip:8888,这里要先确保手机和电脑连接同一个无线网络。然后在手机的浏览器打开http://chls.pro/ssl,按提示下载证书即可。
3.下载证书之后同样很关键的步骤就是要设置证书为信任。在手机的设置->通用->关于本机->(滑到最下面找到)证书信任设置->找到并打开Charles Proxy CA的开关。




点击位于屏幕最上方菜单栏右侧的小花瓶logo,在下拉菜单中去掉macOS Proxy的勾选,再勾选上External Proxy Servers,如下图1。如果这里勾选了macOS Proxy,就是打开了本机的本地全局代理,相当于手动进行了操作:网络偏好设置->高级->代理->勾选上本地的http和https代理,如下图2。因为这里我是想在PC端抓手机端的包,所以没必要打开电脑的本地代理,但后面是要将Charles作为手机端的代理,再由Charles将包转发给burp,所以对于Charles来说,burp就成了一个“External Proxy Server”。(个人理解不一定对


PS:上图的本机http、https代理实际上在这里是不需要勾选的哈!
点击屏幕顶端的Charles菜单栏中的Proxy,从下拉菜单中找到External Proxy Settings,勾选http和https代理,这里http和https的代理服务器地址都是127.0.0.1:8080.


已经设置了外部代理了,就必须打开burp(当然了主要是要打开burp中对127.0.0.1:8080的监听),否则就会出现“连不上网了”的现象。在burp的菜单栏中的Proxy选项下的Options中打开127.0.0.1:8080的代理监听(默认应该是已经打开的),在Intercept中关闭请求拦截。
完成上面的配置步骤后,从手机上打开微信小程序,登录并进入功能点,应该已经可以在Charles窗口左侧的列表中找到想抓的包。在想抓的https包的url处右击选择Enable SSL Proxying。这一步非常重要,因为我曾经不知道这一步骤然后burp中依然抓不到包……
以上都完成后,再访问在手机端微信小程序中想要测试的功能点,此时burp中应该就可以抓到包了。

以上就是今天要记录的内容。这里一定要注意的事情有:
1.PC端和手机端都需要安装burp证书和Charles证书,并且打开信任。
2.点击位于屏幕顶部右侧的Charles小花瓶logo,取消macOS Proxy的勾选,勾选上External Proxy Servers。
3.在Charles窗口左侧的列表中找到想要用burp抓包的url并右键选择打开SSL Proxying。
4.开了外部代理就一定要记得打开burp的127.0.0.1:8080监听,否则网络不通。
5.Charles中设置的外部代理的地址是127.0.0.1:8080,手机端代理的地址是电脑ip(与手机在同一网段):8888
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/