实训Day4

一、总结反射型、存储型、DOM型XSS特点和区别

(一、)特点

1、反射型XSS(非持久型XSS)

特点

非持久性:攻击载荷(payload)不会存储在目标服务器上,而是通过URL参数、表单字段或HTTP头等方式传送到受害者的浏览器并执行。

特定目标:通常针对特定的用户进行攻击,攻击者需要诱骗受害者点击含有恶意脚本的链接。

即时性:攻击一旦发起,只要受害者点击了恶意链接,攻击就会立即执行。

2、存储型XSS(持久型XSS)

特点

持久性:攻击脚本被永久地存放在目标服务器的数据库或文件中,只要这些数据被正常用户访问,就会触发攻击。

广泛影响:由于攻击脚本存储在服务器上,因此可能影响到所有访问该页面的用户,具有较高的隐蔽性和危害性。

长期威胁:一旦攻击成功,攻击者可以长期利用该漏洞进行攻击,除非漏洞被修复。

3、DOM型XSS

特点

客户端执行:攻击发生在客户端的浏览器上,不涉及服务器端的数据交互。

动态内容:攻击通常与网页的动态生成内容有关,如JavaScript生成的内容。

隐蔽性:由于攻击发生在客户端,服务器端的日志可能不会记录任何异常,使得检测和追踪变得更加困难。

(二)、区别

反射型XSS

存储型XSS

DOM型XSS

持久性

非持久性

持久性

不涉及服务器端,但可长期存在(依赖于页面代码)

攻击方式

通过URL、表单等传递恶意脚本

恶意脚本存储在服务器,通过正常访问触发

客户端DOM操作触发恶意脚本

影响范围

特定目标

广泛影响(所有访问页面的用户)

取决于页面访问量和恶意脚本的触发条件

检测难度

相对较低(通过URL等可见)

相对较高(需要检查服务器存储的数据)

非常高(可能无服务器日志记录)

防御策略

输入验证、输出转义

后端数据清理、前端转义

安全的DOM操作、输入验证、输出转义

二、XSS的fuzz字典

三、XSS靶场挑战

第一关

第二关

第三关

第四关

第五关

以下是一个简单的C语言万年历的实训报告,供您参考: 一、实训目的 本次实训的主要目的是通过编写一个简单的C语言万年历程序,巩固C语言基本语法和编程思想,提高编程能力和解决问题的能力。 二、实训要求 1、能够使用C语言基本语法和控制语句编写程序。 2、能够使用数组来存储和操作数据。 3、能够使用函数来实现模块化编程。 4、能够使用指针来操作内存中的数据。 5、能够使用文件来读取和写入数据。 三、实训内容 1、程序功能 本程序实现了一个简单的万年历功能,可以通过输入年份和月份来显示该月的日历。 2、程序实现 以下是本程序的主要代码实现: ```c #include <stdio.h> // 判断是否为闰年 int is_leap_year(int year) { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { return 1; } else { return 0; } } // 获取某个月份的总天数 int get_days(int year, int month) { int days[] = {31, 28 + is_leap_year(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; return days[month - 1]; } // 获取某个日期是星期几 int get_weekday(int year, int month, int day) { if (month == 1 || month == 2) { year--; month += 12; } int c = year / 100; int y = year % 100; int w = y + y / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1; w = (w % 7 + 7) % 7; return w; } // 显示日历 void show_calendar(int year, int month) { int days = get_days(year, month); int weekday = get_weekday(year, month, 1); printf(" 日 一 二 三 四 五 六\n"); int i; for (i = 0; i < weekday; i++) { printf(" "); } for (i = 1; i <= days; i++) { printf("%2d ", i); if ((weekday + i) % 7 == 0) { printf("\n"); } } if ((weekday + days) % 7 != 0) { printf("\n"); } } int main() { int year, month; printf("请输入年份:"); scanf("%d", &year); printf("请输入月份:"); scanf("%d", &month); if (month < 1 || month > 12) { printf("月份输入错误!\n"); return 1; } printf(" %d年%d月\n", year, month); show_calendar(year, month); return 0; } ``` 四、实训总结 通过本次实训,我学会了如何使用C语言来编写一个简单的万年历程序,巩固了C语言基本语法和编程思想,加强了对函数、数组、指针、文件等概念和用法的理解,提高了编程能力和解决问题的能力。同时,我也意识到在编程过程中需要注重代码的规范、可读性和可维护性,这对于日后的开发工作非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值