2017-2018-220179215《网络攻防实践》第十周作业(代码片段)

20179215袁琳 20179215袁琳     2022-11-12     171

关键词:

2017-2018-2 20179215 《网络攻防实践》 第十周作业

缓冲区溢出漏洞实践

缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。

1.输入命令安装一些用于编译32位C程序的东西:

sudo apt-get update
sudo apt-get install lib32z1 libc6-dev-i386
sudo apt-get install lib32readline-gplv2-dev 

2.输入命令linux32和/bin/bash进入32位linux环境:

3.Ubuntu和其他一些Linux系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。因此本次实验中,我们使用以下命令关闭这一功能:

sudo sysctl -w kernel.randomize_va_space=0

4.为了进一步防范缓冲区溢出攻击及其它利用shell程序的攻击,许多shell程序在被调用时自动放弃它们的特权。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash:

sudo su
cd /bin
rm sh
ln -s zsh sh
exit

5.一般情况下,缓冲区溢出会造成程序崩溃,在程序中,溢出的数据覆盖了返回地址。而如果覆盖返回地址的数据是另一个地址,那么程序就会跳转到该地址,如果该地址存放的是一段精心设计的代码用于实现其他功能。

6.漏洞程序

把以下代码保存为“stack.c”文件,保存到 /tmp 目录下。

编译该程序,并设置SET-UID。命令如下:

sudo su
gcc -m32 -g -z execstack -fno-stack-protector -o stack stack.c
chmod u+s stack
exit

GCC编译器有一种栈保护机制来阻止缓冲区溢出,所以我们在编译代码时需要用 –fno-stack-protector 关闭这种机制。而 -z execstack 用于允许执行栈。

7.攻击程序

我们的目的是攻击刚才的漏洞程序,并通过攻击获得root权限。
把以下代码保存为“exploit.c”文件,保存到 /tmp 目录下。现在我们要得到shellcode在内存中的地址,输入命令:

gdb stack
disass main

结果如图:

根据语句 strcpy(buffer+100,shellcode); 我们计算shellcode的地址为 0xffffd060(十六进制)+100(十进制),修改exploit.c文件:将 \\x??\\x??\\x??\\x?? 修改为 \\xc4\\xd0\\xff\\xff 然后,编译exploit.c程序:

8.运行结果

先运行攻击程序exploit,再运行漏洞程序stack:

练习:

2、通过命令”sudo sysctl -w kernel.randomize_va_space=2“打开系统的地址空间随机化机制,重复用exploit程序攻击stack程序,观察能否攻击成功,能否获得root权限。

答:发现出现段错误(这是本阶段实验出现的正确的实验结果),原因为:由于地址空间随机化被开启,导致之前计算的地址与实际的地址出现了不同,从而不能完成攻击。

3.将/bin/sh重新指向/bin/bash(或/bin/dash),观察能否攻击成功,能否获得root权限。

答:进行相同操作发现可以成功显示root:

注: 补充上周seed缓冲区溢出实验内容http://www.cnblogs.com/yl-930/p/9028521.html

2017-2018-220179215《网络攻防实践》第八周作业(代码片段)

《网络攻防实践》第八周学习总结一、第八章教材内容总结Linux操作系统简介Linux系统特点:兼容UNIX:API兼容,管理命令和各种工具:源码开放支持各种硬件平台,支持多CPULinux平台上存在大量的应用软件,以及应用开发工具多... 查看详情

2017-2018-220179215《网络攻防实践》seed缓冲区溢出实验(代码片段)

seed缓冲区溢出实验有漏洞的程序:/*stack.c*//*Thisprogramhasabufferoverflowvulnerability.*//*Ourtaskistoexploitthisvulnerability*/#include<stdlib.h>#include<stdio.h>#include<string.h>intbof(char*st 查看详情

2017-2018-220179215《密码与安全新技术》第三次作业(代码片段)

2017-2018-220179215《密码与安全新技术》第三次作业课程:《密码与安全新技术》班级:201792姓名:袁琳学号:20179215上课教师:谢四江上课日期:2018年3月29日必修/选修:选修学习内容总结从多媒体到跨媒体1.传统多媒体具有:获... 查看详情

网络攻防

a.你对师生关系的理解,希望是哪种关系?    从教学角度看,师生关系是一种教与学的关系,是教师角色与学生角色的互动关系。而从社会角度看,师生关系更是深层意义上的人与人的关系,是师生思想交流、情感... 查看详情

2017-2018-220179202《网络攻防技术》第五周作业(代码片段)

漏洞分析之数据库评估(一)BBQSQL一种用Pyhthon写的SQL盲注框架。当发动QL注入漏洞攻击时,它将非常有用。BBQSQL是半自动工具,允许许多难以触发的SQL注入变得用户化。BBQSQL最重要的是它不关心数据或数据库。DBPwAudit功能:通过... 查看详情

网络安全攻防之破解小程序积分制度(fiddler抓包教程实战)文末含彩蛋(代码片段)

网络安全攻防之破解小程序积分制度(Fiddler抓包)背景介绍实操步骤安装Fiddler并配置可拦截到请求Fiddler操作技能储备技能一:清除Session(小技能)技能二:Fiddler过滤url技能三:Fiddler打断点技能四... 查看详情

网络安全攻防之破解小程序积分制度(fiddler抓包教程实战)文末含彩蛋(代码片段)

网络安全攻防之破解小程序积分制度(Fiddler抓包)背景介绍实操步骤安装Fiddler并配置可拦截到请求Fiddler操作技能储备技能一:清除Session(小技能)技能二:Fiddler过滤url技能三:Fiddler打断点技能四... 查看详情

网络安全攻防之破解小程序积分制度(fiddler抓包教程实战)文末含彩蛋(代码片段)

网络安全攻防之破解小程序积分制度(Fiddler抓包)背景介绍实操步骤安装Fiddler并配置可拦截到请求Fiddler操作技能储备技能一:清除Session(小技能)技能二:Fiddler过滤url技能三:Fiddler打断点技能四... 查看详情

网络攻防常见的网络攻防技术——黑客攻防(通俗易懂版)(代码片段)

每个人都能看懂的网络攻防前言一、SQL注入二、XSS攻击1.反射型2.存储型三、CSRF攻击四、DDoS攻击五、DNS劫持六、JSON劫持七、暴力破解总结提示:文章同样适用于非专业的朋友们,全文通俗化表达,一定能找到你亲身... 查看详情

网络攻防实验三

查看详情

网络攻防_实验四

  查看详情

这是一份网络靶场入门攻略

参考技术A近年来,国内外安全形势日益严峻,网络安全问题日益凸显。前有燃油运输管道被堵,后有全球最大肉食品供应商被黑客入侵,这标志着越来越多的国家级关键基础设施提供方,特种行业,以及大型公共服务业被黑客... 查看详情

网络攻防实验一

一、安装windowsdir列文件名 二、Linux操作系统命令  查看详情

网络攻防_实验八

       查看详情

网络攻防_实验五

         查看详情

第四周网络攻防实践作业

第四周《网络攻防实践作业》 第一节。网络攻防技术与实践1. 网络嗅探l 定义:网络嗅探是利用计算机的网络端口解惑目的地为其他的计算机的数据报文,以监听数据流中所包含的信息。 l 攻击方式:攻击者... 查看详情

网络攻防_实验六

               查看详情

2017-2018-220179302《网络攻防》第九周作业

教材学习总结本周主要学习了《网络攻防---技术与实践》第9、10章的内容,主要学习了恶意代码攻防与软件安全攻防恶意代码安全攻防1.基础知识恶意代码是指使计算机按照攻击者的意图执行以达到恶意目标的指令集。类型包括... 查看详情