java filesearcher_Java Object Searcher | java内存对象搜索辅助工具

Java Object Searcher | java内存对象搜索辅助工具

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d302e30312d627269676874677265656e2e73766768747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6176612d312e372e2a2d79656c6c6f772e73766768747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d7265642e737667

0x01 工具简介

#############################################################

Java Object Searcher v0.01

author: c0ny1

github: http://github.com/c0ny1/java-object-searcher

#############################################################

配合IDEA在Java应用运行时,对内存中的对象进行搜索。比如可以可以用挖掘request对象用于回显等场景。

0x02 知识储备

使用之前必须了解的三个概念

2.1 搜索器

根据要搜索什么样的对象,选择对应的搜索器,目前项目有三类。

JavaObjectSearcher 普通搜索器

SearchRequstByBFS 通过广度优先搜索requst对象搜索器

SearchRequstByRecursive 通过深度优先搜索requst对象搜索器(递归实现)

2.2 关键字 & 黑名单

关键字是搜索目标对象的关键,可以目标三个属性属性名(field_name),属性值(field_value)和属性类型(field_type)。

比如想搜索属性名为table同时属性值为test的对象,还搜索属性名request同时属性类型包含RequestInfo关键字的,对应的逻辑表达试如下:

(field_name = table & field_value = test) || (field_name = request & field_type = RequestInfo)

编写代码如下:

List keys = new ArrayList<>();

keys.add(new Keyword.Builder().setField_name("table").setField_type("test").build());

keys.add(new Keyword.Builder().setField_name("request").setField_type("RequestInfo").build());

黑名单是定义哪些属性中不可能存有要搜索的目标对象,防止无意义的搜索,浪费时间。如果把上面的例子当做黑名单,编写的代码也是类似的。

List blacklists = new ArrayList<>();

blacklists.add(new Blacklist.Builder().setField_name("table").setField_value("test").build());

blacklists.add(new Blacklist.Builder().setField_name("request").setField_type("RequestInfo").build());

0x03 使用步骤

1. 将项目的java引入到目标应用的classpath中

2. 编写调用代码搜索目标对象

以搜索request对象为例,选好搜索器,并根据要搜索的目标特点构造好关键字(必须)和黑名单(非必须),可写如下搜索代码到IDEA的Evaluate中执行。

//设置搜索类型包含Request关键字的对象

List keys = new ArrayList<>();

keys.add(new Keyword.Builder().setField_type("Request").build());

//定义黑名单

List blacklists = new ArrayList<>();

blacklists.add(new Blacklist.Builder().setField_type("java.io.File").build());

//新建一个广度优先搜索Thread.currentThread()的搜索器

SearchRequstByBFS searcher = new SearchRequstByBFS(Thread.currentThread(),keys);

// 设置黑名单

searcher.setBlacklists(blacklists);

//打开调试模式,会生成log日志

searcher.setIs_debug(true);

//挖掘深度为20

searcher.setMax_search_depth(20);

//设置报告保存位置

searcher.setReport_save_path("D:\\apache-tomcat-7.0.94\\bin");

searcher.searchObject();

0x04 更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值