网络安全Java代码审计实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.1 Eclipse动态调试

在Eclipse中一般通过以下几种方式进行断点设置:

(1)在行号处双击左键可以添加,也可以删除断点。

(2)在行号处右键选择“Toggle Breakpoint”,也可以添加或者删除断点。

通过上文讲到的连接Oracle数据库的程序进行动态调试的演示,比如我们想对第39行拼接的SQL语句进行动态调试,如图1-33所示。

图1-33 选择需要断点的语句

在动态调试前先要设置断点,在39行处双击鼠标左键,多了一个小点,就说明设置好了断点,如图1-34所示。

图1-34 设置断点

设置完成断点后,单击调试按钮进行调试,如图1-35所示。

开发工具首次调试时会弹出提示,需要切换到Debug工作区,勾选“Remember my decision”选项,下次便不再提示。进入调试模式后会出现如图1-36所示的界面,需要关注以下4个窗口。

图1-35 单击调试按钮进行调试

窗口一:Debug窗口,Tomcat中有线程池,Debug窗口显示当前线程方法调用栈及方法执行到第几行,目前显示调试的是index.jsp文件的第39行。

窗口二:代码编辑窗口,显示调试代码运行的进度状态,目前显示的39行是绿色的颜色,说明正运行在第39行。

窗口三:Variables窗口显示当前方法的局部变量、非静态的变量等,可以修改变量值,目前id参数的值是null。

窗口四:Console控制台,用于查看打印的日志信息。

图1-36 四个窗口的界面

下面重点看一下窗口三的功能,窗口三可以查看变量的值又可以修改变量的值,还是以刚才的示例来看,默认id参数是要通过GET方法进行提交的,但是通过此方法debug不能通过“http://127.0.0.1/index.jsp?id=1”的方式直接进行变量提交,却可以通过Variables窗口进行修改给id变量赋值,将id的值赋值为1,一步一步运行调试后发现:数据库查询完成后p的值为1,n的值为user1,s的值为pass1,如图1-37所示。

图1-37 调试中对应变量的值

从上面的过程来看,Eclipse对Java Web程序调试还是比较麻烦的,目前代码审计用得比较多的是IDEA,下面讲解如何使用IDEA进行Java Web程序的调试。