Java代码审计入门篇

作者:i春秋核心白帽yanzmi

原文来自:https://bbs.ichunqiu.com/thread-42149-1-1.html

本期斗哥带来Java代码审计的一些环境和工具准备。

Java这个语言相对于PHP来说还是比较复杂的,所以一开始接触到Java源码审计的时候会遇到一些关于环境和配置上一些困难,本文记录斗哥在开始去审计Java代码的一些准备,希望能够帮助到刚入门的新手朋友们。

0×00 Java环境说明

1. 安装Java环境

安装完成后默认的安装目录:

环境变量的配置,环境变量配置主要是告诉我们自己的电脑Java安装完后几个关键文件的路径。

●JDK的安装路径在哪里?——JAVA_HOME

●JDK命令文件位置(bin文件夹路径)——PATH

●类库文件的位置(lib文件夹路径)—— CLASSPATH

2. 运行Java程序

Java的代码要执行前是需要事先编译的,编译器先将Java源文件编译成二进制的文件,而进一步解析器在解析成二进制的文件。

HelloWorld.java

一般java源码文件没有办法像PHP或者Python那样直接解析,所以不借助IDE的话,我们需要通过javac这个命令去进行编译。

编译完后得到.class相应的字节码文件,这是可以用java直接解析。

3. Java反编译

由于很多时候我们得到并不是java的源码文件,而是.class结尾的字节码文件。所以我们需要一个工具帮助我们反编译看到相应的源代码。那这里推荐大家使用jd-gui这个工具。

下图描述的上述过程:

4. Java平台

刚接触到Java平台的时候,会接触到几个名词,如JavaSE,JavaEE,JavaME等等名词。简单来理解:

●Java SE —— 开发电脑软件

●Java EE —— 开发WEB网站

●Java ME —— 开发手机软件

Java SE(Java Platform,Standard Edition):允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类。

Java EE(Java Platform,Enterprise Edition):Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,用来实现企业级的面向服务体系结构和 Web 2.0应用程序。

Java ME(Java Platform,Micro Edition): 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。

0×02 Tomcat的安装和使用

1. Tomcat简介

常见的Java服务器:Tomcat、Weblogic、JBoss、GlassFish、Jetty、Resin、IBM Websphere等。

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问等很多的场合下被普遍使用,是开发和调试JSP程序的首选。

Tomcat安装包可以去到apache的官网去下载,解压后它的目录结构如下:

2.Tomcat部署源码

例子:javapms公测版源码部署

将ROOT目录重命名为javapms1.4拷贝到tomcat的webapp目录下。

访问http://127.0.0.1:8080/javapms1.4/

0×03 IDE的使用

1.选择适合自己的IDE

个人比较习惯使用IDEA,除了IDEA以外,myeclipse也是一个不错的选择。

2.IDEA上部署WEB项目

因为在IDE上部署项目的话,更方便我们去调试代码和代码跟踪。

例子:javapms公测版源码部署。

配置运行程序,如配置tomcat。

安装:http://127.0.0.1:8080/javapms1.4

3.IDEA上调试功能

这里主要用到的是IDEA的Debug功能。

下面是几个调试中会用到的几个快捷键:

●F7 ,进入下一步,如果当前断点是一个方法,进入方法体。

●F8 ,进入下一步,但不会进入方法体内。

●Alt+Shift+F7 , 进入下一步,如果当前断点是一个方法,方法还有方法则循环进入。

●Shift+F8 ,跳出到下一个断点,也可以按F9来实现。

●Drop Frame ,当进入一个方法体想回退到方法体外可以使用该键。

0×04 Maven——项目管理和构建工具

1.Maven介绍

Maven是一种自动构建项目的方式,可以帮助我们自动从本地和远程仓库拉取关联jar包。

官网地址:

maven 远程仓库:

之前审计的WebGoat就是使用Maven部署起来的。

2.Maven部署项目

在IDEA上部署Maven项目,这边以部署WebGoat源码为例。

3.部署完成,运行与排错

如果使用旧版的IDEA,那么程序的兼容性比较高,直接运行StartWebGoat.java文件,该文件的完整路径是\WebGoat\webgoat-server\src\main\java\org\owasp\webgoat\StartWebGoat.java

然而不幸的是,使用最新版的IDEA报错了,报错信息如下:

这是由于WebGoat的代码编写不够规范,在项目下的pom.xml没有规范书写程序包com.beust.jcommander.internal的相关信息,需要补充完整,补充如下:

pom.xml的完整路径为\WebGoat\webgoat-container\pom.xml。

修改完成后,重新运行StartWebGoat.java,如果没有出错,看到控制台的Spring Boot运行界面说明编译和运行成功。

访问http://127.0.0.1:8080/WebGoat,即可看到WebGoat的登陆页面。

0×05 Fortify 代码审计工具

Fortify是一个自动化的代码审计工具,斗哥这里使用的是在FreeBuf上前辈们的2009年版的一款,框架是eclipse+规则库。而他的收费版本费用实在惊人。2009版的规则库都比较早期了,它允许我们自定义规则,所以可以在这个版本基础上增加审计规则。

有问题大家可以留言哦也欢迎大家到春秋论坛中来耍一耍  >>>点击跳转

原文地址:https://www.cnblogs.com/ichunqiu/p/9237872.html

时间: 2024-08-03 01:05:07

Java代码审计入门篇的相关文章

热烈庆祝【深入浅出Java虚拟机——入门篇】培训课程在51CTO上线了

我的视频[深入浅出Java虚拟机--入门篇]在51CTO学院上线了. 想了解的可以点击: http://edu.51cto.com/course/course_id-1952.html 课程框架如下: 1.jvm概述 2.java规范和JVM规范简述 3.生活中的数字在计算机中的表示 4.jvm内存划分 5.jvm内存模型 6.jvm调试跟踪参数 7.jvm内存控制上 8.jvm内存控制下 9.jvm中class的装载过程 10.jvm中classloader的设计模式 11.jvm中有关cla

Java 集合类入门篇

开门见山地说吧,Java 提供了一套完整的集合类(也可以叫做容器类)来管理一组长度可变的对象(也就是集合的元素),其中常见的类型包括 List.Set.Queue 和 Map.从我个人的编程经验来看,List 的实现类 ArrayList 和 Map 的实现类 HashMap 使用频率最高,其它实现类只能望其项背了. <!--more--> List.Set 和 Queue 都是 Collection 的子接口,但各有各的好.List 按照插入的顺序保存元素,Set 不会有重复的元素,Queu

Java代码审计连载之—SQL注入

前言近日闲来无事,快两年都没怎么写代码了,打算写几行代码,做代码审计一年了,每天看代码都好几万行,突然发现自己都不会写代码了,真是很DT.想当初入门代码审计的时候真是非常难,网上几乎找不到什么java审计的资料,摸索了很长时间,搜到的也仅仅讲了点原理,为了给想学java代码审计的朋友门一点入门资料,就开始写<java代码审计连载>系列文章,本文章适合初学者,大牛留下脚印后请绕过,若代码有什么其他问题请忽略,因为那不是重点,此片只讲述SQL注入.本次写了两个简单的页面,一个登陆页面,一个查询id

Java小白入门系列 第一篇 写在前面

2018年8月30日  22:00:17 郑州  多云 Sue Java小白入门系列 第一篇  写在前面 写在前面: 首先声明一下,本人也是正在学Java,并不是多么专业人士,只是最近受老师的启发,所以准备写个关于java新手入门系列的博客,包括搭建Java开发环境.Java入门知识,也会分享一些好用的软件及破解器之类的,一方面是巩固所学的知识,另一方面是给有兴趣的小白做练手.入门之用,本系列博客完全开放,所有资源不收任何费用,欢迎大家转发留言,入门之用,不喜勿喷,恶人绕道! Java是不是很难

Java工程师学习指南(入门篇)

Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线. 所以,今天我们重新开一个新的专题,分别按照四篇文章讲述Java的学习路线(分别是入门篇,初级篇,中级篇,高级篇),笔者也打算趁此机会,回忆一下自己的Java学习历程.今天我们要讲的是,

《Java从入门到放弃》入门篇:springMVC数据校验

昨天我们扯完了数据传递,今天我们来聊聊数据校验的问题.来,跟着我一起读:计一噢叫,一按艳. 在springMVC中校验数据也非常简单,spring3.0拥有自己独立的数据校验框架,同时支持JSR303标准的校验框架. Spring的DataBinder在进行数据绑定时,会同时调用校验框架完成数据校验工作. 具体使用步骤如下: 1)导入数据校验的JAR包 2)在springmvc的配置文件中添加校验Bean 3)修改实体类,在属性上加上校验的注解 4)修改昨天的login4方法,加上校验的相关代码

《Java从入门到放弃》入门篇:hibernate中的多表对应关系

hibernate中的对应关系其实就是数据库中表的对应关系, 就跟某些电影中的某些场景是一样一样滴. 比如可以是一男一女,还可以是一男多女, 更可以是多男一女,最后最后最后还可以是多男多女!!! 有些不纯洁的看官肯定已经开始想歪了吧···,我还是上图吧!请看下图 我说滴是这样滴一群人打群架滴场景,嘿嘿嘿··· 好吧,进入正题!!! 数据库中表与表之间的数据映射关系有一对一,一对多,多对一,多对多.例如: 一个身份证只能对应一个护照,一个护照也只能对应一个身份证,这就是一对一的关系 一个男人可以有

《Java从入门到放弃》入门篇:Struts2的常用验证方式(二)

前一回,我们讲完了"直接在功能方法中写验证代码"这种验证方式,接下来,我们继续搞定后续的三种方式. 二.重写validate方法(注意这个方法会验证该类中所有的方法) 使用重写验证方法的好处就是,又可以少写一句代码了!!!! 2.1)修改Action类,在其中添加valiate方法,把之前写在add方法中的验证代码剪切过来     //修改后的add方法     public String add() {         System.out.println("调用了添加的方

漫游Kafka入门篇之简单介绍

原文地址:http://blog.csdn.net/honglei915/article/details/37564521 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以topic为单位进行归纳. 将向Kafka topic发布消息的程序成为producers. 将预订topics并消费消息的程序成为consumer. Kafka以集群的方式运行,