首页 > 编程语言 >java网站重建绕密常用技巧

java网站重建绕密常用技巧

时间:2024-08-15 22:05:22浏览次数:7  
标签:java 技巧 代码 修改 密文 日志 绕密 补全

在进行网站分析时的一大重点就是如何登录到管理后台,这就需要我们去绕过/获取管理员的密码,在php、nodejs等站点中就很简单,我们只需要找到目标逻辑所在的代码,直接修改代码就可以实现目的。但是当我们遇到java类站点时,没有办法很轻松地修改代码,只能去分析密文的算法,从而自己生成对应的密文,接下来我就分享一下我在处理java网站绕密时的一些方式。(我默认你已经找到密码的判断逻辑)

1.日志类

这个是最简单的方式,部分开发者在开发时,习惯在终端打印内容,此时可能会输出密码对应的密文,或是数据库中存储的密文解密后的明文(部分站点密文是可解密的,很不安全),对于这样的站点,只需要在终端中找到对应的日志即可

又或者是程序本身没有输出相关的日志,但是在判断密码是否正确时,采用的是数据库判断,即在数据库中查询是否存在符合账号密文都符合输入的用户,就像这样

select * from user where user_name = "admin" and password = "e10adc3949ba59abbe56e057f20f883e";

对于此类判断方式,我们可以监听数据库的日志,例如mysql就是查看general_log,会完整记录查询内容,直接获得输入对应的密文

2.分析算法/模拟执行

这一个方法呢,就是我们可以很轻松地通过分析代码,得出密文的生成方式,或是直接将密文生成的代码扣出来,补全环境后运行

这里可以看到,密文的生成其实就是sha256(salt+md5(salt+password))

123456为例,密文就是1dd4d822b0f29eadef8cfce4525a52b04194a6af9fdea481153711b13dbe5be

3.修改代码

修改java的代码比较困难,我们需要补全环境,然后编译出class文件,替换jar包中的文件,就像下面这样修改代码,我这边是有源码,所以直接在源码上修改,idea中运行后会自动编译出class文件,我用这个文件去替换

此时就可以任意密码登录成功

验证权限都是没问题的

但是这个方式的难点就在于,我们需要补全目标类的所有依赖和包,但是在一般的项目中,这个包通常都是巨大的,很难完全补全,更别说部分逻辑jadx还无法反编译出来,导致反编译出来的代码无法编译,这个方式基本都是碰运气,用的也是最少的

4.利用javaagent直接打印

利用javaagent技术,对目标方法进行插柱,打印出方法的参数和返回值,这个方法只需要我们可以找到目标方法就可以无脑运行,不必要分析里面的逻辑,也无须修改代码

这样我们就可以直接拿到对应的密文

甚至还可以修改返回值,可操作性一下子就高了不少

以上4种方式我个人推荐排序的话就是1->4->2->3,别人已经弄好的就是最简单的

标签:java,技巧,代码,修改,密文,日志,绕密,补全
From: https://www.cnblogs.com/WXjzc/p/18361882

相关文章

  • Java volatile关键字剖析
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录1.volatile关键字介绍2.volatile变量可见性问题3.volatile变量可见性保证3.1Fullvolatile完全易失性可见性保证3.2指令重新排序挑战3.3volatile的Happens-Before保证4.volatile并不......
  • Java创建线程的方式
    1.继承Thread类第一步,创建一个线程类并继承Thread类第二步,重写run()方法,内部自定义线程执行体第三步,创建自定义的线程类对象,调用start()方法,启动线程示例代码如下publicclassMyThread1extendsThread{@Overridepublicvoidrun(){for(inti=0;i<......
  • JavaSE基础知识分享(七)
    写在前面前面讲的是面向对象中的常用类部分,下面让我们来看看java中集合这部分的内容!在本文的最后给大家发一个题目,便于复习Java面向对象部分的知识!集合数据结构栈和队列数组和链表树哈希表图本部分知识太多,就不一一列举了。了解更多泛型泛型类格式......
  • Java学习的第二天
    今天接着上篇的Java内容继续。首先说一下开发Java的注意事项:1、Java开发是以.Java为拓展名,源文件的基本组成是类(class)。2、应用程序的执行入口是main()方法,且有固定的书写模式:publicstaticvoidmain(String[]args){...}.3、严格区分大小写。4、Java方法是以一条条语句......
  • 高级java每日一道面试题-2024年8月15日-设计模式篇-设计模式与面向对象原则的关系是什
    如果有遗漏,评论区告诉我进行补充面试官:设计模式与面向对象原则的关系是什么?我回答:在设计模式与面向对象原则的关系中,两者紧密相连且相互促进。面向对象的原则为设计模式的形成提供了理论基础和指导思想,而设计模式则是这些原则在特定问题域中的具体实践和实现方式。下......
  • Java集合框架
    常见的集合框架Java集合框架可以分为两大的支线:①、Collection,主要由List、Set、Queue组成:List代表有序、可重复的集合,典型代表就是封装了动态数组的ArrayList和封装了链表的LinkedListSet代表无序、不可重复的集合,典型代表就是HashSet和TreeSet;Queue代表队列,典型代表就......
  • java异常你了解多少
    一、知识点概述(1)异常:异常就是Java程序在运行过程中出现的错误。(2)异常由来:问题也是现实生活中一个具体事务,也可以通过java的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体现。(3)JVM的默认处理方案把异常的名称,错误原因及异常出现的位置等......
  • Java Data解决报错过程记录
    [attendancewebservice][24-08-1519:01:03.199][b3960aea15204b76b7c838189c28d45d][10.129.1.238]DEBUG[Thread-10][ne.jdbc.spi.SqlExceptionHelper.logExceptions139]couldnotexecutequery[select*fromid_customerswhereuserid=?]java.sql.SQLExceptio......
  • java7
    一、内部类1.成员内部类在一个类的内部定义的普通类可以访问外部类的所有成员,包括私有成员需要一个外部类的实例来创建成员内部类的实例可以被修饰为public、private、protected或者默认2.静态内部类一个静态内部类是静态的成员类。不需要外部类的实例来创建静态内部类......
  • ECMAScript 性能优化技巧与陷阱
    在现代Web开发中,性能是一个关键因素,能够显著影响用户体验和应用响应速度。随着ECMAScript语言的不断发展,程序员可以使用越来越多的特性和工具来提升代码的性能。然而,某些常见的技巧和陷阱可能会导致意想不到的性能问题。本文将讨论一些ECMAScript中的性能优化技巧和常见......