自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

crazyliu的博客

一个脱离高级趣味的人

  • 博客(136)
  • 收藏
  • 关注

原创 CS144 Lab0: 热身

cs144 lab0

2022-10-06 14:14:56 541 1

原创 背包问题总结

经典背包问题总结

2022-07-23 15:11:26 175

原创 算法题代码模板2

// 静态单链表int head, e[N], ne[N], idx;void init() { head = -1; idx = 0;}// 头插void insert(int x) { e[idx] = x, ne[idx] = head, head = idx++;}void remove() { head = ne[head];}// 栈int stk[N], top = -1;stk[++top] = x; // 入栈--top;.

2022-05-13 23:49:27 163

原创 算法题代码模板1

// 快速排序模板void quick_sort(int a[], int l, int r) { if (l >= r) return; int i = l - 1, j = r + 1, x = a[(l + r) / 2]; while(i < j) { do ++i; while(a[i] < x); do --j; while(a[j] > x); if (i < j) swap(a[i], a

2022-04-14 23:29:33 245

原创 信息安全 SEED Lab11 ARP Cache Poisoning Attack Lab

这部分主要是理解ARP协议和实施一些对ARP的攻击。本地共有三台虚拟机,位于同一个子网下。地址如下:NameMac AddressIP AddressA08:00:27:7e:82:5710.0.2.4B08:00:27:34:bf:1e10.0.2.5C08:00:27:62:26:6810.0.2.6Task 1. ARP缓存投毒攻击这部分主要是通过不同的方式实施ARP缓存投毒攻击。Task 1A这部分是通过ARP请求广播来实施ARP缓存投毒

2021-07-15 11:45:06 2875 1

原创 信息安全 SEED Lab10 Packet Sniffing and Spoofing Lab

这个实验是关于数据包的嗅探与伪造1. Task Set 1这部分主要是利用工具来嗅探数据包,这里用的是 scapy。 可以用下面的命令进行安装。sudo pip3 install scapy简单测试一下,构造了一个IP数据包并打印其的一些信息[07/02/21]seed@VM:~/.../Lab10$ sudo python3Python 3.5.2 (default, Nov 17 2016, 17:05:23) [GCC 5.4.0 20160609] on linuxType "he

2021-07-07 13:06:56 5600 4

原创 信息安全 SEED Lab9 SQL Injection Attack Lab

这个实验主要是尝试以下SQL注入。由于整个实验过程要用到网站,这里先配置一下。网站部署在本地,且用域名访问,所以我们需要现在 /etc/hosts文件中设置域名到 IP 的映射关系。内容如下:127.0.0.1 www.SeedLabSQLInjection.com网站使用Apache作为服务器,在 /etc/apache2/sites-available/000-default.conf配置一下网站主目录,内容如下:<VirtualHost *:80> S

2021-06-27 16:12:29 2861 2

原创 信息安全 SEED Lab8 Cross-Site Scripting (XSS) Attack Lab

这个实验主要是利用CSRF攻击来完成一些恶意的操作。由于整个实验过程要用到网站,这里先配置一下。网站都部署在本地,且用域名访问,所以我们需要现在 /etc/hosts文件中设置域名到 IP 的映射关系。内容如下:127.0.0.1 www.xsslabelgg.com网站使用Apache作为服务器,在/etc/apache2/sites-available/000-default.conf配置一下网站主目录,内容如下:<VirtualHost *:80> .

2021-06-12 17:35:25 3355 3

原创 信息安全 SEED Lab8 Cross-Site Request Forgery (CSRF) Attack Lab

这个实验主要是利用CSRF攻击来完成一些恶意的操作。由于整个实验过程要用到两个网站,这里先配置一下。两个网站都部署在本地,且用域名访问,所以我们需要现在 /etc/hosts文件中设置域名到 IP 的映射关系。内容如下:127.0.0.1 www.csrflabelgg.com127.0.0.1 www.csrflabattacker.com网站使用Apache作为服务器,在/etc/apache2/sites-available/000-default.conf配.

2021-06-08 13:51:18 2509

原创 信息安全 SEED Lab7 Race Condition Vulnerability Lab

整个实验主要是实施竞态攻击。先用下面的命令禁止使用全局可写目录的符号连接// On Ubuntu 12.04, use the following:$ sudo sysctl -w kernel.yama.protected_sticky_symlinks=0// On Ubuntu 16.04, use the following:$ sudo sysctl -w fs.protected_symlinks=0有漏洞的示例代码如下:/* vulp.c */#include &lt

2021-05-24 23:36:04 1689 3

原创 信息安全 SEED Lab6 Format String Attack Lab

这个实验主要是进行格式化字符串攻击,先用下面命令关闭系统的地址随机化功能。 sudo sysctl -w kernel.randomize_va_space=01. Task 1存在格式化字符串漏洞的程序代码如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/socket.h>..

2021-05-15 23:17:59 2679 1

原创 信息安全 SEED Lab5 Return-to-libc Attack Lab

首先在实验的最开始我们把对抗缓冲区溢出攻击的措施关闭,关闭地址随机化的代码如下sudo sysctl -w kernel.randomize_va_space=0使用如下命令去编译代码,可以禁用编译器的栈保护gcc -fno-stack-protector example.c使用如下命令去编译代码,可以指定是否可执行栈上代码For executable stack:$ gcc -z execstack -o test test.cFor non-executable stac

2021-05-05 20:45:23 1885 1

原创 信息安全 SEED Lab3 Buffer Overflow Vulnerability Lab

首先在实验的最开始我们把对抗缓冲区溢出攻击的措施关闭,后面再逐一打开。关闭地址随机化的代码如下sudo sysctl -w kernel.randomize_va_space=0运行如下:并且在编译代码时 加上下列参数告诉编译器,前者为禁用栈保护, 后者为可执行栈上代码-fno-stack-protector -z execstack再使用下列命令修改默认shell为zsh,zsh不会在effective uid 和 real uid不一致的时候将effective uid改成

2021-04-28 16:05:24 1236

原创 信息安全 SEED Lab2 Shellshock Attack

1. Task 1这部分主要是要求你将后面的攻击在两个版本上进行,一个是打了补丁的版本,另一个是有漏洞的版本,对比结果差异这部分我不在此展开,而是留到每部分进行,并进行对比分析。2. Task 2这部分主要写一个 cgi 脚本,并未涉及到攻击主要是在/usr/lib/cgi-bin 下创建一个 cgi 脚本 并配置好权限及测试。1. 有漏洞shell版本cgi脚本内容如下:#!/bin/bash_shellshockecho "Content-type: tex..

2021-04-09 12:23:30 728 2

原创 信息安全 SEED Lab1 Environment Variable and Set-UID Program Lab

1. Task 1先使用 env 查看环境变量如下图所示再使用 export MY123=456设置环境变量MY123为456,如下此时查看环境变量,可以找到名为MY123的环境变量再运行unset MY123进行清除此时查看环境变量,已经找不到了名为 MY123 的环境变量原因分析:export 和 unset 都是shell自身的命令,操作的是shell变量,而使用export命令设置的shell变量会被shell传递到子进程中, 所以shell fork..

2021-04-05 16:53:31 1299 1

原创 6.828(2018) hw:mmap()

这个作业主要是用 unix 系统的 mmap 和 unmap 函数来实现一个任务。在这个任务里,我们有一个非常大的数组,其容量超过了物理内存的大小,所以内存放不下。其每个元素的值应该是 其下标的平方根值。 我们的目标是使用 unix 系统的 mmap函数 和 信号处理 来进行按需计算, 即只对使用到的值进行计算。为了不超出物理内存限制,建议只使用一页内存,每当产生缺页,就将之前映射的页 unmap。当访问不存在的数组元素时会产生缺页,内核会转移到已注册好的 handle_sigsegv 缺页处理函数执行

2021-02-11 11:39:05 185

原创 6.828(2018) hw: xv6 log

这个作业主要是让你熟悉xv6的文件系统中log部分。该作业共分为两个部分,第一个部分是根据代码回答一些问题,第二个部分是对现有的代码做一点点优化。xv6 log设计分回顾xv6 中 log 主要是为了解决崩溃恢复的问题。因为在文件系统中,很多操作涉及到磁盘上很多块的读写,在这些读写中间如果发生系统崩溃,那么磁盘上的文件系统就会陷入一种不一致的中间状态。比如。而log的设计就可以让一连串的读写成为一个原子操作,要么这一连串读写都不成功,要么都成功,而不会出现一部分成功的中间状态。xv6 文件接口例子这

2021-01-27 18:03:41 510

原创 6.828(2018) hw: big file

这个作业主要就是让你熟悉xv6的文件系统,并能做出一些修改,主要的任务是让你增加一个二级页来增加一个文件最大的大小。准备工作修改 Makefile中的 CPUS := 2 为 CPUS := 2,并 在后面加一行 QEMUEXTRA = -snapshot,修改这两项可以让后面的测试更快。下载 big.c, 并在Makefile的 UPROGS 加一行 _big\,这个文件主要用来测试。修改 param.h 的宏定义为 #define FSSIZE 20000 // size of f

2021-01-27 12:23:36 342

原创 CSAPP Lab5: Malloc

本文为USTC SSE CSAPP 2020 Fall实验三的记录,仅供参考PPT链接在这里:Lab 5.pptx 代码在这里mm2.cmm3.c版本一代码如下(无注释 注释请看版本二):/* * mm-naive.c - The fastest, least memory-efficient malloc package. * * In this naive approach, a block is allocated by simply in...

2021-01-19 15:00:31 288

原创 CSAPP Lab4: Performance Lab

本文为USTC SSE CSAPP 2020 Fall实验三的记录,仅供参考PPT链接在这里:Lab 4.pptx 代码在这里kernels.c

2020-12-30 22:44:56 1107

原创 CSAPP Lab3: Buffer Bomb

本文为USTC SSE CSAPP 2020 Fall实验三的记录,仅供参考PPT链接在这里:CSAPP Lab3:BufferBomb

2020-12-26 22:57:12 620 3

原创 CSAPP Lab2:Binary Bomb

本文为USTC SSE CSAPP 2020 Fall实验二的记录,仅供参考,最后是第6题暴力破解的源代码下面是第6题暴力破解的源代码:import osimport itertoolsimport subprocessr = [1, 2, 3, 4, 5, 6]rr = list(itertools.permutations(r))print("len:", len(rr))an.

2020-12-23 09:04:23 367

原创 CSAPP LAB1: Data Lab

本文为USTC SSE CSAPP 2020 Fall的实验报告,lab1已做完,但没有进行后续的优化,运算符数量不是最优,仅供参考,源代码在最后最后附上所有代码:/* * CS:APP Data Lab * * <Please put your name and userid here> * 刘辉 SA20225302 * bits.c - Source file with your solutions to t

2020-12-23 08:58:19 494

原创 6.828 2020 Lab1 MapReduce 实验

1. MapReduce论文关于这片论文没啥好说的,有地方不懂得可以看课程的视频( B站有 ), MapReduce论文翻译。具体工作过程可参见下图:2. Lab 大致内容整个Lab要完成的代码文件有三个:1. Master.go 即负责分配Map和Reduce任务的主进程2. RPC.go 由于 Worker 需要通过RPC 与 Master 进程 通信,故在此放置 ...

2020-04-09 16:24:17 574 1

原创 LeetCode: 子集

给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]class Solution {public: // n 个元素的子集个数共 2...

2019-08-23 22:11:09 103

原创 LeetCode: 路径总和 II

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ...

2019-08-21 22:16:11 110

原创 LeetCode: 从中序与后序遍历序列构造二叉树

根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7/** * Definition for a binary tree ...

2019-08-19 22:25:53 166

原创 LeetCode: 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7/** * Definition for a binary tree n...

2019-08-19 22:08:58 157

原创 大桶小桶装水问题

今天看到一个小学的一个益智题,题目如下: 你有一个四升的水桶和一个九升的水桶,并且你有一个有水的水池.你最少需要多少步才能正好装满六升的水?当然这个题不是很难,但是可以引申到一般情况,对于两个大小为 m 和 n 的桶,他们所能装的水可以去那些值?容易得知,取值范围为[0, m+n], 借助一些例子可以发现,所能取到的值为 m 和 n 的最大公约数的倍数。后面简单写了个程序...

2019-08-16 22:33:43 1379

原创 LeetCode: 区间合并

给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。...

2019-07-25 20:04:14 162

原创 LeetCode: 旋转图像

给定一个 n×n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]...

2019-07-24 20:22:30 168

原创 1122. 数组的相对排序

给你两个数组,arr1 和arr2,arr2中的元素各不相同arr2 中的每个元素都出现在arr1中对 arr1中的元素进行排序,使 arr1 中项的相对顺序和arr2中的相对顺序相同。未在arr2中出现过的元素需要按照升序放在arr1的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9...

2019-07-21 20:03:41 652

原创 LeetCode: 单值二叉树

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返回 false。示例 1:输入:[1,1,1,1,1,null,1]输出:true示例 2:输入:[2,2,2,5,2]输出:false提示:给定树的节点数范围是[1, 100]。每个节点的值都是整数,范围为[0, 99]。/**...

2019-07-12 19:40:45 119

原创 LeetCode: 二叉树的层次遍历 和

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]/** * Definition for a binary tre...

2019-07-12 19:28:49 99

原创 LeetCode: 合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){...

2019-07-10 20:09:23 101

原创 LeetCode: 合并两个有序数组

给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = ...

2019-07-10 19:19:54 122

原创 C++ const 总结

C++const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,可以减少奇怪的BUG。1. 修饰普通成员变量对于指针和引用类型,const一般分为顶层const和底层const。顶层const就是表示自己本身是常量,不能改变。底层const就是表示自己所引用的或指向的是常量,不能改变自己指...

2019-05-25 16:38:39 136

原创 C++ 虚函数

一般继承(无虚函数覆盖)#include<iostream>using namespace std;class Base { public: virtual void f() { cout << "Base::f" << endl; } virtual void g() { cout << "Bas...

2019-05-23 12:44:33 88

原创 LeetCode: 矩阵置0

给定一个mxn的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]...

2019-05-13 11:05:08 383

原创 深入解析二分查找

在写代码的过程中经常会用到二分查找,不论是刷题还是写业务代码。虽然它的思想简洁,作用强大,但不一定你就能很好的掌握它。过去一直被二分查找和二分查找的变种的边界条件困扰,今天一并整理他们的边界条件。1. 二分查找int binary_search_equal(int *nums, int size, int target){ int temp; int left = 0, righ...

2019-05-10 16:53:20 364

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除