IDEA配置
下载idea之后, webgoat要求
* Java 15
* Maven > 3.2.1
* Your favorite IDE
* Git, or Git support in your IDE
但是调试的话, 只安装java即可
安装好后先配置Project SDK。点下图位置, 找Project Structre, 然后Project SDK选择自己的java15位置
然后就是Run configuration, 点击下图箭头位置,然后Edit Configuration
,选择Spring Boot,然后填Main class
和
Use classpath of module
如果出现Run按钮灰色, 可能是在配置/下载包, 如果都好了但还是灰色, 建议尝试重启idea(倒
登录
webgoat-container/src/main/java/org/owasp/webgoat/WebSecurityConfig.java
中,放着安全相关的配置文件
身份验证没有用框架给的
后面调试的时候发现获取到了username和passwd之后,还是进入了框架的代码进行判断是否匹配
用command + 左键
就可以跟随跳转直到webgoat-container/src/main/java/org/owasp/webgoat/users/UserService.java
跳回按Ctrl + alt + 左方向键
其中existsByUsername
和save
,findByUsername
都是UserRepository类的
这个接口继承自JpaRepository
Jpa是一种可以让开发者在使用过程中不使用SQL语句的一种方法,通过ORM框架将数据库中的字段和我们的类的属性进行一个关系映射 – 天下大木头
作用就是根据username 查询并返回一个WebGoatUser类型的对象
WebGoatUser类其实就是进行数据库和类的映射
数据库中有username, password 和role.
回到先前的UserService.loadUserByUsername
, 打断点后web登录,就可以看到这里返回了查询的账户密码
调试时提醒执行的是这种命令
select webgoatuse0_.username as username1_6_, webgoatuse0_.password as password2_6_, webgoatuse0_.role as role3_6_ from container.web_goat_user webgoatuse0_ where webgoatuse0_.username=?
进行了预处理
注册
数据包发往这个地址
按Ctrl + Shift + F
或Command + Shift + F
全局搜索, 就可以看到了
这个@PostMapping, 是Spring boot的一个Controller, 功能是有声明处理这个请求的路由. 更详细可以看Spring @PostMapping Example - @GetMapping Example
第一行代码
将表单转成UserFrom类型的, UserForm如下,限定了长度.
public class UserForm {
@NotNull
@Size(min=6, max=40)
private String username;
@NotNull
@Size(min=6, max=10)
private String password;
@NotNull
@Size(min=6, max=10)
private String matchingPassword;
@NotNull
private String agree;
}
然后判断了用户名是否,密码和确认密码是否相同. 都正确就不抛出任何异常.
中间的bindingResult.hasErrors()
,如果使用相同的用户名,会在这里报错然后退出.
然后添加用户
先查询是否存在,然后将用户名密码保存入库. 最后如果不存在就保存到Tracker库中.
这里我感觉,查询也应该查询的是Tracker库中吧. 能走到这里肯定都是User库中用户名不存在的.
参考链接
Java代码审计02: 登录注册模块初审计(未完待续) - 木头的小屋
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付