详解Android常用抓包工具的使用方法、技巧-学习笔记20220416
京峰教育学习笔记
详解Android常用抓包工具的使用方法、技巧
fiddler调试工具详解及编写自动化脚本
1.1 fiddler script
Fiddler2 script fiddler2
\vmware-host\Shared Folders\文稿\Fiddler2\Scripts
1.2 应用场景
(修改返回值)场景1**:一个付费验证,是否付费会返回一个json。里面有一个时间戳和一个false。如果时间戳和客户端不一致,则为破解失败。**
那么你一定会这么想,有没有一个功能,可以只替换json里面部分参数,然后返回给客户端,而不是全部写死呢?于是,我们需要使用到script了!代码如下:如一个json是这个内容,baidu.com,返回了一个【name:timestamp,ispay:false】
if(oSession.fullUrl.Contains(“test01.php”)){ var responseStringOriginal = oSession.GetResponseBodyAsString(); var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal); { //请求参数中,若type为1**,对返回值做如下修改** responseJSON.JSONObject[‘ispay’] = “true”; // 重新设置****Response Body var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject); oSession.utilSetResponseBody(responseStringDestinal); } }
static function OnBeforeResponse(oSession: Session) {if (m_Hide304s && oSession.responseCode == 304) {oSession["ui-hide"] = "true";}if(oSession.fullUrl.Contains("test01.php")){var responseStringOriginal = oSession.GetResponseBodyAsString();var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);{ //请求参数中,若type为1,对返回值做如下修改responseJSON.JSONObject['ispay'] = "true";// 重新设置Response Bodyvar responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);oSession.utilSetResponseBody(responseStringDestinal);}}}
(修改请求值)场景2:我想要修改request的Body里面的部分参数,每次下完断点,修改完再提交,总会网络超时或者APP超时。这该怎么办?难道只能靠手速?
if(oSession.uriContains(“test01.php”)) { var strBody=oSession.GetRequestBodyAsString();// 获取****Request 中的body字符串 strBody=strBody.replace(“false”,“true”);// 用正则表达式或者replace方法去修改string,将false改为****true FiddlerObject.alert(strBody);// 弹个对话框检查下修改后的****body oSession.utilSetRequestBody(strBody);// 将修改后的body,重新写回Request中 }
(修改Cookie)场景3**:我想要修改cookie,改成一个付费过的cookie,但是需要实时生成,不能靠手速。这该怎么办?**
if(oSession.uriContains(“test01.php”)) { var sCookie = oSession.oRequest[“Cookie”]; // 用replace方法或者正则表达式的方法去操作cookie的****string sCookie = sCookie.Replace(“ispay=false”, “ispay=true”); oSession.oRequest[“Cookie”] = sCookie; } |
---|
(标记颜色)场景4**:我想要知道他到底有没有请求具体哪个网址,用查找速度太慢了。过滤也很慢。**
if (oSession.HostnameIs(“test02.php”)) { oSession[“ui-color”] = “red”; }
(保存数据)场景5:我想要自动保存某个接口的数据到本地,怎么才能实现?
if (oSession.fullUrl.Contains(“test02.php”) ){ **oSession.utilDecodeResponse();//**消除保存的请求可能存在乱码的情况 var fso; var file; fso = new ActiveXObject(“Scripting.FileSystemObject”); **//**文件保存路径,可自定义 file = fso.OpenTextFile(“C:\Sessions.txt”,8 ,true, true); //file.writeLine("Response code: " + oSession.responseCode); file.writeLine("Response body: " + oSession.GetResponseBodyAsString()); file.writeLine("\n"); file.close(); }
场景1:ß
修改返回值
//test01.php
<?php// echo "<h1>test</h1>";echo '{"timestamp":1645966180,"ispay":false}';
?>
static function OnBeforeResponse(oSession: Session) {if (m_Hide304s && oSession.responseCode == 304) {oSession["ui-hide"] = "true";}if(oSession.fullUrl.Contains("test01.php")){var responseStringOriginal = oSession.GetResponseBodyAsString();var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);{ //请求参数中,若type为1,对返回值做如下修改responseJSON.JSONObject['ispay'] = "true";// 重新设置Response Bodyvar responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);oSession.utilSetResponseBody(responseStringDestinal);}}}
场景2
修改resquest的body
修改请求值
if(oSession.uriContains("test01.php")){var strBody=oSession.GetRequestBodyAsString();// 获取Request 中的body字符串strBody=strBody.replace("false","true");// 用正则表达式或者replace方法去修改string,将false改为trueFiddlerObject.alert(strBody);// 弹个对话框检查下修改后的body oSession.utilSetRequestBody(strBody);// 将修改后的body,重新写回Request中}
场景3:
修改cookie
if(oSession.uriContains("test01.php")) { var sCookie = oSession.oRequest["Cookie"]; // 用replace方法或者正则表达式的方法去操作cookie的stringsCookie = sCookie.Replace("ispay=false", "ispay=true"); oSession.oRequest["Cookie"] = sCookie;}
场景4:
(标记颜色)场景4**:我想要知道他到底有没有请求具体哪个网址,用查找速度太慢了。过滤也很慢。**
//if (oSession.HostnameIs("test02.php")) {if (oSession.uriContains("test02.php")){oSession["ui-color"] = "red";}}
场景5:fso操作
写入txt
if (oSession.fullUrl.Contains("test02.php") ){//if (oSession.uriContains("test02.php") ){oSession.utilDecodeResponse();//消除保存的请求可能存在乱码的情况var fso;var file;fso = new ActiveXObject("Scripting.FileSystemObject");//文件保存路径,可自定义file = fso.OpenTextFile("C:\\Sessions.txt",8 ,true, true);//file.writeLine("Response code: " + oSession.responseCode);file.writeLine("Response body: " + oSession.GetResponseBodyAsString());file.writeLine("\n");file.close();}
实战:利用burpsuite插件进行自动化探测
2.1 安装****jpython
2.2 安装 IntelligentAnalysis.py
<?php// echo "<h1>test03</h1>";echo '{"neme":13865692238,"ispay":false,"mail":xx@163.com}';
?>
注:此处是HaE插件产生的效果
即敏感信息标注,并提示。
正则规则:
BurpSuite Highlighter and Extractor
HaE is used to highlight HTTP requests and extract information from HTTP response messages
or request messages
.
Public Rules
rules:
- rule:- color: greenengine: dfaloaded: truename: Shiroregex: (=deleteMe|rememberMe=)scope: any- color: greenengine: dfaloaded: truename: JSON Web Tokenregex: (ey[A-Za-z0-9_-]{10,}\.[A-Za-z0-9._-]{10,}|ey[A-Za-z0-9_\/+-]{10,}\.[A-Za-z0-9._\/+-]{10,})scope: any- color: greenengine: dfaloaded: truename: Swagger UIregex: ((swagger-ui.html)|(\"swagger\":)|(Swagger UI)|(swaggerUi))scope: responsetype: Fingerprint
- rule:- color: yellowengine: nfaloaded: truename: Emailregex: (([a-zA-Z0-9][_|\.])*[a-zA-Z0-9]+@([a-zA-Z0-9][-|_|\.])*[a-zA-Z0-9]+\.((?!js|css|jpg|jpeg|png|ico)[a-zA-Z]{2,}))scope: response- color: orangeengine: nfaloaded: truename: Chinese IDCardregex: '[^0-9]((\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)))[^0-9]'scope: response body- color: orangeengine: nfaloaded: truename: Chinese Mobile Numberregex: '[^\w]((?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8})[^\w]'scope: response body- color: cyanengine: nfaloaded: truename: Internal IP Addressregex: '[^0-9]((127\.0\.0\.1)|(10\.\d{1,3}\.\d{1,3}\.\d{1,3})|(172\.((1[6-9])|(2\d)|(3[01]))\.\d{1,3}\.\d{1,3})|(192\.168\.\d{1,3}\.\d{1,3}))'scope: response- color: greenengine: nfaloaded: truename: MAC Addressregex: (^([a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5})|[^a-zA-Z0-9]([a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5}))scope: response- color: orangeengine: nfaloaded: falsename: Chinese Bank Card IDregex: '[^0-9]([1-9]\d{12,18})[^0-9]'scope: responsetype: Basic Information
- rule:- color: cyanengine: dfaloaded: truename: RCE Paramtersregex: ((cmd=)|(exec=)|(command=)|(execute=)|(ping=)|(query=)|(jump=)|(code=)|(reg=)|(do=)|(func=)|(arg=)|(option=)|(load=)|(process=)|(step=)|(read=)|(function=)|(feature=)|(exe=)|(module=)|(payload=)|(run=)|(daemon=)|(upload=)|(dir=)|(download=)|(log=)|(ip=)|(cli=))scope: request- color: yellowengine: dfaloaded: truename: Java Deserializationregex: (javax.faces.ViewState)scope: response- color: cyanengine: dfaloaded: truename: Debug Logic Parametersregex: ((access=)|(adm=)|(admin=)|(alter=)|(cfg=)|(clone=)|(config=)|(create=)|(dbg=)|(debug=)|(delete=)|(disable=)|(edit=)|(enable=)|(exec=)|(execute=)|(grant=)|(load=)|(make=)|(modify=)|(rename=)|(reset=)|(root=)|(shell=)|(test=)|(toggl=))scope: request- color: cyanengine: nfaloaded: truename: URL As A Valueregex: (=(https?://.*|https?%3(a|A)%2(f|F)%2(f|F).*))scope: request- color: yellowengine: dfaloaded: truename: Upload Formregex: (type=\"file\")scope: response bodytype: Maybe Vulnerability
- rule:- color: greenengine: dfaloaded: truename: OSSregex: ([A|a]ccess[K|k]ey[I|i][d|D]|[A|a]ccess[K|k]ey[S|s]ecret)scope: any- color: greenengine: nfaloaded: truename: Amazon AWS URLregex: (((([a-zA-Z0-9._-]+\.s3|s3)(\.|\-)+[a-zA-Z0-9._-]+|[a-zA-Z0-9._-]+\.s3|s3)\.amazonaws\.com)|(s3:\/\/[a-zA-Z0-9-\.\_]+)|(s3.console.aws.amazon.com\/s3\/buckets\/[a-zA-Z0-9-\.\_]+)|(amzn\.mws\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})|(ec2-[0-9-]+.cd-[a-z0-9-]+.compute.amazonaws.com)|(us[_-]?east[_-]?1[_-]?elb[_-]?amazonaws[_-]?com))scope: any- color: greenengine: nfaloaded: truename: Amazon AWS AccessKey IDregex: ((aws(.{0,20})?(?-i)['\"][0-9a-zA-Z\/+]{40}['\"])|((A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[a-zA-Z0-9]{16}))scope: any- color: greenengine: nfaloaded: truename: Amazon AWS Regionregex: ((us(-gov)?|ap|ca|cn|eu|sa)-(central|(north|south)?(east|west)?)-\d)scope: any- color: yellowengine: nfaloaded: truename: SSH Private Keyregex: ([-]+BEGIN [^\s]+ PRIVATE KEY[-])scope: response- color: greenengine: nfaloaded: truename: Windows File/Dir Pathregex: '[^\w](([a-zA-Z]:\\(?:\w+\\?)*)|([a-zA-Z]:\\(?:\w+\\)*\w+\.\w+))'scope: responsetype: Sensitive Information
- rule:- color: grayengine: nfaloaded: falsename: Linkfinderregex: (?:"|')(((?:[a-zA-Z]{1,10}://|//)[^"'/]{1,}\.[a-zA-Z]{2,}[^"']{0,})|((?:/|\.\./|\./)[^"'><,;|*()(%%$^/\\\[\]][^"'><,;|()]{1,})|([a-zA-Z0-9_\-/]{1,}/[a-zA-Z0-9_\-/]{1,}\.(?:[a-zA-Z]{1,4}|action)(?:[\?|#][^"|']{0,}|))|([a-zA-Z0-9_\-/]{1,}/[a-zA-Z0-9_\-/]{3,}(?:[\?|#][^"|']{0,}|))|([a-zA-Z0-9_\-]{1,}\.(?:php|asp|aspx|jsp|json|action|html|js|txt|xml)(?:[\?|#][^"|']{0,}|)))(?:"|')scope: any- color: pinkengine: dfaloaded: truename: Source Mapregex: (.js.map)scope: response body- color: magentaengine: nfaloaded: falsename: HTML Notesregex: (<!--[\s\S]*?-->)scope: anytype: Other
HaE is maintained by gh0stkey.
参考文章:
Jython 是什么
Fanly 问答 2019-08-03 11:24:35阅读(2432)
Jython(原 JPython),是一个用 Java 语言写的 Python 解释器。Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。
Jython(原 JPython),是一个用 Java 语言写的 Python解释器。Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。
Jython 还包括 jythonc,一个将 Python 代码转换成 Java 代码的编译器。这意味着 Python 程序员能够将自己用 Python 代码写的类库用在 Java 程序里。
许可协议
Jython 同时使用以下三种协议授权:
- Python 软件基金会许可证(v2)
- Jython 2.0, 2.1 许可协议
- JPython 1.1.x 软件许可协议
前两个是自由软件协议。第三个还不清楚,因为还没有被自由软件基金会接受。
历史
Jim Hugunin 于 1997 年创造了 Jython,并将它发展到 1999 年。1999 年 2 月,Barry Warsaw 接管了他的工作。2000 年十月,Jython 项目被移动到 SourceForge。很长一段时间内主要由 Samuele Pedroni 负责维护和开发 Jython。2004 年底,Pedroni 将精力集中在 PyPy,但他仍然被认为是 Jython 内部管理层的一员。2005 年 1 月,Brian Zimmer 因开发 Jython 而得到 Python 软件基金会的资助。2005 年 12 月,Frank Wierzbicki 作为主要开发者接替了 Zimmer 的工作。2005 年,Jython 的发展因为缺少优秀的开发者而放缓
2008 年 3 月 3 日,太阳计算机公司就像之前雇佣 2 名 JRuby 开发者那样请来 Ted Leung 和 Frank Wierzbicki 为 Jython 和 Python 工作。 开发进度稳步增长。 Jython 现在甚至可以运行 Django(类似于 Ruby on Rails 的框架).
现状和未来
当前的 Jython 版本是 2017 年 7 月 1 日发布的 Jython 2.7.1
Jython 的优点
- 与相似的 Java 程序相比,Jython 极大的的减少了编程代码量。
- Jython 同时拥有解释器和编译器,使其无需编译就可以测试程序代码。
Burp插件 - 自动标记敏感信息
奶茶小仙女儿 2019-03-20
共 287107 人围观
+关注
如果你喜欢就在GitHub点个小星星吧,下载地址:https://github.com/nian-hua/BurpExtender/blob/master/IntelligentAnalysis.py
配置Jython环境
首先去Jython官网下载安装文件
安装过程一直点下一步就好啦,不过要记住这个安装位置:
安装成功后打开Burp的扩展:
选择刚刚记住安装路径下的jython.jar
加载我们刚编写的扩展。
扩展的使用
查看Proxy History:
如果返回的数据包中有身份证信息会被标记成红色
如果返回的数据包中含有手机号信息会被标记成蓝色
如果返回的数据包中含有GPS位置信息会被标记成绿色
在Burp 扩展的output窗口,会详细输出匹配到的敏感信息,方便以后查询。
这个Json Decoder的功能是在GitHub上一个开源功能,但是它并不支持修改解析后的数据,所以我修改了一下之后将它加入到了我的程序里,
后记
如果你觉得还有什么应该标记的话,可以在下方留言哦,如果你有什么建议或意见欢迎访问我的个人博客。
下载地址在:
https://github.com/nian-hua/BurpExtender/blob/master/IntelligentAnalysis.py
喜欢的话点个star
详解Android常用抓包工具的使用方法、技巧-学习笔记20220416相关推荐
- (转载)网络抓包原理及常用抓包工具
感谢和转载于: https://blog.csdn.net/l61052319940708/article/details/80624900 本文以App作为例子,实际应用不限于App范围. 前言:本 ...
- Android 各种抓包工具抓包总结
前言 这篇文章算是总结一下我之前抓包遇到的一些问题, 个人属性里带bug, 所以遇到的问题会比较多, 算是给大家提供一个抓包抓不到应该如何解决的思路. 工具介绍 Android中可用的抓包软件有fid ...
- 常用抓包工具(可编程抓包工具)
一.网络抓包工具 1.wireshark 网络抓包工具,可以抓取除应用层,整个网络的数据包 用途:一般用来作为网络分析工具使用 地址:https://www.wireshark.org/ 二.应用层抓 ...
- 常用抓包工具,手机调试工具大合集
1.抓包工具 mac推荐:Charles windows推荐:fiddler 2.移动端调试工具 vconsole(直接npm即可安装) weinre(https://www.v2ex.com/t/2 ...
- php获取微信文章阅读数,详解PHP+fiddler抓包采集微信文章阅读数点赞数的思路
简介: 分析接口知道要获取文章阅读数和点赞数必须有key和uin这两个关键参数,不同公众号key不一样(据说有万能微信key,不懂怎么搞到),同一个公众号key大概半小时会过期 提交链接获取文章阅读量 ...
- 抓包工具Wireshark基本介绍和学习TCP三次握手
原文链接:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html#threehand,肖佳 之前写过一篇博客:用 Fiddler ...
- 原生高性能抓包工具Proxyman,送给爱学习的你
现在的抓包工具可谓是五花八门,比如Fiddler,Charles,LightProxy等,各有各的优缺点,最近又看到一个新的抓包工具,像我这样一个有强烈好奇心的人,怎么能错过,我们一起来学习下吧! 一 ...
- Android平台抓包工具TCPDump
下载tcpdump,http://www.strazzere.com/android/tcpdump,不知道具体版本. 详细使用请参考http://www.tcpdump.org/里面的文档 你需要r ...
- shark for android,Android手机抓包工具shark for root抓包参数
Android手机root后,安装shark for root(内带tcpdump)可以很方便的在手机上直接抓包,免去了各种电脑连接.网络连接的麻烦,最重要的是可以方便的在手机移动网络(如cmnet. ...
- http抓包工具及协议登录技巧讲解
chrome DevTools F12快捷键 chrome开发者工具 五个重要的面板 ###Network面板 查看网络请求,比如post,get,请求头,资源等返回都可以在这里查看 method:一 ...
最新文章
- python编程标准_python编程规范
- PythonEditor 中文图形化编程网站即将正式启用
- 国内免费Blog博客程序评测(含ASP/PHP/.net)
- CF917B MADMAX
- INTEL和AMD两大巨头的前身
- 如何让你的QQ不再掉线!
- Bootstrap源代码多行代码
- centos7系统引导自动重启_分享一个实用的脚本——全自动一键批量性安装Linux系统...
- tomcat安装apr报错解决
- 关于AVOD, 你需要知道的事
- 空间参考(一)---墨卡托投影、高斯-克吕格投影、UTM投影的异同
- LeetCode-21. 合并两个有序链表_JavaScript
- Python 黑板客爬虫闯关的第一关
- align-item 与 align-content 的区别
- 单片机闪灯c语言,PIC单片机入门之闪灯程序
- WindowsStore_LTSC 2019_win10商店恢复包
- Jetson nano (4GB B01) 系统安装,官方Demo测试 (目标检测、手势识别)
- 删除桌面上文件,提示此文件位置不在当前位置?
- 微信公众号开发----生成带参数的临时二维码
- 一劳永逸批量启动Jar包
热门文章
- mtkwin10驱动_MTK手机刷机驱动下载|MTK通用USB刷机驱动 Win7/Win10 自动安装版 下载_当下软件园_软件下载...
- windows CMD 下 长ping 加时间戳,亲测有效
- 3D打印机改装雕刻机经验分享
- win10任务栏图标空白的解决方案
- 3dsmax软件和maya软件各自的优劣势是什么?
- android表情选择器,android 新浪微博客户端的表情功能的实现
- linux英特尔蓝牙驱动,IntelBluetoothFirmware 英特尔蓝牙驱动
- STK Component Insight3D控件-WPF方式
- Mac 下 CocoaPods软件汉化
- Struts2框架中为什么要继承ActionSupport类,以及实现过程