20222318 2024-2025-1 《网络与系统攻防技术》实验八实验报告

news/2024/12/20 22:42:21/文章来源:https://www.cnblogs.com/Keitaro726/p/18620067

1.实验内容

(1)Web前端HTML

能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。

(2)Web前端javascipt

理解JavaScript的基本功能,理解DOM。

在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”

尝试注入攻击:利用回显用户名注入HTML及JavaScript。

(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表

(4)Web后端:编写PHP网页,连接数据库,进行用户认证

(5)最简单的SQL注入,XSS攻击测试

(6)安装DVWA或WebGoat平台,并完成SQL注入、XSS、CSRF攻击。

2.实验过程

2.1 Web前端HTML

在kali虚拟机上输入命令netstat -tupln | grep 80检查端口是否被占用,发现没有,说明http服务是关闭的。

再用systemctl start apache2开启Apache,用systemctl status apache2确认服务状态,图中看出Apache正常启动。

进入/var/www/html目录下,输入命令vi 20222408msy.html创建并编辑html文件,复制以下html代码。这个html文件包含两个表单,涉及GET、POST方法,但是没有进一步处理。

html代码
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>表单示例</title><style>/* 整体页面 body 样式 */body {font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;background-color: #e3eaf6; /* 更换背景颜色 */display: flex;justify-content: center;align-items: center;min-height: 100vh;margin: 0;padding: 0;}/* 容器样式,采用左右分栏布局 */.container {display: flex;width: 800px;height: 500px;border-radius: 15px;box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);overflow: hidden;}/* 左侧栏样式,放置图片和一些说明文字 */.left-section {flex: 1;background-color: #3498db; /* 新的左侧栏背景色 */display: flex;flex-direction: column;justify-content: center;align-items: center;color: #fff;padding: 30px;text-align: center;}.left-section img {width: 150px;height: 150px;border-radius: 50%;margin-bottom: 20px;}.left-section h2 {font-size: 24px;margin-bottom: 10px;}/* 右侧栏样式,放置表单内容 */.right-section {flex: 1;background-color: #fff;padding: 40px;}/* 表单组通用样式 */.form-group {margin-bottom: 25px;position: relative;}/* 标签样式 */.form-group label {display: inline-block;width: 100px;text-align: right;margin-right: 15px;font-weight: bold;color: #555;}/* 输入框样式 */.form-group input[type="text"],.form-group input[type="password"],.form-group input[type="email"] {width: calc(100% - 115px); /* 根据标签宽度等调整输入框宽度 */padding: 12px 15px;border: 1px solid #ccc;border-radius: 8px;outline: none;transition: border-color 0.3s ease;}/* 输入框聚焦时样式 */.form-group input[type="text"]:focus,.form-group input[type="password"]:focus,.form-group input[type="email"]:focus {border-color: #3498db;}/* 提交按钮样式 */.form-group button[type="submit"] {width: calc(100% - 115px);padding: 12px 0;background-color: #3498db;color: #fff;border: none;border-radius: 8px;cursor: pointer;font-size: 16px;transition: background-color 0.3s ease;}.form-group button[type="submit"]:hover {background-color: #2980b9;}</style>
</head><body><div class="container"><div class="left-section"><img src="1.jpg" alt="Profile Picture"><h2>欢迎注册</h2><p>在这里开启您的新体验</p></div><div class="right-section"><form action="/submit-form" method="post"><div class="form-group"><label for="username">用户名</label><input type="text" id="username" name="username" required></div><div class="form-group"><label for="email">邮箱</label><input type="email" id="email" name="email" required></div><div class="form-group"><label for="password">密码</label><input type="password" id="password" name="password" required></div><div class="form-group"><button type="submit">注册(Post)</button></div></form><form action="/get-data" method="get"><div class="form-group"><label for="search">搜索</label><input type="text" id="search" name="search" required><button type="submit">搜索(Get)</button></div></form></div></div>
</body></html>

在文件系统中找到该html文件,双击打开后效果如下:

2.2 Web前端javascipt

  • JavaScript:一种广泛用于网页开发的高级编程语言,具有动态性、交互性,能为网页添加动态效果、实现交互逻辑,还可用于服务器端编程等。

  • DOM:即文档对象模型,是 HTML 和 XML 文档的编程接口,将网页文档表示为树状结构,通过它 JavaScript 等脚本语言可动态访问和操作网页内容及结构。

(1)在2.1的基础上,编写JavaScript验证用户名、密码的规则在用户点击登陆按钮后回显“欢迎+输入的用户名”.

加入javascript代码块后的html代码如下:

加入javascript后的代码
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>表单示例</title><style>/* 整体页面 body 样式 */body {font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;background-color: #e3eaf6; /* 更换背景颜色 */display: flex;justify-content: center;align-items: center;min-height: 100vh;margin: 0;padding: 0;}/* 容器样式,采用左右分栏布局 */.container {display: flex;width: 800px;height: 500px;border-radius: 15px;box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);overflow: hidden;}/* 左侧栏样式,放置图片和一些说明文字 */.left-section {flex: 1;background-color: #3498db; /* 新的左侧栏背景色 */display: flex;flex-direction: column;justify-content: center;align-items: center;color: #fff;padding: 30px;text-align: center;}.left-section img {width: 150px;height: 150px;border-radius: 50%;margin-bottom: 20px;}.left-section h2 {font-size: 24px;margin-bottom: 10px;}/* 右侧栏样式,放置表单内容 */.right-section {flex: 1;background-color: #fff;padding: 40px;}/* 表单组通用样式 */.form-group {margin-bottom: 25px;position: relative;}/* 标签样式 */.form-group label {display: inline-block;width: 100px;text-align: right;margin-right: 15px;font-weight: bold;color: #555;}/* 输入框样式 */.form-group input[type="text"],.form-group input[type="password"],.form-group input[type="email"] {width: calc(100% - 115px); /* 根据标签宽度等调整输入框宽度 */padding: 12px 15px;border: 1px solid #ccc;border-radius: 8px;outline: none;transition: border-color 0.3s ease;}/* 输入框聚焦时样式 */.form-group input[type="text"]:focus,.form-group input[type="password"]:focus,.form-group input[type="email"]:focus {border-color: #3498db;}/* 提交按钮样式 */.form-group button[type="submit"] {width: calc(100% - 115px);padding: 12px 0;background-color: #3498db;color: #fff;border: none;border-radius: 8px;cursor: pointer;font-size: 16px;transition: background-color 0.3s ease;}.form-group button[type="submit"]:hover {background-color: #2980b9;}</style><script>
function submit_login(event) {var username = document.getElementById('username').value;var password = document.getElementById('password').value;var usernameRegex = /^.{4,}$/;var passwordRegex = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$/;if (!usernameRegex.test(username)) {alert('用户名必须在4个字符以上');event.preventDefault();  // 阻止表单默认提交return;}if (!passwordRegex.test(password)) {alert('密码必须是6个字符以上,包含至少一个字母和一个数字');event.preventDefault();  // 阻止表单默认提交return;}document.write('欢迎 ' + username);
};
</script></head><body><div class="container"><div class="left-section"><img src="1.jpg" alt="Profile Picture"><h2>欢迎登录</h2><p>在这里开启您的新体验</p></div><div class="right-section"><form action="javascript:void(0);" method="post"><div class="form-group"><label for="username">用户名</label><input type="text" id="username" name="username" required></div><div class="form-group"><label for="password">密码</label><input type="password" id="password" name="password" required></div><div class="form-group"><button onclick="submit_login(event)" type="submit" >登录(Post)</button></div></form><form action="javascript:void(0);" method="get"><div class="form-group"><label for="search">搜索</label><input type="text" id="search" name="search" required><button type="submit">搜索(Get)</button></div></form></div></div></body></html>

最终实现的效果如下(因为换成了登录,所以把邮箱去掉了)。

填入空表单直接点击登录后:

输入符合要求的用户名,不输入密码直接点击登录后:

正确按照格式输入账号密码(不需要输入已注册的账号,此处还没有数据库,无法和后台进行比对是否存在该用户),再点击登录后:

(2)尝试注入攻击:利用回显用户名注入HTML及JavaScript。

  • 在用户名处输入<h1>lzf</h1>,输入任意符合要求的密码。

成功实现HTML注入。

  • 在用户名一栏填入<script type="text/javascript"> alert("lzf") </script>,输入任意符合要求的密码,成功实现JavaScript注入。(alert里双引号单引号都可以,javascript语法并不严格)

2.3 Web后端 :MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表

  • Kali自带mysql(又或是之前做实践提前下了)。输入systemctl start mysql启动mysql服务。输入命令systemctl status mysql确认服务已开启。

  • 输入以下命令,完成建库、创建用户、修改密码、建表等操作。
mysql建库
mysql
-- 创建数据库
CREATE DATABASE 20222318db;-- 使用数据库
USE 20222318db;-- 创建用户
CREATE USER '20222318' IDENTIFIED BY 'LZF';-- 授予用户权限
GRANT ALL PRIVILEGES ON 20222318db.* TO '20222318';
FLUSH PRIVILEGES;-- 修改用户密码(虽然这里并没改,但是语法是这个)
ALTER USER '20222318' IDENTIFIED BY 'LZF';-- 创建表(图中的箭头是指回车了,请继续输入,SQL语句一定要以分号结尾,如果不小心多打了一个回车也没事,就是要写个分号)
CREATE TABLE onetable (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,pwd VARCHAR(255) NOT NULL
);-- 插入数据
INSERT INTO onetable (name, pwd) VALUES ('longzhenfeng', '20222318lzf');-- 查看表中所有内容
SELECT * FROM onetable;

顺带一提:为了防止密码不符合html文件所要求的密码,后面又改了一下密码();

2.4 Web后端:编写PHP网页,连接数据库,进行用户认证

先输入命令apt-get install php下载php。PHP 是一种广泛使用的开源通用脚本语言,尤其适用于 web 开发领域,在 Kali 虚拟机中下载 PHP 后,可以用于渗透测试、开发安全工具、搭建特定的测试环境等。

PHP 代码需要在 PHP 解释器的环境中才能被执行。下载并安装 PHP 后,系统会安装 PHP 解释器以及相关的库和模块,这些组件共同构成了 PHP 的运行环境。当你访问一个.php文件时,服务器会将该文件交给 PHP 解释器进行处理,PHP 解释器会解析文件中的代码,并根据代码的逻辑生成相应的 HTML 输出,然后返回给客户端浏览器。

在 Kali 虚拟机中写 PHP 代码通常需要创建一个以.php为后缀的文件,而下载 PHP 是为了让系统能够解释和执行这个文件。

/var/www/html目录下输入命令``编写以下php代码,实现连接数据库和用户认证。(图中目录不对的问题在问题与解决方案部分提到了)

PHP代码
<?php
$host = 'localhost';
$dbname = '20222318db';
$user = 'user20222318';
$password = '2318LZF';//创建数据库连接
$conn = new mysqli($host, $user, $password, $dbname);//检查连接是否成功
if ($conn->connect_error) {die("数据库连接失败: " . $conn->connect_error);
}//获取POST数据
$username = $_POST['username'];
$password = $_POST['password'];//使用查询语句进行查询
$sql = "SELECT * FROM onetable WHERE name='$username' AND pwd='$password'";  
$result = $conn->query($sql);//检查是否有匹配的记录
if ($result->num_rows > 0) {echo "欢迎登录成功: " . $username . "!";
} else {echo "用户名或密码错误";
}//关闭结果集和预处理语句
$result->close();
$stmt->close();//关闭数据库连接
$conn->close();
?>

在html代码中,修改登录表单的属性如下,删除按钮的onclick属性。

(修改前如下)

(修改后如下)

完成上述操作后,查看实现效果。

输入错误用户名和密码的效果如下:

输入正确用户名和密码的效果如下:

2.5 最简单的SQL注入,XSS攻击测试

  • SQL注入:用户名输入任意符合要求的字符串,密码中输入' OR '1'='1,即可成功登录,实现了SQL注入。(因为库中并没有Hello这个用户,但是登录进去了)

  • 在用户名中输入<script>alert("xss atack succeed.");</script>,密码中输入' OR '1'='1,网页弹出窗口(同时也成功登录),实现了XSS攻击。

2.6安装DVWA或WebGoat平台,并完成SQL注入、XSS、CSRF攻击。

(1)搭建靶场

参考搭建Webgoat靶场教程在虚拟机中搭建Webgoat练习平台。

下载完压缩包后,在压缩包目录下输入java -jar webgoat-2023.8.jar命令开始运行.(以自己下载的压缩包名字为准)

在下面一堆提示中,找到提示信息请打开http://127.0.0.1:8080/Webgoat这个链接来开始使用Webgoat。

保持终端开启,在浏览器输入http://127.0.0.1:8080/Webgoat,点击注册,随便输一下账号密码,进入主页即可。

(2)SQL注入练习

根据图中指示找到SQL练习部分。

  • 灰色部分是一些基础知识的介绍。第二~五题是基础语句的练习。

  • 第二题是练习UPDATE语句。

构建更新(UPDATE)语句的格式如下:

UPDATE table_name SET column1 = value1, column2 = value2,...WHERE condition;

格式解释:

  • UPDATE:这是关键字,用于告诉数据库要执行更新操作。
  • table_name:要更新数据的表的名称。
  • SET:指定要更新的列及其新值。可以同时更新多个列,用逗号分隔每个 “列 = 值” 对。
  • column1 = value1, column2 = value2,...:具体的列名和对应的新值。值可以是常量、表达式或通过子查询获取的值。
  • WHERE:用于指定更新的条件。只有满足该条件的行才会被更新。如果省略WHERE子句,则会更新表中的所有行。

根据题目给出表格的名字为employees,要更新的列是 DEPARTMENT 中的 Sales,条件是名字的检索条件即first_name = 'Tobi' AND last_name = 'Barnett'

则更新语句为(记得带分号)
UPDATE employees SET DEPARTMENT = 'Sales' WHERE first_name = 'Tobi' AND last_name = 'Barnett';

  • 第三题是练习SELECT语句。

构建查询 (SELECT) 语句的格式如下:
SELECT column1, column2,... FROM table_name WHERE condition;

格式解释:

  • SELECT:这是关键字,用于告诉数据库要执行查询操作,后面跟着要查询返回的列名,如果用 “*” 则表示查询所有列。
  • column1, column2,... :具体要查询返回的列的名称,可以指定多个列,用逗号分隔,若想获取所有列的数据就用 “*” 代表所有列。
  • FROM:也是关键字,用于指定要从哪个表中查询数据,后面接表名。
  • table_name:代表具体的表的名称,即数据来源的表。
  • WHERE:用来设置筛选条件,只有满足此条件的行才会被查询出来。如果省略 WHERE 子句,将返回表中所有行的数据。

根据题目给出表格的名字为employees,要查询的是所有列(因为要看Bob Franco的所有信息)(用 “*” 表示),条件是名字的检索条件即first_name = 'Bob' AND last_name = 'Franco'

则查询语句为
SELECT * FROM employees WHERE first_name = 'Bob' AND last_name = 'Franco';

  • 第四题是练习ALTER语句。

构建修改表结构(ALTER TABLE)语句用于添加列的格式如下:
ALTER TABLE table_name ADD COLUMN new_column_name data_type;

格式解释:

  • ALTER TABLE:这是关键字组合,用于告知数据库要对表的结构执行修改操作。
  • table_name:代表具体要进行结构修改的表的名称,明确操作的对象是哪张表。
  • ADD COLUMN:是 ALTER TABLE 语句中用于添加新列的子句,表明接下来要往表中添加新的列。
  • new_column_name:指的是要添加的新列的名称,可自行按照需求进行定义,使其符合业务逻辑和数据规范。
  • data_type:用于指定新添加列的数据类型,不同的数据库系统支持多种数据类型,像这里的 varchar 就是一种用于存储可变长度字符串的数据类型,括号里的数字(如示例中的 20)通常表示该数据类型的相关限制,对于 varchar 来说就是限定了最大长度为 20 个字符。

根据题目给出要操作的表名字为employees,要添加的列名为phone,其对应的数据类型设定为varchar(20),用于存储长度最多为 20 个字符的电话号码相关字符串信息。

则对应的语句为
ALTER TABLE employees ADD COLUMN phone varchar(20);

  • 第五题是练习GRANT语句。

构建授权(GRANT)语句的格式如下:
GRANT privileges ON object TO user;

格式解释:

  • GRANT:这是关键字,用于向用户授予相应的权限操作,表明接下来执行的是授权动作。
  • privileges:代表具体要授予的权限,例如 SELECT(查询权限)、INSERT(插入权限)、UPDATE(更新权限)等,可以同时授予多个权限,用逗号分隔。在这个语句中为 SELECT,即授予查询的权限。
  • ON:关键字,用于指定权限所应用的对象,表明是针对什么进行权限授予,比如是表、视图等数据库对象。
  • object:指具体的数据库对象,像表名、视图名等,这里对应的是grant_rights,也就是权限作用的对象是名为grant_rights的这个东西(可能是表、视图等情况,具体取决于数据库中的实际定义)。
  • TO:关键字,用于指向要授予权限的目标用户或者角色等,表明把前面定义的权限给到谁。
  • user:就是具体要接收权限的用户或者角色名称,在此语句中为unauthorized_user,也就是将相应权限授予名为unauthorized_user的这个主体。

根据题目给出的要授予的权限是SELECT(查询权限),权限应用的对象是grant_rights,接收权限的主体是unauthorized_user

则对应的语句为(记得带分号)
GRANT SELECT ON grant_rights TO unauthorized_user;

从这里开始就是SQL注入的练习了!!

  • 第九题考察通过注入看到表中所有用户的数据。

构建查询语句的代码如下
"SELECT * FROM user_data WHERE first_name = 'John' AND last_name = '" + lastName + "'";

想要查询所有用户数据,要从后面的条件入手,输入内容为Smith' or '1'='1

则查询语句为
SELECT * FROM user_data WHERE first_name = 'John' and last_name 'Smith' or '1' = '1';
由于'1' = '1'永真,所以就会返回所有表的数据。

  • 第十题考察数字型SQL注入,目的也是看到表中所有用户的数据。

构建查询语句的代码如下
"SELECT * FROM user_data WHERE login_count = " + Login_Count + " AND userid = " + User_ID;

输入内容为

  • Login_count=1
  • User_id=1 or 1=1

则最终的查询语句是
SELECT * From user_data WHERE Login_Count = 1 and userid= 1 or 1=1;
由于1=1永真,所以就会返回所有表的数据。

-第十一题考察字符串型SQL注入,目的也是看到表中所有用户的数据。

构建查询语句的代码如下
"SELECT * FROM employees WHERE last_name = '" + name + "' AND auth_tan = '" + auth_tan + "'";

输入内容为

  • Employee Name:Smith
  • Authentication TAN:3SL99A' OR '1'='1

则最终的查询语句是
SELECT * FROM employees WHERE last_name = 'Smith' AND auth_tan = '3SL99A' OR '1'='1';
由于'1' = '1'永真,所以就会返回所有表的数据。

  • 第十二题考察通过注入改变工资数量。

构建查询语句的代码如下
"SELECT * FROM employees WHERE last_name = '" + name + "' AND auth_tan = '" + auth_tan + "'";

输入内容为
Employee Name:Smith
Authentication TAN:1'; UPDATE employees SET SALARY = 999999 WHERE LAST_NAME = 'Smith'; --

则最终执行的语句是
SELECT * FROM employees WHERE last_name = 'Smith' AND auth_tan = '1'; UPDATE employees SET SALARY = 999999 WHERE LAST_NAME = 'Smith'; --'

auth_tan开头的';'使得查询语句结束,之后就写入了完整的更新语句,并通过'--'使得后续的内容成为注释,因此就可以执行更新语句改变工资。

  • 第十三题考察删除日志表,避免留痕。

输入内容为1'; drop table access_log; --

开头的';'使得查询语句结束,之后写入完整的删表语句,并通过'--'使得后续的内容成为注释,因此就可以执行删表语句。

(3)XSS攻击练习

根据图中指示找到XSS练习部分。

  • 第二题是教我用控制台输出一些javascript语句。

按下F12,选择console查看控制台信息。输入alert("XSS Test");可以看到弹窗。

输入alert(document.cokie);可以查看cookie信息。

这一题要求复制一个当前窗口,在第二个窗口按照同样的方式输出cookie信息,比对发现一致即可提交。(事实也确实一样,说明cookie会在同一个网站传递)

  • 第七题考察反射型XSS攻击。

题干中说多用<script>alert()</script>语句检测哪个输入框是没经过审查的,容易被XSS攻击的,所以多去试试就好,

一共有两个提交框,所以需要测试哪个提交框可以完成攻击。

分别尝试在两个框中输入<script>alert('xss2318')</script>,发现在第一个框中输入时会弹框,说明XSS攻击成功。

但是第二个框就不会,说明第二个框比较“不 vulnerable”

  • 第十题考察基于DOM的XSS攻击

需要先找到在生产过程中留在应用程序中的测试代码的路径。

题目当中告诉了我们"The ‘base route’ in this case is: start.mvc#lesson",而js文件中写道“‘test/:param’: ‘testRoute’”,因此答案就是start.mvc#test/

(剩下的太难不会)

(4)CSRF攻击练习

根据图中指示找到CSRF练习部分。

(其他的太难了看不懂)

  • 第八题考察登录CSRF攻击。

在这个页面登录的账号是keitaro,把这个页面保留,不关闭。

另开一个窗口进入webgoat,在另一个页面注册并登录账号csrf-keitaro。

可以看到登录了两个账号。再回到原本的页面点击按钮,成功完成了攻击。

3.问题及解决方案

  • 问题1:在/home/keitaro目录下编写php文件后,点击html文件输入账号密码后发现找不到php文件。(还以为localhost是指在这个用户的文件夹里)

  • 问题1解决方案:将php文件复制到/var/www/html目录下,localhost一般在那工作(html文件也在此文件夹)。

  • 问题2:练习CSRF攻击时显示无法登录,输入url为http://127.0.0.1:8080/WebGoat进入网站后,注意到url后面跟这个?error,也不知道为什么。

  • 问题2解决方案:输入url改为http://127.0.0.1:8080/WebGoat/login,直接进入登录页面,多进几次就没问题了。

4.学习感悟、思考等

在本次实验过程中,我学习了前端领域的一些技术包括 HTML、CSS 以及 Javascript,同时也学习了数据库查询语言 SQL,自身知识储备得到了极大拓展。我还初步学习了 HTML 注入、Javascript 注入、SQL 注入、跨站脚本攻击(XSS)以及跨站请求伪造(CSRF)等一系列网络攻击手段。通过实践操作,我发现在 Web 开发里有一处极易被忽视的要点,那就是如果对用户输入的数据以及客户端的数据校验与处理不够严谨,便极有可能引发严重的安全隐患。因此,我深刻认识到,Web开发者不仅要筑牢扎实的编程基础,还必须时刻保持较高的安全警觉,密切关注安全领域的最新资讯,持续提升自身的安全防护技能。

回顾本学期的学习与实践经历,我深感收获颇丰,这些宝贵的知识与经验,无疑将会成为我未来职业生涯中的重要助力,为我在 Web 安全领域的深入探索与长远发展筑牢根基。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/856133.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-2025-1 20241407《计算机基础与程序设计》第十三周学习总结

作业信息这个作业属于哪个课程 2024-2025-1计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十三周作业这个作业的目标 学习结构体和数据结构基础相关知识点作业正文 本博客教材学习内容总结 《C语言程序设计》第五版第十二章主要介绍了结构体和数据…

微软积分商城签到,每日自动完成 Microsoft Rewards 任务获取积分奖励

只支持使用 脚本猫 扩展在浏览器后台定时运行脚本主页:https://scriptcat.org/zh-CN/script-show-page/1703# Microsoft Rewards简介:https://www.microsoft.com/zh-CN/rewards/about 帮助:https://go.microsoft.com/fwlink/?linkid=2132733# FAQ请严格遵守三个小原则,避免…

iostat

##iostat是查看磁盘活动统计情况##显示所有设备负载情况 r/s: 每秒完成的读 I/O 设备次数。即 rio/s;w/s: 每秒完成的写 I/O 设备次数。即 wio/s等 iostat ##每隔2秒刷新磁盘IO信息,并且每次显示3次 iostat 2 3#显示某个磁盘的IO信息 iostat -d sda1##显示tty和cpu信息 ios…

Flutter 开发中的代码常见错误汇总 All In One

Flutter 开发中的代码常见错误汇总 All In One 小米汽车 FlutterFlutter 开发中的代码常见错误汇总 All In One小米汽车 Flutter Dead Codedemos(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原…

AI车辆占道识别摄像机

AI车辆占道识别摄像机通过安装在道路上的摄像头,对车辆行驶过程中是否存在占道现象进行实时监测和分析。利用深度学习算法,摄像机能够准确识别车辆是否违反交通规则占用了行人横道、非机动车道或紧急车道等区域。一旦识别到车辆占道行为,摄像机会立即发出警报,记录违规车辆…

Neo4j Desktop 无法打开

目录一、Warn:DeskTop UI interface wont displayed1、表现形式:进程运行,但是 Neo4j Desktop UI 界面无法显示2、Debug info3、原因分析4、解决方案4.1、断网4.2、手动设置代理5、参考 一、Warn:DeskTop UI interface wont displayed 1、表现形式:进程运行,但是 Neo4j D…

20222234 石国力 《网络与系统攻防技术》 实验八

1.实验内容 1.Web前端HTML 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。 2.Web前端javascipt 理解JavaScript的基本功能,理解DOM。 在1的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的…

2024 GoLang安装使用教程(附激活以及常见问题处理)

第一步:下载GoLang 安装包 访问GoLang官网,下载GoLang第二步: 安装 GoLang下载完成后,进行安装,next,安装完成点击xx 关掉程序! 第三步: 下载补丁 GoLang补丁文件 点击获取补丁下载成功后,打开标注的文件文件夹 , 进入到文件夹 /jetbra 注意: 这个文件夹单独copy一份,…

2024-2025-1 20241403 《计算机基础与程序设计》第十三周学习总结

2024-2025-1 20241403 《计算机基础与程序设计》第十三周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 结构体的…

Python中所有子图标签Legend显示详解

在数据可视化中,图例(legend)是一个非常重要的元素,它能够帮助读者理解图表中不同元素的含义。特别是在使用Python进行可视化时,matplotlib库是一个非常强大的工具,能够轻松创建包含多个子图的图表,并在每个子图中显示图例。本文将详细介绍如何在Python的matplotlib库中…

gtest简单用法

当前开发环境中,无法把测试代码提交到仓库,所以单测另起一个目录 . ├── gtest │ ├── CMakeLists.txt # 这是最外层的cmake,用以管理所有内部的cmake │ └── sample_test # 这是sample_src对应的测试用例,该目录下有一个单独的cmake │ ├── CMakeList…

跨境电商速卖通实训教学平台课程题库答案

近年来,随着全球化的不断加深与国际电子商务市场的蓬勃发展,中国的跨境电商产业进入了迅猛增长期。速卖通作为阿里集团推出的跨境电商交易平台之一,在全球尤其是俄罗斯市场占据了显著地位,其交易规模的持续增长吸引了众多企业和个人投身其中。在此背景下,对具有速卖通专业…