科软课程资料关注公众号【小柒很爱喵】
文章平均质量分 57
小柒很爱喵
十年后的博客专家
展开
-
【科软课程-信息安全】Lab13 Packet Sniffing and Spoofing
1.0 概述数据包嗅探和欺骗是网络安全中的两个重要概念;它们是网络通信中的两大威胁。能够理解这两种威胁对于理解网络中的安全措施至关重要。有很多包嗅探和欺骗工具,如Wireshark、Tcpdump、Netwox、Scapy等。其中一些工具被安全专家和攻击者广泛使用。能够使用这些工具对学生来说很重要,但是在网络安全课程中,对学生来说更重要的是理解这些工具是如何工作的,即,。数据包嗅探和欺骗是如何在软件中实现的。本实验的目标是双重的:学习使用工具和理解这些工具背后的技术。对于第二个对象,学生将编写简单的原创 2021-07-08 18:09:58 · 2536 阅读 · 1 评论 -
【科软课程-信息安全】Lab12 SQL Injection Attack
1.0 概述SQL注入是一种代码注入技术,它利用web应用程序和数据库服务器之间接口的漏洞。在将用户输入发送到后端数据库服务器之前,如果在web应用程序中没有正确检查用户输入,就会出现该漏洞。许多网络应用程序从用户那里获取输入,然后使用这些输入来构建SQL查询,这样他们就可以从数据库中获取信息。Web应用程序还使用SQL查询将信息存储在数据库中。这些是web应用程序开发中的常见实践。如果不仔细构建SQL查询,可能会出现SQL注入漏洞。SQL注入是最常见的网络应用攻击之一。在本实验中,我们创建了一原创 2021-06-30 19:09:06 · 1206 阅读 · 1 评论 -
【科软课程-信息安全】Lab10 Cross-Site Request Forgery (CSRF) Attack
1.0 概述本实验的目的是帮助学生理解跨站点请求伪造(CSRF)攻击。CSRF攻击涉及受害用户、可信站点和恶意站点。受害用户在访问恶意站点时与受信任站点保持活动会话。恶意站点将对受信任站点的HTTP请求注入受害用户会话,从而造成损害。在本实验中,学生将使用CSRF攻击来攻击社交网络应用程序。开源的社交网络应用程序叫做Elgg,它已经安装在我们的虚拟机中了。Elgg有对付CSRF的对策,但是我们为了这个实验室的目的已经关掉了。本实验涵盖以下主题:跨站点请求伪造攻击 CSRF对策:秘密令牌和同站点原创 2021-06-07 21:46:17 · 4535 阅读 · 4 评论 -
【科软课程-信息安全】Lab8 Race Condition new
1.0 概述本实验的学习目标是让学生通过将他们从课堂上学到的关于漏洞的知识付诸行动,获得关于竞态条件漏洞的第一手经验。当多个进程同时访问和操作相同的数据时,就会出现争用情况,并且执行的结果取决于访问发生的特定顺序。如果一个特权程序有一个竞争条件漏洞,攻击者可以运行一个并行进程来“竞争”特权程序,意图改变程序的行为。在这个实验中,学生们将会得到一个带有竞态条件漏洞的程序;他们的任务是开发一个利用漏洞并获得root权限的方案。除了攻击之外,学生们还将被引导浏览几种可以用来对抗竞态条件攻击的保护方案。学生原创 2021-05-27 15:05:25 · 805 阅读 · 0 评论 -
【科软课程-信息安全】Lab7 Format String Vulnerability Lab
目录1.0 概述2.0 实验任务2.1 task1 易受攻击程序2.2 task2 理解堆栈的布局2.3 task3崩溃程序2.4 task4 打印出服务器程序的内存2.5 task5 改变服务器程序的内存2.6 task6将恶意代码注入服务器程序2.7 task7 获取反向shell2.8 task8解决问题1.0 概述C中的printf()函数是用来按照一种格式打印出一个字符串的。它的第一个参数叫做格式字符串,它定义了字符串的格式。格式字符串使用...原创 2021-05-19 20:55:26 · 7585 阅读 · 8 评论 -
【信息安全-科软课程】Lab6 Return-to-libc Attack
目录1.0 前言2.0实验任务2.1关闭对策2.2易受攻击程序2.3 task1找出libc函数的地址2.4 task2 将shell字符串放入内存2.5 task3利用缓冲区溢出漏洞2.6 task4打开地址随机化2.7 task5 击败shell的对策1.0 前言本实验的学习目标是让学生获得一种有趣的缓冲区溢出攻击变体的第一手经验;这种攻击可以绕过目前在主要Linux操作系统中实施的现有保护方案。利用缓冲区溢出漏洞的一种常见方法是用恶意外壳代码溢出...原创 2021-05-03 19:48:21 · 935 阅读 · 4 评论 -
Git详细命令
基本命令:本地库初始化:设置签名:项目级别/仓库级别:仅在当前本地库范围内有效git config user.name sunnygit config user.email 123@ustc.edu.cn系统用户级别:登录当前操作系统的用户范围git config --global user.name sunnygit config --global user.email 123@ustc.edu.cn状态查看:git status //查看工作区、暂存区状态添加操作:..原创 2021-04-26 16:17:05 · 179 阅读 · 1 评论 -
【信息安全-科软课程】Lab4 Buffer Overflow
1.0 前言本实验的学习目标是让学生通过将他们从课堂上学到的关于缓冲区溢出漏洞的知识付诸实践,获得关于该漏洞的第一手经验。缓冲区溢出被定义为程序试图将数据写入预先分配的固定长度缓冲区边界之外的情况。恶意用户可以利用此漏洞来改变程序的流量控制,从而导致恶意代码的执行。在本实验中,学生将被给予一个具有缓冲区溢出漏洞的程序;他们的任务是开发一个利用漏洞的方案,并最终获得root权限。除了攻击之外,学生将被引导浏览操作系统中已经实现的几种保护方案,以对抗缓冲区溢出攻击。学生需要评估这些方案是否有效,并解释原原创 2021-04-26 14:57:01 · 780 阅读 · 0 评论 -
【科软课程NLP】自然语言处理复习
目录自然语言处理1(分词):https://zhuanlan.zhihu.com/p/109054674自然语言处理2(神经网络):https://zhuanlan.zhihu.com/p/113313445自然语言处理3(词向量):https://zhuanlan.zhihu.com/p/115532919自然语言处理4(循环神经网络):https://zhuanlan.zhihu.com/p/129293598自然语言处理5(seq2seq):https://zhuanlan.zhi原创 2021-04-24 17:22:21 · 2283 阅读 · 4 评论 -
【信息安全-科软课程】Lab3 Shellshock Attack
1.0 前言2014年9月24日,发现了Bash的一个严重漏洞。昵称为Shellshock的这个漏洞可以利用许多系统,并从远程或本地机器上启动。在这个实验室里,学生们需要研究这种攻击,这样他们就能了解Shellshock的弱点。这个实验的学习目标是让学生对这种有趣的攻击有第一手的经验,了解它是如何运作的,并思考我们能从这种攻击中学到什么。该实验室的第一个版本是在2014年9月29日开发的,也就是袭击被报道的五天之后。这是2014年9月30日在我们计算机安全课上分配给学生的。SEED项目的一个重要任务是迅原创 2021-04-13 14:08:37 · 688 阅读 · 0 评论 -
【信息安全-科软课程】Lab2环境变量和Set-UID程序实验
目录1.0 前言2.0 实验任务2.1任务1:操纵环境变量2.2任务2:将环境变量从父进程传递给子进程1.0 前言本实验的学习目的是让学生了解环境变量如何影响程式及系统的行为。环境变量是一组动态命名值,可以影响正在运行的进程在计算机上的行为方式。自1979年它们被引入Unix以来,大多数操作系统都使用它们。尽管环境变量影响程序行为,但许多程序员并不清楚它们是如何实现的。因此,如果一个程序使用了环境变量,但是程序员不知道它们被使用了,那么这个程序可能会有漏洞。在这个实验中,学.原创 2021-04-09 22:53:54 · 2275 阅读 · 1 评论 -
【信息安全-科软课程】Lab1软件安装
How to use VirtualBox to Run SEED Ubuntu VM?首先、安装VirtualBox,地址:https://www.virtualbox.org/wiki/DownloadsStep 1: 在VirtualBox中新建虚拟机Step2:提供名称并选择操作系统类型和版本不要选择Ubuntu(64位),即使你的机器是64位的。我们预构建的VM是32位的Ubuntu。Step 3: 设置内存大小Step 4: 选择我们提供的预构建的VM文件原创 2021-04-09 20:26:39 · 568 阅读 · 1 评论 -
【中科大软院】IOS期末复习思维导图
有用的话给学姐点个赞吧~~~考试过过过~~原创 2021-03-19 19:50:09 · 265 阅读 · 0 评论 -
【中科大数据挖掘】期末复习导图
整理不易、科软的师弟师妹给学姐点个赞吧~~!!!需要更多科软课程资料关注“小柒很爱喵”,回复【Q群】进群拿导图、和各科复习资料。原创 2021-03-15 12:24:49 · 360 阅读 · 0 评论 -
【LeetCode-easy】调整数组顺序使奇数位于偶数前面(Java)
public int[] exchange(int[] nums) { if(nums==null) return nums; int first = 0; int last = nums.length-1; while(first<last){ if (nums[first]%2==0&&nums[last]%2==1){ //如果前面的数...原创 2021-02-07 17:10:31 · 125 阅读 · 0 评论 -
【LeetCode-easy】二叉搜索树的最近公共祖先(Java)
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root==null) return null; if(root == p|| root == q) return root; //如果p、q分别在root的左右两边,也就是一个比root小、一个比root大、则返回root ...原创 2021-02-03 20:25:21 · 80 阅读 · 0 评论 -
【LeetCode-easy】二叉树的最近公共祖先(Java)
public class Solution16 {// 二叉树的最近公共祖先// * 思路:// * 三种情况:// * 1、p q 一个在左子树 一个在右子树 那么当前节点即是最近公共祖先// * 2、p q 都在左子树 p / q// * 3、p q 都在右子树 p / q public TreeNode lowestCommonAncestor(TreeNode root, TreeN...原创 2021-02-03 20:08:02 · 95 阅读 · 0 评论 -
【LeetCode-easy】和为s的连续正数序列(Java)
class Solution { public int[][] findContinuousSequence(int target){ //创建一个List、里面对象是数组 List<int[]> vec = new ArrayList<int[]>(); for(int l=1, r=2; l < r;){ int sum = (l+r)*(r-l+1)/ 2...原创 2021-02-03 19:28:38 · 95 阅读 · 0 评论 -
【LeetCode-easy】二叉搜索树第k大的结点(Java)
class Solution { private int res = 0, n = 0; public int kthLargest(TreeNode root, int k) { //思路:递归、右、中、左,数递归的次数为k if(root ==null) return 0; searchTree(root,k); return res; } public void search...原创 2021-01-29 21:52:46 · 96 阅读 · 0 评论 -
【LeetCode-easy】合并两个排序的链表(Java)
//2021-2-29//剑指offer 简单//合并两个排序的链表public class Solution13 { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1==null){ return l2; }else if(l2==null){ return l1; } ListNode new...原创 2021-01-29 21:49:53 · 76 阅读 · 0 评论 -
【LeetCode-easy】用两个栈实现队列(Java)
class CQueue { Stack<Integer> stack1 ; Stack<Integer> stack2 ; public CQueue() { stack1 = new Stack<>(); stack2 = new Stack<>(); } public void appendTail(int value) { stack1.push(value...原创 2021-01-29 21:48:03 · 85 阅读 · 0 评论 -
【LeetCode-easy】链表中的倒数第k个结点(Java)
public ListNode getKthFromEnd(ListNode head, int k) { if(head==null) return null; ListNode fast = head;//快指针 ListNode slow = head;//慢指针 //先让快指针走k步 for(int i=1; i < k; i++){ fast = ...原创 2021-01-28 19:10:07 · 76 阅读 · 0 评论 -
【LeetCode-easy】打印从1到最大n位数(Java)
public class Solution7 { public int[] printNumbers(int n) { if(n == 0) return null; int i = 1; //n表示成0的个数,n=1则是10,n=2则是100,我们得到最后一个数的限制条件就行 while(n!=0){ i = 10*i; n--; }...原创 2021-01-27 21:06:03 · 82 阅读 · 0 评论 -
【LeetCode-easy】二叉树的深度(Java)
class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }public class Solution6 { public int maxDepth(TreeNode root) { if(root == null) return 0; int ld =...原创 2021-01-27 20:28:02 · 63 阅读 · 0 评论 -
【LeetCode-easy】替换空格(java)
方法一:public class Solution5 { public String replaceSpace(String s) { if(s == null) return s; String s1 = s.replace(" ", "%20"); return s1; } public static void main(String args[]){ Solution5 so5 =..原创 2021-01-27 19:25:35 · 138 阅读 · 0 评论 -
【LeetCode-easy】二叉树的镜像(Java)
示例:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]import com.sun.source.tree.Tree;import java.util.ArrayDeque;import java.util.Queue;//2021-2-25//剑指offer 简单//二叉树镜像//Definition for a binary tree node.class TreeNode { int val = 0; Tr..原创 2021-01-25 18:09:14 · 150 阅读 · 2 评论 -
【形式化方法】Part A: Concrete execution(具体执行)
在这节课中,我们讨论了定义程序语义的一种特定风格:操作语义,即程序在某些虚拟机上执行。我们还讨论了符号执行,它类似于操作语义,只是程序是在一个符号虚拟机上执行的,所有的程序路径都是以系统的方式探索的。最后,我们讨论了concolic的执行,即程序的具体执行和符号执行。在这个任务中,我们将构建几个执行器:具体执行器、符号执行器和concolic执行器。具体来说,这个作业分为四个部分,每个部分都包含一些教程和问题。第一部分是关于具体执行的,您将根据我们在类中讨论的大步骤操作语义实现一个执行器;第二部分是符号原创 2021-01-17 18:27:32 · 1058 阅读 · 0 评论 -
kaggle比赛【Riiid! Answer Correctness Prediction】
LGB,CatBoost,Random forest and Xgboost:参考开源代码:https://www.kaggle.com/andleebhayath/lgb-catboost-random-forest-and-xgboost# Python 3环境安装了许多有用的分析库#它是由kaggle/python Docker映像定义的:https://github.com/kaggle/docker-python#例如,这里有几个有用的包要加载import numpy as np...原创 2021-01-17 14:34:57 · 1445 阅读 · 7 评论 -
【形式化方法】PartB:Linear Regression(线性回归)
线性回归在统计学中,线性回归是对标量响应和一个或多个解释变量(也称为因变量和自变量)之间关系建模的一种线性方法。近年来,线性线性回归在人工智能和机器学习领域发挥了重要作用。线性回归算法因其相对简单和众所周知的特性而成为监督机器学习的基本算法之一。感兴趣的读者可以参考深度学习方面的资料,例如Andrew Ng从深度学习的角度很好地介绍了线性回归(到第7页)。但是,由于这不是一门深度学习的课程,所以我们将从数学的角度来解决这个问题。我们从学习一个具体的例子开始,给出以下数据(在深度学习的术语中,这些原创 2020-12-20 18:15:25 · 717 阅读 · 1 评论 -
【形式化方法】PartB:Linear Programming(线性规划)
目录线性规划背包问题1. 0-1背包问题2. 完全背包问题一般来说,一个线性规划问题(以下简称LP)由两部分组成:约束C和目标函数F。我们的目标是在C的约束下求出F的最小值或最大值。约束和目标函数都是线性形式的。在这一部分,我们将研究一些LP问题,同样也借助Z3。例如,给定约束条件:我们想要算出:要用Z3解决LP问题,我们将使用优化模块,具体来说,还将使用maximize() API。关于模块和API的更多细节,你可以参考官方文档。对于上面的例子,我们可以有下面的Z3代码..原创 2020-12-20 16:41:37 · 1000 阅读 · 0 评论 -
【中科大软院-形式化课程】PartA:More Coq Tactics
Negation: tacticunfoldCoq用符号~表示命题的否定。~ P是P -> False的一个语法,我们可以用像下面这样的否定来建立定理:Theorem example_1: forall P: Prop, ~(P /\ ~P). Proof. unfold not. intros. inversion H. apply H1. apply H0. Qed..原创 2020-11-12 20:14:22 · 1490 阅读 · 0 评论 -
【中科大软院-形式化】Part B: Predicate Logic
在本节中,我们将学习如何使用Coq来证明谓词逻辑定理。在Coq中,我们可以像声明命题变量一样声明集合变量:Variables A B: Set.在我们声明A和B都是集合的变量之前。接下来,我们在集合A上声明一些谓词变量P和Q:Variables P Q: A -> Prop.你可以把P和Q看作从A获取元素并返回一个Prop的函数。如果我们有一个集合的元素,例如a: A,我们可以用P(a)来表示满足命题P。使用相同的方法,我们可以声明与几个元素相关的属性。例如,我们可以通过以下方式引.翻译 2020-11-14 14:40:14 · 1340 阅读 · 11 评论 -
【形式化方法】Part A:线性算术基础理论
在这节课中,我们讨论了线性算法(以下简称LA)和线性规划(以下简称LP)的理论。算术约束在形式推理和(困难的)问题解决的每个方面都是普遍存在的,LA和LP都是建立这些模型和解决问题的非常有力的工具。从计算机科学的观点来看,大多数LA和LP问题都可以通过专用软件或库来解决,IBM非常流行的CPLEX就是一个例子。然而,通过在整数、有理数或实数域上合并调优的LA/LP决策过程,大多数现代求解器/验证器对LA/LP理论也有足够的支持。以Z3为例,它对LA和LP都有很好的支持。在这个作业中,你将熟悉LA/L原创 2020-12-19 13:38:54 · 817 阅读 · 7 评论 -
【形式化方法】PartB:LA/LP Applications(N皇后问题)
N-Queen Problem:在作业3(挑战问题)中,我们在SAT之前解决了N个皇后的问题(4个皇后)。这个问题是关于把N个皇后放在一个N*N的棋盘上,这样就没有两个皇后互相威胁了。一种解决方案要求没有两个皇后共享同一行、列、对角线或反对角线。下图显示了N = 4的样本N -皇后谜题的解:这个问题的目标是在一个N*N棋盘,找出存在多少个解。SAT实现的基本思想是通过Bool值构造n-queen谜题约束。实际上,我们可以用LA来求解n-queen问题,它比SAT更容易理解,也更高效。其思路与求解原创 2020-12-19 20:25:58 · 2084 阅读 · 21 评论 -
【形式化方法】Part B: LA/LP Applications(子集和问题)
在本节中,我们将研究如何利用LA/LP理论,借助Z3求解器建立模型和解决问题。具体地说,我们将解决几个非常难的问题,这里的“难”是指这些问题都是np完全的,也就是说,对于这些问题一般没有已知的多项式算法。但是,您很快就会发现使用LA/LP求解器(如Z3)解决这些问题是多么容易(和多么有趣)。一般来说,您将认识到基于求解器的问题解决策略的威力和简单性。我们要解决的np完全问题是(其中一些已经在我们之前的讲座中讨论过):子集和问题 N-queen问题 背包问题 线性回归请注意,这并不是基原创 2020-12-19 18:01:40 · 651 阅读 · 3 评论