用户
搜索
  • TA的每日心情
    慵懒
    2018-8-12 16:17
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]经常看看I

    i春秋-核心白帽

    Rank: 4

    34

    主题

    106

    帖子

    469

    魔法币
    收听
    0
    粉丝
    17
    注册时间
    2017-4-30
    发表于 2021-12-31 10:35:37 0874

    wJa无源码的源码级调试jar包

    wJa在1.0正式版本支持了动态调试jar包,wJa通过反编译得到java源代码,通过jdi实现了类源码级别的调试。

    打开jar包

    正常打开jar之后,可以看到wJa除了原先的反编译区域和CHeetahLangue区域之外增加了DebugJar和Web两个板块

    DebugJar

    源码级别调试java代码,下断点,查看变量,单步执行之类常用的功能

    Web

    浏览器,方便大家操作,查看Cookies之类的功能,之后会增加强大的功能,暂时功能单一

    调试使用

    wJa会帮助我们自动打开jar包,启用jvm的调试,所以对于Web应用记住不要提前打开,因为端口会被占用。

    还有一点关键的是,wJa将会启用jdwp协议,存活在6677端口,不要放公网上,这个协议有漏洞的!

    左下角就是jar包的输出内容。

    例如我们想要调试org.joychou.controller.SQLI类的jdbc_sqli_vul方法。

    首先需要填写class和method,这一个class需要注意,和我们在编写cheetah时一样,需要将.转变为/,填写完毕之后点击get method content按钮。

    可以看到方法内的源代码,并且方法左边会有一个编号,此编号类似于行号,但其实实际上是字节码偏移。

    例如当我们想要断在54:statement = con.createStatement();这句话上时,可以再ID输入54,点击右边的下断。

    这时候我们访问对应的页面,将会得到下面的结果

    网页会断下,并且会展示当前运行到的编号和变量内容。

    这里需要注意,填写54相当于是执行完了54:statement = con.createStatement();这句话,所以变量中可以看到statement变量。

    多次继续单步执行,可以依次浏览结果。

    例如当前运行到135,实际上是运行到赋值完res_pwd,这样子对我们进行代码审计有比较方便的效果。

    也可以看到右下方的jar包输出内容依次打印的log。

    最终我们run起来,删除断点就可以了。

    Web使用

    目前只能打印cookies,之后会添加js注入调试之类的功能。

    之后的优化

    之后我会讲代码调试方面模仿idea的断点方式,实现比较方便的内容,主要是java的UI实在不太好搞。

    发新帖
    您需要登录后才可以回帖 登录 | 立即注册