软件安全实验
文章平均质量分 93
软件安全实验lab
大灬白
没有绝对安全的系统
展开
-
软件安全实验——lab12(UAF(Use after free):C++野指针利用)
目录标题Task1:针对UAF.c的攻击(1)环境准备工作(2)获得shellcode在环境变量中的地址(3)攻击Task2: 针对uaf2.cpp的攻击(1)编译程序(2)找到m变量的地址(3)找到虚函数表(4)查看虚函数表的内容(5)攻击题外话:只after一次,就会出现段错误Task1:针对UAF.c的攻击源代码:#include <stdio.h> typedef struct s{ int id; char name[20]; void (*clean)(void原创 2021-08-18 16:59:33 · 1363 阅读 · 0 评论 -
软件安全实验——pre12(UAF漏洞预习)
目录标题一级目录1、名词解释:double free,UAF (Use After Free),RELRO(Relocation Read Only),Dangling pointer,Control Flow Guard2、阅读下面这三篇文章:一级目录1、名词解释:double free,UAF (Use After Free),RELRO(Relocation Read Only),Dangling pointer,Control Flow Guard Double Free其实就是一种在fre原创 2021-08-13 14:11:46 · 646 阅读 · 0 评论 -
软件安全实验——lab11(XSS跨站脚本攻击)
目录标题一级目录二级目录1、概述2、实验室环境3、实验室的任务3.1任务1:发布恶意消息以显示警报窗口3.2任务2:发送恶意信息显示cookie3.3任务3:从受害者的机器上偷取cookies3.4任务4:用偷来的cookie冒充受害者3.5任务5:编写跨站蠕虫3.6任务6:编写自传播跨站蠕虫4、提交一级目录二级目录1、概述跨站脚本(XSS)是 web应用程序中常见的一种漏洞。该漏洞使得攻击者有可能将恶意代码(如 JavaScript程序)注入受害者的网络浏览器。使用这种恶意代码,攻击者可以窃取受原创 2021-08-16 23:16:36 · 5797 阅读 · 3 评论 -
软件安全实验——pre11(XSS跨站脚本攻击预习)
目录标题1、用IE访问某些网站的时候,输入javascript:alert(document.cookie)会有什么反应,解释原因。2、阅读下面两篇文章或者阅读一本书3、了解FireFox的两个插件LiveHttpHeaders和Firebug的基本使用方法。4、阅读下面这篇文章:5、阅读下面这两篇文章:6、XSS漏洞的触发条件有哪些?应该如何防范?一、什么是XSS二、XSS攻击的主要途径三、XSS攻击解决办法1、用IE访问某些网站的时候,输入javascript:alert(document.cooki原创 2021-08-13 13:47:25 · 857 阅读 · 0 评论 -
软件安全实验——lab10(二、TCP/IP攻击实验)
目录标题1、实验室概况2、实验室环境2.1环撞设置2.2教师须知3、实验室的任务3.1 Task (1): ARP缓存中毒(1)80号工具攻击:(2)33号工具攻击:3.2任务(2):ICMP重定向攻击82,83,84,85,86工具:3.3任务(3):SYN flood攻击(1)关闭SYN cookie机制:76,78工具:(2)打开SYN cookie机制:3.4任务(4):针对telnet和 ssh连接的TCP RST攻击78号工具:3.5任务(5):针对流媒体应用的TCP RST攻击3.6任务(6)原创 2021-08-21 20:11:27 · 4023 阅读 · 0 评论 -
软件安全实验——lab10(一、基于时间的侧信道攻击)
目录标题(1)漏洞代码:(2)将密码文件s.pass设为root只读:(3)攻击代码为:(4)可执行栈-z execstack选项:(5)设置sidechannel文件的权限:(6)只有完成上面的步骤开始攻击:边信道攻击实验: 通过使用下面所提供的漏洞代码,设计一个攻击代码,利用边信道攻击的方式获取正确的密码,并执行后面的 shellcode 来获取一个 root shell,其中的s.pass 为 root 只读的密码文件。过程如下:(1)漏洞代码://sidechannel.c//s.pas原创 2021-08-14 14:17:09 · 1340 阅读 · 0 评论 -
软件安全实验——pre10(网络安全、C++指针安全、linux精确计算程序运行的时间)
目录标题1、名词解释2、阅读下面这篇文章3、解释linux用root执行下面两条命令4、阅读Smashing C++ VPTRs这篇文章,阐述其原理。5、考虑Linux环境下如何实现精确计算程序运行的时间,搜索下相关资料。1、名词解释ARP cache poisoning,ICMP Redirect Attack,SYN Flooding Attack,TCP Session Hijacking。如果想监听局域网内另外一台机器,一般先要进行什么步骤?(1)ARP cache poisoning:A原创 2021-08-11 16:09:01 · 1988 阅读 · 3 评论 -
软件安全实验——lab9(缓冲区溢出:return-to-libc绕过非可执行堆栈)
目录标题1、实验室概况2、实验室任务2.1初始设置2.2脆弱程序2.3任务1:利用漏洞(1) 编译程序(2)找到“\bin\sh”的地址(3)查找libc函数的地址:(4)确定输入和bof函数的返回地址的距离(5)攻击代码(6)攻击Task 1附加任务(1)pop %esp(2)按照下图构造地址序列:(3)/bin/sh和/usr/bin/的地址(4)system函数和setuid函数的地址(5)确定输入和bof函数的返回地址的距离(6)修改buf数组大小(7)在Bof函数返回的地址设断点(8)攻击3、指导原创 2021-08-11 14:15:25 · 1325 阅读 · 0 评论 -
软件安全实验——pre9(堆栈保护机制、return-to-libc预习)
这里写目录标题1、网上搜索并且阅读2、阅读下面这篇文章:3、阅读这个链接的第3章4、阅读这个链接1、网上搜索并且阅读Four different tricks to bypass StackShield and StackGuardprotection这篇文章,描述这些现有保护机制的弱点。答: 堆栈屏蔽(StackShield)保护,在最初的形式中,它们只保护返回地址覆盖,而不是普通的堆栈销毁攻击。文章中所研究的三种保护方法有两种不同的设计限制只保护内存中比第一个安全保护地址更高的数据。而且原创 2021-08-07 13:37:13 · 651 阅读 · 0 评论 -
软件安全实验——lab8(SQL注入)(下)(旧虚拟机SEEDUbuntu12.04版本实验)
目录标题2、实验室环境2.1环境配置2.2关闭对策2.3通过修补已有虚拟机,添加Web应用3、实验室的任务3.1任务1:MysQL控制台3.2任务2:针对SELECT语句的SQL注入攻击任务2.1(1)在不知道任何员工凭证的情况下,登陆应用程序(2)隔断的方式登录admin账户(3)#注释代码的方式登录admin账户任务2.2任务2.33.3任务3:针对UPDATE语句的SQL注入攻击任务3.1任务3.23.4任务4:对策-准备声明2、实验室环境您需要为这个实验室使用我们提供的虚拟机映像。支持这个实验原创 2021-08-09 16:59:37 · 1612 阅读 · 0 评论 -
软件安全实验——lab8(SQL注入)(上)(旧虚拟机seedubuntu9版本实验)
这里写目录标题一级目录2、实验室环境2.1环境配置2.2关闭对策3、实验室的任务3.1 Task 1(30分):针对SELECT语句的SQL注入攻击3.2 Task 2(30分): SQL注入的UPDATE语句3.3 Task 3 (40 Points):对策任务3.3.1任务3.3.2任务3.3.3任务3.3.4一级目录2、实验室环境您需要为这个实验室使用我们提供的虚拟机映像。支持这个实验室的虚拟机映像的名称为seedubuntu9 -August -2010,它是在2010年8月构建的。如果您碰原创 2021-08-09 14:18:30 · 756 阅读 · 0 评论 -
软件安全实验——pre8(SQL注入预习)
这里写目录标题一级目录1、网上搜索和阅读SQL Injection with MySQL这篇文章。2、SQL Injection过程中,1、快速确定未知数据结构的字段及类型:2、猜数据表名:3、(一定要看)阅读Basic SQL Tutorial。4、(选做,实在搞不定可以网上搜索walkthrough)HTS Realistic 4。一级目录1、网上搜索和阅读SQL Injection with MySQL这篇文章。描述SQL Injection的原因和危害,注意其中提到的单引号双引号和井号等特殊原创 2021-08-09 10:54:57 · 449 阅读 · 0 评论 -
软件安全实验——lab7(缓冲区溢出3:返回导向编程技术ROP)
目录标题1、举例详细解释什么是Return-orientd Programming ROP?(至少两个例子:x86 和arm)(1)ROP在X86指令集上的实例(2)ROP在ARM上的可行性2、举例描述一个远程缓冲区溢出,思考和本地溢出的区别,攻击难点在哪里?3、描述arm和x64下的缓冲区溢出,比较和x86的差异。1、举例详细解释什么是Return-orientd Programming ROP?(至少两个例子:x86 和arm)ROP(Return-oriented programming),即“返原创 2021-08-05 20:50:46 · 2699 阅读 · 0 评论 -
软件安全实验——pre7(JIT spray、heap spray、SEH绕过DEP漏洞预习)
这里写目录标题一级目录1、详细解释一下JIT spray以及heap spray是什么?2、解释一下老的windows操作系统下面利用SEH绕过DEP的原理和过程。一级目录1、详细解释一下JIT spray以及heap spray是什么?答:(1)JIT编译(just-in-time compilation)狭义来说是当某段代码即将第一次被执行时进行编译,因而叫“即时编译”。JIT可以加快脚本代码的执行。在浏览器中通常会使用JIT。JIT编译器对于攻击者来说是一个很大的攻击面,存在各种各样的攻击,原创 2021-07-30 16:49:39 · 747 阅读 · 0 评论 -
软件安全实验——lab6(缓冲区溢出2:使用jmp esp或者call esp方法和修改函数指针)
目录标题Task 1第一步:打开内存地址随机化第二步:编译上面的程序为Set-UID程序,注意加上-fno-stack-protector进行编译第三步:bof的返回地址第四步:确定缓冲区的位置第五步:返回地址和缓冲区之间的距离Task 2第一步:打开内存地址随机化第二步:编译上面的程序为Set-UID程序,注意加上-fno-stack-protector进行编译第三步:strcpy函数的返回地址第四步:hmm函数的地址第五步:攻击Task 1下面的程序具有缓冲区溢出,利用jmp esp或者call e原创 2021-07-30 16:35:47 · 1212 阅读 · 0 评论 -
软件安全实验——pre6(整数溢出、堆溢出、栈溢出漏洞预习)
这里写目录标题一级目录1、阅读Basic Integer Overflows 这篇文章,大概描述整数溢出的原因和危害。2、阅读堆溢出的文章Once upon a free()...3、(一定要做)上网搜索利用jmp esp或者call esp来进行栈溢出的文章并且仔细阅读,解释这种技术的优点。一级目录1、阅读Basic Integer Overflows 这篇文章,大概描述整数溢出的原因和危害。http://www.phrack.org/issues.html?issue=60&id=10#原创 2021-07-29 21:09:13 · 972 阅读 · 1 评论 -
软件安全实验——lab5(Buffer_Overflow缓冲区溢出攻击:strcpy函数溢出覆盖返回地址执行shellcode)
目录标题2.1初始设置2.2 Shellcode2.3易受攻击程序2.4任务1:利用漏洞1.关闭地址空间随机化,2.execstack和-fno-stack-protector选项3.对stack进行gdb,首先查看bof的起始位置和返回地址.4.确定缓冲区的位置5.开始攻击2.5任务2:地址随机化2.6任务3:堆栈保护2.7任务4:非可执行堆栈2实验室任务2.1初始设置 您可以使用我们预先构建的 Ubuntu虚拟机来执行实验室任务。Ubuntu和其他Linux发行版已经实现了一些安全机制,使缓冲区原创 2021-07-27 21:17:17 · 2410 阅读 · 2 评论 -
软件安全实验——pre5(缓冲区溢出漏洞预习)
这里写目录标题1、解释gcc参数-fno-stack-protector的含义,gcc的参数里面与stack overflow相关的还有哪些?2、(一定要看)非常仔细地阅读Smashing The Stack For Fun And Profit.3、阅读下面两篇文章的同时,熟悉一下gdb基本操作,看汇编设断点查看内存之类的基本操作了解一点。4、解释linux用root执行下面这条命令sysctl -w kernel.exec-shield=1的含义和用途。1、解释gcc参数-fno-stack-prot原创 2021-07-22 22:31:48 · 512 阅读 · 0 评论 -
软件安全实验——lab4 Format String Vulnerability Lab(格式化字符串漏洞实验最新版——2020年1月12日更新)
格式化字符串漏洞实验2.1 Task 1 易受攻击的程序2.2任务2:理解栈的布局2.3任务3:使程序崩溃2.4任务4:打印服务器程序的内存Task4.A:栈的数据Task4. B:堆数据2.5任务5:改变服务器程序的内存任务5.A:修改为不同的值。任务5.B:修改为0x500。任务5.C:修改为0xFF990000。2.6任务6:向服务器程序注入恶意代码附:不用nop精准执行恶意代码2.7任务7:获得一个反向shell附:不用nop精准获取shell2.8任务8:修复问题Format String V原创 2021-07-29 16:56:24 · 1832 阅读 · 2 评论 -
软件安全实验——lab4后记(格式化字符串实验原理、漏洞利用过程逐步分析)
前面两次格式化字符串实验链接:软件安全实验——lab3(格式化字符串printf)软件安全实验——lab4(格式化字符串,修改内存地址运行shellcode获取root权限)目录标题(1)漏洞程序fmt_vuln.c(2)在新的漏洞程序got.c复现修改(3)尝试修改0804a00c地址的值并显示,获得root权限 先用一个关于栈的例子,简单地解释一下在使用格式化字符串时栈的作用。printf(“A is %d and is at %08x. B is %d and is at %08x.\n”原创 2021-07-21 14:04:30 · 744 阅读 · 1 评论 -
软件安全实验——lab4(格式化字符串2:修改内存地址运行shellcode获取root权限)
目录标题一、获得环境变量的程序和攻击的程序的文件名长度不一样(1)定义一个环境变量EGG存放shellcode(2)获取shellcode的地址(3)查找exit函数的地址(4)1、用%x找到printf()中参数在栈中的位置是11(5)将exit函数的地址修改为shellcode的地址二、令两个程序的文件名长度相等(推荐)(1)定义一个环境变量EGG存放shellcode(2)获取shellcode的地址(3)攻击三、Root权限开启alsr:sudo sysctl -w kernel.randomize原创 2021-07-21 10:54:52 · 1091 阅读 · 0 评论 -
软件安全实验——pre4(格式化字符串提权预习)
这里写目录标题2、3、2、为了顺利完成下节课,建议仔细阅读下面这篇文章的Level 9部分:https://infamoussyn.com/2013/09/11/smashthestack-io-walkthrough-part-b-levels-6-10/https://tomasuh.github.io/2015/01/19/IO-Wargame.html,文章中利用.dtors的办法只是利用格式化字符串执行shellcode的一种形式。printf中%2$d这类格式的含义如下:Cha原创 2021-07-19 21:13:46 · 285 阅读 · 0 评论 -
软件安全实验——lab3(格式化字符串printf修改变量的值)
这里写目录标题1实验室概况2实验室任务2.1任务1:利用漏润1. Crash the progran2. Print out the secret[1] value.3.Modify the secret[1] value4. Modify the secret[1] valne to a pre-determined value.2.2任务2:内存随机化方法1、使用perl脚本运行程序1.Print out the secret[1] value.2.Modify the secret[1] value方原创 2021-07-16 20:27:28 · 1303 阅读 · 2 评论 -
软件安全实验——pre3
目录标题1.2.解释linux用root执行下面这条命令sysctl -w kernel.randomize_va_space=0的含义和用途。3.描述fprintf、printf、sprintf、snprintf、vprintf这几个函数的功能和差异。1.main(){int num=0x41414141;printf(“Before: num = %#x \n”, num);printf("%.20d%hn\n", num, &num);printf(“After: num = %原创 2021-07-15 16:09:34 · 359 阅读 · 0 评论 -
软件安全实验——lab2(竞态条件、符号链接)
目录标题1实验室概况2实验室任务2.1初始设置2.2易受攻击的程序2.3任务1:利用竞态条件漏洞1、覆盖任何属于root的文件。第一步:建立符号链接第二步:不断尝试打开文件写入2、获得根权限;也就是说,您应该能够做根可以做的任何事情。2.4任务2:保护机制A:重复2.5任务3:保护机制B最小特权原则2.6任务4:保护机制C:Ubuntu的内置方案1实验室概况 本实验室的学习目标是让学生通过将课堂上关于脆弱性的知识转化为行动,来获得关于竞赛条件下脆弱性的第一手经验。竞态条件当多个进程并发地访问和操作相原创 2021-07-15 15:56:11 · 1434 阅读 · 0 评论 -
软件安全实验——pre2
目录标题第1题第2题第3题第4题第1题1、linux下用open函数打开文件时,要是采用O_WRONLY模式为何容易产生竞争条件漏洞?换成O_WRONLY | O_CREAT | O_EXCL 模式后情况会如何?使用open函数用来打开一个设备int open(const char pathname, int oflag, …/, mode_t mode * / ) ;它返回的是一个整型变量,如果这个值等于-1,说明打开文件出现错误,如果为大于0的值,说明打开文件正常。打开的操作类型有如下几种原创 2021-07-13 16:36:47 · 446 阅读 · 0 评论 -
软件安全实验——lab1(环境变量和SetUID、LD_PRELOAD动态库加载劫持)
目录标题1 概述2 实验室任务2.1任务 1 :操作环境变量2.2任务2:从父类继承环境变量步骤1:步骤2:步骤3:2.3任务3:环境变量和execve()步骤1:步骤2:步骤3:2.4任务4:环境变量与系统()2.5任务5:环境变量和Set-UID程序步骤1:步骤2:步骤3:2.6任务6:路径环境变量和Set-UID程序2.7任务7:LD_PRELOAD环境变量和Set-UID程序步骤1:步骤2:步骤3:2.8任务8:使用system()和execve调用外部程序步骤1:步骤2:2.9任务9:性能泄漏3提原创 2021-07-13 15:58:16 · 1548 阅读 · 0 评论 -
软件安全实验pre1(常用linux命令和函数)
目录标题1.(1)(2)setuid函数(3)seteuid函数(4)setreuid函数(5)getenv函数2.3.4(2018).(1)关于PATH的作用:(2)5(2018).(1)启动新进程(system函数):(2)替换进程映像(exec函数):(3)复制进程映像(fork函数):(4)system()、exec()、fork()函数比较1.写出一行linux命令列出根目录下所有suid程序。描述linux下setuid/seteuid/setreuid/getenv这几个函数的功能和差异原创 2021-07-07 20:32:51 · 1293 阅读 · 2 评论