proxy_lab
仓库地址 本实验分为三个部分:设置代理、并发、缓存准备部分:安装netstat工具 1sudo apt install net-tools 1. 实现一个顺序的代理服务器概述 在第一部分,设置代理来接受传入连接,读取和解析请求,转发请求到Web服务器,读取服务器的响应,并将这些响应转发给相应的客户端(用于处理HTTP/1.0的GET请求) 启动时,你的代理应该监听在命令行指定的端口上接收传入连接。一旦建立了连接,代理应该从客户端读取整个请求并解析请求。它应该确定客户端是否发送了有效的 HTTP 请求;如果是,则可以建立自己的连接到适当的 Web 服务器,然后请求客户端指定的对象。最后,代理应该读取服务器的响应并将其转发给客户端 代码实现 首先包含必须的库 12345678910#include <stdlib.h>#include <string.h>#include <unistd.h>#include <signal.h>#include <sys/socket.h>#include <netin...
malloc_lab
实验目的 这是一个实现动态内存分配器的实现,类似实现C语言标准库中的malloc free realloc 函数 mm_init(void) 初始化堆内存区域 为后续的内存分配操作做准备 成功返回0,失败返回-1 mm_malloc(size_t size) 分配至少size字节的内存 返回的指针必须8字节对齐 不能与其他已分配的内存重叠 *mm_free(void ptr) 释放之前分配的内存块 只能释放由 mm_malloc 或 mm_realloc 分配且尚未释放的块 *mm_realloc(void ptr, size_t size) 重新调整已分配内存块的大小 特殊情况处理 ptr == NULL → 相当于 mm_malloc(size) size == 0 → 相当于 mm_free(ptr) 代码实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556...
组会
NumPy+GPTNumpy 作为一个知识浅薄的人,此处不得不先补一下numpy的相关知识 NumPy 是一个免费的开源 Python 库,用于 n 维数组(也称为张量)处理和数值计算 NumPy有对大型多维数组(也称为矩阵或张量)的支持,提供了一系列高级数学函数(基本的线性代数、随机模拟、傅立叶变换、三角运算和统计运算),是 Pandas、Scikit-learn 和 SciPy 等库的基础 NumPy库的中心数据结构是多维数组(值的网格)。 Numpy的ndarray(同构的n维数组对象):每个项包含大小相同的内存块,且采用统一识别方式 NumPy数组是类似数据类型的编译,在内存中密集集中打包 底层是用C语言实现的目标代码 使用前需要向量化(变成数组) 简单使用 123456789101112131415161718192021222324252627282930import numpy as np# 创建数组np.array([1,2,3,4,5]) # 创建数组np.zeros((3,2)) # 全零 3行2列np.ones((2,3)) # 全1np.ara...
Shell实验
这个实验需要我们在tsh.c中补充相关代码实现一个shell程序(废话ing)那么根据README文档中的顺序进行补齐 添加相关的宏定义和头文件 12345#define _POSIX_C_SOURCE 199309L#define _XOPEN_SOURCE 500#include <sys/select.h>#include <sys/time.h> eval 解析和解释命令行的主例程 1. 实现内容 若用户请求的是内置命令(quit、jobs、bg 或 fg)则立即执行。否则,创建一个子进程并在该子进程的上下文中运行该任务 若任务在前台运行,等待其终止后再返回 每个子进程必须具有唯一的进程组ID,这样在键盘上输入ctrl-c(ctrl-z)时,后台运行的子进程就不会从内核接收SIGINT(SIGTSTP)信号 2. 代码实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758//...
NEMU_PA3
仓库地址 阶段一 第一次没过破防了决定直接一部到胃一起写必做一和选做一 1. 概述 根据指导书可知,我们需要实现一级高速缓存和二级告诉缓存,其中l2会多一个脏标签的处理 公式:C=B* E *S (E缓存块 B字节 S组 C总大小) l1: E=8 B=64 C=64*1024 S=128 l2: E=8 B=64 C=4*1024 *1024 S=4096 Address: tag: t bits set index: s bits block offset: b bits l1: b=6 s=7 l2: b=6 s=12 2. 实现 定义高速缓存的结构(nemu/include/memory/cache.h) 12345678910111213141516171819202122232425262728293031323334#include <stdint.h>#define CAC...
SQL注入攻击
概述 在服务器向数据库进行数据查询时,不输入正常的数据,输入代码,使数据查询变成代码执行 sql语言(部分): 选取表格中所有内容 1select * from allusers 选取指定的用户名和密码 1where username = 'QingMaxLim' And passwd = 'passwd' where关键字 SQL语句遇到where关键词时,会判断条件是真是假 某个神奇的指令 1DROP DATABASE TABLICE --删除整个数据库 5.SQL合并两个表格的内容: 1select * from table1 Union select * from table2 报错与注释 多’ 1where username = 'QingMaxLim'' And passwd = 'passwd' 执行时将’’中的视为字符数据,而不是操作符,此条语句报错,服务器可能将SQL报错信息直接返回给用户2. ‘后有– 1where username = '...
buuctf-web-wp
[极客大挑战2019]EasySQL12admin' or 1=1#123456 ‘#’是注释符,相当于 1SELECT * FROM users WHERE username='admin' or 1=1 --' AND password='123' [极客大挑战2019]Havefun1查看网页源代码,有注释 1234567 <!--$cat=$_GET['cat']; // 从URL的GET参数中获取名为'cat'的值echo $cat; // 输出这个值if($cat=='dog'){ // 如果获取到的值等于字符串'dog' echo 'Syc{cat_cat_cat_cat}'; // 就输出这个看起来像flag的字符串}--> 在url中添加get参数为cat=dog [ACTF2020新生赛]...
Cookie,Session,Token
http无状态协议 cookie 服务端产生内容,发送浏览器保存本地,cookie可以被来回传递,主要用于记录用户的会话状态、身份验证、跟踪用户的行为 优点: 在浏览器和服务器间来回传递,适用于跟踪用户行为 可以手动设置过期时间,灵活调节存储时间 缺点: 每次请求都携带cookie数据,增加流量浪费性能 在http中明文传输不够安全,容易被篡改 存储容量小,一般为4KB 应用场景:在客户端和服务器之间共享数据 + 长期存储 session(会话) 开始:浏览器访问服务器 结束:比较模糊 不同网站对与用户的会话都设定了时间(结束会话)以及唯一的ID(session ID) 一般保存在数据库中 服务器把session ID和会话结束时间发送给浏览器(cookie) localStorage(类似sessionStorage) html5引入,web API 允许在浏览器中长期存储键值对数据,不随http请求发送到服务器 优点: 存储容量较大,一般为5M 存储的数据在客户端浏览器可以永久保存,不担心丢失 操作方便,API友好,能通过JS直接访问 缺点: 一网站只...
nmap(扫描工具)使用
1.Nmap介绍1.是一款开源免费的网络探测、安全审计的工具2.通过Nmap探测服务器存活以及开放的服务,以及对目标进行安全审计3.功能:主机发现、端口扫描、版本侦测、操作系统侦测4.主要用于内网,专门扫描端口开放情况5.namp扫描ip:只有能连接到的ip,可以扫描同网段ip 2.一些常用参数 -T4指定扫描过程的级别,级别越高扫描速度越快,但也越容易被防火墙或者IDS屏蔽,一般推荐使用T4级别 -sn只进行主机发现,不进行端口扫描 -O 进行系统版本扫描 –osscan-guess 当无法精确匹配时,强制显示最接近的操作系统猜测结果 -sV进行服务版本扫描 -p 扫描指定端口 -sS发送SYN包扫描 -sT 发送TCP包扫描 -sA 发送ACK包扫描 -sU UDP扫描 -PO 不进行ping扫描 -script 指定脚本扫描 -Pn(跳过主机存活检测),不进行ping检测 -p- 扫描所有65535端口(而非常规的1000个) 3.一些实例1.扫描本机12namp 192.168.xxx.xxxnc -lvp 8888 # 打开端口 1234567891011# 探测...
网络编程
挖个坑先,欸嘿~ 计算机网络简述计算机网络概述分组交换 通过标有地址的分组进行路由选择传送数据,使通信通道仅在传送期间被占用的一种交换方式分组的组成 每个分组都由 首部 和 数据段 组成 交换方式 存储转发 节点收到分组,先暂时存储下来,在检查首部,按首部中的目的地址,找到合适的节点转发出去 特点: 1.以分组作为传输单位 2.独立选择转发路由 3.逐段占用,动态分配传输带宽 多级结构Internet TCP/IP协议 (计算机网络的世界语)分层结构 为了使各种不同计算机之间可以互联。ARPANet指定了一套计算机通信协议,即TCP/IP协议(族) 为了减少协议设计的复杂性,大多数网络模型均采用分层的方式来组织 1.每一层利用下一层提供的服务来为上一层提供服务 2.本层服务的实现细节对上层屏蔽 TCP/IP协议的四层 应用层:应用程序间沟通的层 FTP(文件传输),Telnet(远程),HTTP(超文本)等 传输层:提供进程间的数据传送服务,负责传送数据,提供应用程序端到端的逻辑通信 TCP,UDP 网络层:提供基本的数据封包传送功能,最大可...








