仅仅代表本人在学习中整理的知识点!
一、初始HTML
1.Hyper Text Markup Language(超文本标记语言)
超文本包括:文字、图片、音频、视频、动画等
2.HTML的基础结构:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>标题</title>
</head>
<body>
</body>
</html>
(1)<!DOCTYPE html> 这是声明文档的类型。声明位于文档中的最前面的位置,处于 <html> 标签之前。它不是一个html标签,它是用来告知 Web 浏览器页面使用了哪种 HTML版本。
(2)<html lang="en"> 它是根元素,lang是指定语言。
(3)<head> 头部开始。
(4)<meta charset="UTF-8"> 字符编码,告诉浏览器这个页面用什么字符编码。而且它必须要写在<title>的前面。
(5)<title>标题</title> 字面意思,就是浏览器标签栏中显示的文字。
(6)</head> 头部结束
(7)<body> 主体的开始,所有你想给别人看见的内容就需要放到这里面。
(8)</body> 主体的结束。
(9)</html> 根元素的结束。
3.特殊符号
| 空格 | 不间断空格,多个连续显示 | ||
| > | > | > | 大于号,用于显示HTML标签尖括号 |
| < | < | < | 小于号 |
| & | & | & | &符号本身 |
| " | " | " | 双引号 |
| ' | ' | ' | 单引号(部分浏览器不支持',建议用') |
| © | © | © | 版权符号 |
| ® | ® | ® | 注册商标 |
| ¥ | ¥ | ¥ | 人民币/日元符号 |
这里存在于一个XSS过滤过滤的操作。那什么是XSS过滤器呢?
XSS过滤器是浏览器内置或WAF(Web应用防火墙)用来检测和阻止跨站脚本攻击(XSS)的安全机制。它通过分析HTTP请求和响应中的可疑内容,拦截或修改恶意代码。
为什么会需要过滤器呢?
因为Web应用在处理用户输入时,未能严格区分数据与代码的边界。当用户提供的字符串被直接拼接到HTML、JavaScript或CSS上下文中时,该字符串中的特殊字符(如<、>、"、'、&)被浏览器解析器视为语法结构而非纯文本内容,从而改变了文档对象模型的预期结构。
如果没有过滤器会导致什么后果?
没有过滤器,浏览器会无条件执行服务器返回的任何HTML代码,包括攻击者注入的恶意脚本。这意味着XSS攻击的成功率将大幅提高,更多用户会在不知情的情况下遭受攻击。
4.图像标签<img>
4.1 图像标签的结构
<img src="图片路径" alt="图片加载失败时的替代文字" title="鼠标悬停提示">
| src | 图片URL(绝对/相对路径) | 可指向外部恶意图片(图片马) |
| alt | 图片无法显示时的文字 | 屏幕阅读器朗读,SEO友好 |
| title | 鼠标悬停时的提示 | 无安全影响 |
| width/height | 宽高(px或%) | 设置过大可能导致界面错乱 |
4.2渗透
<img>标签能搞渗透,是因为它自带的onerror和onload就像两个“后门开关”——图片加载失败或成功时都能触发JS代码执行;而data:image/svg+xml则是在图片链接里直接“藏”了一个完整网页,里面还能写<script>。这两种手法的本质都是:后端没把用户输入的内容当作纯文本处理,直接吐回给浏览器,浏览器就老老实实把它当代码执行了。
5.链接标签
5.1结构(从一个页面跳到另一个页面)
<a href="目标URL" target="_self">文本</a>
<a href="目标URL" target="_blank">文本</a>
target="_self" 在当前窗口/当前标签页中打开链接
target="_blank" 在新的窗口/新的标签页中打开链接
| <a> | 标签名 | 全称 锚点,用于定义超链接 |
| href | 属性 | 全称超文本引用,指定链接跳转的目标地址 |
| ="目标URL" | 属性值 | 可以是绝对URL、相对路径、锚点、协议、或javascript代码 |
| target | 属性 | 指定链接内容在何处打开/显示 |
| ="打开方式" | 属性值 | 决定浏览器的打开行为 |
| >链接内容</a> | 标签体 | 用户可见和可点击的内容,可以是文本、图片、或其他HTML元素 |
5.2渗透
<a>标签能搞渗透,是因为它的href可以塞进javascript:伪协议实现点击即执行;还能用表面文字伪装真实链接进行钓鱼;再加上target="_blank"会暴露window.opener,让恶意页面反过来控制原页面。三种手法的本质都是:后端把用户输入的链接原样输出到页面上,浏览器就把它当成合法功能执行了。
6.表单
6.1结构
<form method="提交方式" action="目标地址">
<!– 表单元素(输入框、按钮等) –>
</form>
| method | 规定如何发送表单数据 | 常用值:get、post。get将数据附加在URL后面(明文可见),post将数据放在请求体中(相对安全) |
| action | 表示向何处发送表单数据 | 指定处理表单数据的服务器端脚本(如 1.php、/login) |
6.2总结
由于表单里面包含需要模块,这里我们直接列出一个表格进行总结:
| 文本框 | <input type="text"> | 输入文本 | 提交 name=输入值 |
| 密码框 | <input type="password"> | 输入密码(掩码) | 提交 name=输入值(明文传输) |
| 单选按钮 | <input type="radio"> | 从多个选项选一个 | 选中的提交 name=value |
| 复选框 | <input type="checkbox"> | 从多个选项选多个 | 选中的提交 name=value(可多个) |
| 下拉列表 | <select><option></select> | 下拉选择 | 选中的提交 name=value |
| 重置按钮 | <input type="reset"> | 清空表单 | 不提交数据 |
| 提交按钮 | <input type="submit"> | 触发表单提交 | 触发表单提交 |
| 普通按钮 | <input type="button"> | 自定义功能 | 不提交数据 |
二、HTTP
1.什么是HTTP协议
HTTP是浏览器和网站服务器之间沟通的"共同语言",规定了它们之间如何"打招呼"、"提要求"、"给回应"。
2.动、静态网页对比
| 文件后缀 | .html .htm | .php .jsp .aspx |
| 内容变化 | 手动修改HTML文件 | 从数据库读取,实时变化 |
| 用户交互 | 有限(纯前端JS) | 可处理表单、登录、查询 |
| 系统资源调用 | 不能 | 可调用系统命令(有RCE风险) |
| 源代码可见性 | 用户可查看全部源代码 | 用户只能看到生成的HTML |
| 性能 | 快(无需解析) | 较慢(需执行脚本) |
3.中间件
3.1什么是中间件
中间件是Web应用运行的基础环境,位于操作系统和Web应用之间,是Web应用的流量入口和调度中心。常用的中间件有Apache、Nginx、Tomcat等。
3.2中间件在渗透测试中有什么作用?
中间件是对外暴露的第一层服务,其响应头、错误页面、默认文件等会直接泄露大量信息。中间件版本号泄露,我们就可以去找对应版本的历史漏洞,然后进行后续的渗透操作。
4.请求报文
4.1请求字段
| Host | 指定目标服务器地址和端口 |
| User-Agent | 客户端浏览器信息 |
| Referer | 当前请求的来源 |
| Cookie | 身份认证信息 |
| Content-Type | 实体数据类型 |
| Content-Length | 正文长度 |
| Last-Modified | 资源最后修改时间 |
4.2响应字段
| Set-Cookie | 服务端设置Cookie |
| Location | 重定向目标 |
| Refresh | 定时刷新 |
4.3响应码
| 200 | 成功 |
| 301/302 | 重定向 |
| 401 | 未认证 |
| 403 | 已认证但无权限 |
| 404 | 资源不存在 |
| 500 | 服务器错误 |
2 开头的状态码相当于请求报文正确获取到了服务器的响应。登录失败。
3 开头代表服务器当前网页无法提供我们需要的资源,指示我们去访问新的页面获取资源
301.302。301 当前资源永久废弃。302 转向
4 开头,代表客户端请求出现了错误。404,请求资源不存在。401 未登录,缺少 cookie 或者
token 等身份令牌。403 登录了,没有权限。
5 开头,代表服务器错误,或者路由出现了异常
![[项目] --- 基于 Spring Boot + Redis的多设计模式抽奖系统-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261031220757-6ae666bdaa3f5-220x150.png)


