Skip to content

Commit b28139e

Browse files
committed
docs: add more docs
1 parent 5b2ce2e commit b28139e

File tree

9 files changed

+78
-47
lines changed

9 files changed

+78
-47
lines changed

web/bun.lock

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/content/docs/memshell/meta.json

Lines changed: 0 additions & 3 deletions
This file was deleted.

web/content/docs/meta.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"changelog",
1010
"---内存马生成器---",
1111
"memshell-core-config",
12-
"memshell",
12+
"servlet",
1313
"custom-memshell",
1414
"---内存马工具---",
1515
"...(shelltool)",
File renamed without changes.

web/content/docs/servlet/index.mdx

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
title: Java Servlet 规范内存马
3+
---
4+
5+
Java SE 中我们可以创建 socket 服务端为用户提供服务,但需要用户使用 socket 客户端,当然也可以基于 socket 实现 HTTP 协议,WebFlux 就是这样子的存在。而在 Java EE 中,Java 制定了 Servlet 规范,来规范在 Java 中提供 HTTP 服务的编写方式,其中有两个重要的概念,Servlet 与 Servlet Container。Servlet 是基于 Java 的 Web 组件,由容器进行管理,提供动态内容。Servlet 容器用于提供基于请求/响应发送模式的服务,必须支持 HTTP,并且管理 Servlet 的生命周期,使 Servlet 在一个受限的安全环境中执行。
6+
7+
Servlet 规范旨在让开发者基于规范开发的应用,可以部署在任意满足规范的 Web 容器上。每个 Servlet 规范版本都引入了一些新的东西,Servlet 4.0 前的版本变更可查看 [java-servlet-version-history](https://www.codejava.net/java-ee/servlet/java-servlet-version-history)
8+
9+
目前常见的 Servlet 规范就是 [Servlet 3.1](https://github.com/waylau/servlet-3.1-specification/blob/master/docs), Tomcat 8.x 版本就是 Servlet 3.1 版本,从 Servlet 5.0 开始,Java EE 更名为 Jakarta EE,包路径从 **javax** 改为 **jakarta**。目前最新 Servlet 规范为 Jakarta Servlet 6.1,可前往 https://jakarta.ee/specifications/servlet/ 查看。
10+
11+
这也是为什么我们有两种版本,Servlet/JakartaServlet、Filter/JakartaFilter、Listener/JakartaListener。
12+
13+
## Servlet 三大 Web 组件
14+
15+
<Cards>
16+
<Card
17+
href="/docs/servlet/servlet"
18+
title="Servlet 内存马"
19+
>创建独特的 entrypoint 访问路径</Card>
20+
<Card
21+
href="/docs/servlet/filter"
22+
title="Filter 内存马"
23+
>过滤器,遇事不决写点特别的东西然后中断请求</Card>
24+
<Card
25+
href="/docs/servlet/listener"
26+
title="Listener 内存马"
27+
>监听器,请求创建时触发,拿请求体和响应体做不该做的事情</Card>
28+
</Cards>
29+
30+
## ServletContext
31+
32+
> [Servlet 3.1 规范 - 4.1 ServletContext 接口介绍](https://github.com/waylau/servlet-3.1-specification/blob/master/docs/Servlet%20Context/4.1%20Introduction%20to%20the%20ServletContext%20Interface.md)
33+
34+
ServletContext 定义了 Servlet 运行的 Web 应用视图,一个 Web 应用对应一个 ServletContext。
35+
36+
ServletContext 必须支持编程式添加 Servlet、Filter 和 Listener,对框架开发者有用处。但是规定了这些方法只能在 ServletContextListener.contexInitialized 或 ServletContainerInitializer.onStartup 应用初始化的时候调用。
37+
38+
```java
39+
addServlet(String servletName, String className);
40+
addServlet(String servletName, Servlet servlet);
41+
addServlet(String servletName, Class <? extends Servlet> servletClass);
42+
addFilter(String filterName, String className);
43+
addFilter(String filterName, Filter filter);
44+
addFilter(String filterName, Class <? extends Filter> filterClass);
45+
void addListener(String className);
46+
void addListener(T t);
47+
void addListener(Class <? extends EventListener> listenerClass);
48+
```
49+
50+
这就是在注入内存马时我们需要先拿 Context 的原因(已经写在了 Servlet 规范里面啦),所以针对实现了 Servlet 规范的 Web 容器都是一个套路,并且该反射调用哪些方法也写在里面了。不过在实现的时候却写了那么多代码的原因就是,其规定了这些方法只能在应用初始化的时候调用,我们注入内存马的时候已经是应用运行时了,那些代码实际上就是将方法内的具体实现重新用反射实现一遍。

web/content/docs/servlet/meta.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"title": "Java Servlet 规范内存马",
3+
"pages": [
4+
"servlet",
5+
"filter",
6+
"listener"
7+
]
8+
}
Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,9 @@
22
title: Servlet 内存马
33
---
44

5-
Java SE 中我们可以创建 socket 服务端为用户提供服务,但需要用户使用 socket 客户端,当然也可以基于 socket 实现 HTTP 协议,WebFlux 就是这样子的存在。而在 Java EE 中,Java 制定了 Servlet 规范,来规范在 Java 中提供 HTTP 服务的编写方式,其中有两个重要的概念,Servlet 与 Servlet Container。Servlet 是基于 Java 的 Web 组件,由容器进行管理,提供动态内容。Servlet 容器用于提供基于请求/响应发送模式的服务,必须支持 HTTP,并且管理 Servlet 的生命周期,使 Servlet 在一个受限的安全环境中执行。
5+
> [Servlet 3.1 规范 — 什么是 Servlet](https://github.com/waylau/servlet-3.1-specification/blob/master/docs/Overview/1.1%20What%20is%20a%20Servlet.md)
66
7-
Servlet 规范旨在让开发者基于规范开发的应用,可以部署在任意满足规范的 Web 容器上。每个 Servlet 规范版本都引入了一些新的东西,Servlet 4.0 前的版本变更可查看 [java-servlet-version-history](https://www.codejava.net/java-ee/servlet/java-servlet-version-history)
8-
9-
目前常见的 Servlet 规范就是 [Servlet 3.1](https://github.com/waylau/servlet-3.1-specification/blob/master/docs), Tomcat 8.x 版本就是 Servlet 3.1 版本,从 Servlet 5.0 开始,Java EE 更名为 Jakarta EE,包路径从 javax 改为 jakarta。目前最新的 Servlet 规范是 [Servlet 6.1](https://jakarta.ee/zh/specifications/servlet/6.1/)。另外可以 [在此](https://tomcat.apache.org/whichversion.html) 查看 Tomcat 容器支持的 Servlet 规范版本。
10-
11-
## ServletContext
12-
13-
> [Servlet 3.1 规范 - 4.1 ServletContext 接口介绍](https://github.com/waylau/servlet-3.1-specification/blob/master/docs/Servlet%20Context/4.1%20Introduction%20to%20the%20ServletContext%20Interface.md)
14-
15-
ServletContext 定义了 Servlet 运行的 Web 应用视图,一个 Web 应用对应一个 ServletContext。
16-
17-
ServletContext 必须支持编程式添加 Servlet、Filter 和 Listener,对框架开发者有用处。但是规定了这些方法只能在 ServletContextListener.contexInitialized 或 ServletContainerInitializer.onStartup 应用初始化的时候调用。
18-
19-
```java
20-
addServlet(String servletName, String className);
21-
addServlet(String servletName, Servlet servlet);
22-
addServlet(String servletName, Class <? extends Servlet> servletClass);
23-
addFilter(String filterName, String className);
24-
addFilter(String filterName, Filter filter);
25-
addFilter(String filterName, Class <? extends Filter> filterClass);
26-
void addListener(String className);
27-
void addListener(T t);
28-
void addListener(Class <? extends EventListener> listenerClass);
29-
```
30-
31-
这就是在注入内存马时我们需要先拿 Context 的原因(已经写在了 Servlet 规范里面啦),所以针对实现了 Servlet 规范的 Web 容器都是一个套路,并且该反射调用哪些方法也写在里面了。不过在实现的时候却写了那么多代码的原因就是,其规定了这些方法只能在应用初始化的时候调用,我们注入内存马的时候已经是应用运行时了,那些代码实际上就是将方法内的具体实现重新用反射实现一遍。
7+
Servlet 是基于 Java 的 Web 组件,由容器进行管理,提供动态内容。
328

339
## HttpServlet
3410

web/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@
2626
"fumadocs-ui": "16.2.4",
2727
"i18next": "^25.7.2",
2828
"isbot": "^5.1.32",
29-
"lucide-react": "^0.560.0",
29+
"lucide-react": "^0.561.0",
3030
"motion": "^12.23.26",
3131
"radix-ui": "^1.4.3",
32-
"react": "^19.2.1",
32+
"react": "^19.2.3",
3333
"react-copy-to-clipboard": "^5.1.0",
34-
"react-dom": "^19.2.1",
34+
"react-dom": "^19.2.3",
3535
"react-hook-form": "^7.68.0",
36-
"react-i18next": "^16.4.1",
36+
"react-i18next": "^16.5.0",
3737
"react-medium-image-zoom": "^5.4.0",
3838
"react-syntax-highlighter": "^16.1.0",
3939
"sonner": "^2.0.7",
@@ -46,7 +46,7 @@
4646
"@react-router/dev": "^7.10.1",
4747
"@tailwindcss/vite": "^4.1.18",
4848
"@types/mdx": "^2.0.13",
49-
"@types/node": "^25.0.0",
49+
"@types/node": "^25.0.1",
5050
"@types/react": "^19.2.7",
5151
"@types/react-copy-to-clipboard": "^5.0.7",
5252
"@types/react-dom": "^19.2.3",

0 commit comments

Comments
 (0)