首页 > 其他分享 >20222407 2024-2025-1《网络与系统攻防技术》实验一实验报告

20222407 2024-2025-1《网络与系统攻防技术》实验一实验报告

时间:2024-10-09 13:22:45浏览次数:1  
标签:getShell 函数 2024 2025 地址 指令 20222407 缓冲区 shellcode

1.实验内容
1.1本周学习内容
1.1.1缓冲区溢出的定义和原因
定义:写入缓冲区的数据量超过该缓冲区能容纳的最大限度,造成溢出的数据改写了与该缓冲区相邻的原始数据的情形。
原因:(直接)由于代码语言的设计问题、程序员的安全意识问题,程序没有严格的内存越界检查;(根本)冯诺依曼体系的安全缺陷,存储中数据和指令没有严格分离。
1.1.2缓冲区溢出攻击的历史
红色代码、冲击波病毒、震荡波病毒、心脏出血、乌克兰断网、勒索病毒。
1.1.3缓冲区溢出基础知识
编译器和连接器:根据高级语言编写的程序,生成可执行程序代码,有gcc、javac。
调试器:在运行时调试与分析程序行为的工具,有gdb、jdb、pdb。
寄存器分类:通用寄存器、段寄存器、控制寄存器、其他寄存器。
EBP栈底指针(在高地址)、ESP栈顶指针(在低地址)、EIP指令指针寄存器(指向下一条将要执行的指令的地址)
堆:程序动态分配的数据和变量。
栈:环境变量/参数和个数以及主函数和调用栈中函数的临时保存信息。
汇编指令:push、pop、mov、sub等。
内核态与用户态。
1.2实验内容简述
名为pwn1的linux可执行文件,在正常情况下运行会调用foo函数,该函数会简单回显用户输入的字符串。该程序同时包含另一个代码片段getShell,会返回一个可用Shell。正常情况下这个代码不会被运行,本次实验使用三种方法尝试调用getshell函数:
修改可执行文件内容,改变程序中的一个函数调用指令,直接跳转到getShell函数。
利用foo函数的缓冲区溢出漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
注入一个自己制作的shellcode(一段用于获取一个交互式的shell的机器指令)并运行这段shellcode。
2.实验过程
2.1修改程序机器指令的方法
下载目标文件pwn1,正常运行,可以回显输入字符串。

使用“objdump -d pwn1 | more”命令,反汇编并找到函数调用的相关指令。可以看到main中80484b5位置是跳转到foo函数的指令。

跳转指令中,e8是跳转的意思,d7ffffff为补码,表示当前地址+(-41),所以要调用getShell函数,需要改变后面四个字节。根据计算,应该是-61,即-0x3d,补码为c3ffffff。
按照计算结果需将该条指令改为e8c3ffffff。打开vi后修改过程为:用“:%!xxd”指令将显示模式切换为16进制模式;用“/d7ff”定位修改位置,将d7修改为c3;用“:%!xxd -r”指令转换16进制为原格式;“:wq”保存退出。

运行修改后文件,可以进入shell。 成功获取shell,即成功调用了getShell函数

2.2BOF攻击的方法
首先进行反汇编,可以发现在foo函数中,8048497位置的指令为“lea -0x1c(%ebp),%eax”,即只为后续的读入字符串预留了0x1c=28字节的缓冲区。call调用foo时,原本会在堆栈上压上返回地址80484ba,我需要通过修改,让返回地址的值被覆盖为getShell函数的地址804847d。(图片在2.1中已给出)
使用gdb,输入超过28字节的字符串,再查看各个寄存器的值,发现eip的值是0x35353535,即5555的ascii码。在输入另一个特定的过长字符串,查看eip的值为0x34333231,即4321的ascii码。这就确定了应该如何设置攻击字符串,即将第33至第36个字符设置为804847d按字节的倒序。不能通过键盘直接输入,所以先利用perl软件生成包括这样字符串的一个文件。用“xxd input”命令查看文件内容,可以发现内容正确。将input的输入,通过管道符“|”,作为pwn的输入。然后可以发现程序调用了getShell函数,可以获取shell了。





2.3注入shellcode的方法
找到一段用于攻击的shellcode:\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\。这段shellcode是启动一个新的/bin/sh shell的机器码,用于后续的攻击操作。做准备工作,设置堆栈可执行,关闭地址随机化,并进行确认。










4.5 结合nc模拟远程攻击
本例中是在同一台主机上做的实验;该实验最好在互相连通的两台Linux上做,将ip地址替换为主机1的IP即可。
主机1,模拟一个有漏洞的网络服务:

5.3. 增加shellcode的构造难度。
shellcode中需要猜测返回地址的位置,需要猜测shellcode注入后的内存位置。这些都极度依赖一个事实:应用的代码段、堆栈段每次都被OS放置到固定的内存地址。ALSR,地址随机化就是让OS每次都用不同的地址加载应用。这样通过预先反汇编或调试得到的那些地址就都不正确了。

标签:getShell,函数,2024,2025,地址,指令,20222407,缓冲区,shellcode
From: https://www.cnblogs.com/Margarita0/p/18454018

相关文章

  • 20222314 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    网络攻防实验报告姓名:陈振烨学号:20222314实验日期:2024/09/29—2024/10/09实验名称:缓冲区溢出和shellcode指导教师:王志强实验要求: 1.掌握NOP,JNE,JE,JMP,CMP汇编指令的......
  • 2024年软件设计师中级(软考中级)详细笔记【3】数据结构(下)(分值5分)
    上午题第3章数据结构下部目录前言第3章数据结构【下】(5分)3.5查找3.5.1查找的基本概念【考点】3.5.2静态查找表的查找方法3.5.3动态查找表3.5.4哈希表3.5.4.1哈希表的定义3.5.4.2哈希函数的构造方法3.5.4.3处理冲突的方法3.6排序3.6.1排序的基本概念3.6.2......
  • 20241009--Java--MyBatis-Plus快速上手(1)
     一、MyBatis-Plus是什么?MyBatis是一个流行的开源持久层框架,用于简化数据库交互。它提供了一个简单的方法来执行数据库操作,同时保留了SQL的灵活性。MyBatis曾经被称为iBatis,是一个半自动化的ORM(Object-RelationalMapping对象关系映射)框架,它允许开发者将Java对象映......
  • PatriotCTF2024 Web Impersonate
    源码:#!/usr/bin/envpython3fromflaskimportFlask,request,render_template,jsonify,abort,redirect,sessionimportuuidimportosfromdatetimeimportdatetime,timedeltaimporthashlibapp=Flask(__name__)server_start_time=datetime.now()server_s......
  • 【2024-10-08】母亲坏事
    20:00袅袅凉风动,凄凄寒露零。兰衰花始白,荷破叶犹青。独立栖沙鹤,双飞照水萤。若为寥落境,仍值酒初醒。                                                 ——《池上》唐......
  • 【2024-10-10】好心坏事
    20:00事到手,且莫急,便要缓缓想;想得时,且莫缓,便要急急行。                                                 ——清·金缨《格言联璧》昨晚下班回家在附近跑完步,让母亲给......
  • 【2024-10-05】连岳摘抄
    23:59不是因为你不好而有自卑感。无论看起来多么优秀的人,多少都会感到自卑。只要还有目标,当然就有自卑感。                                                 ——阿尔弗......
  • 2024初秋集训——提高组 #33
    C.星际航行题目描述给定一个\(N\)个点\(M\)条边的无向带权图。我们定义一条路径的长度为路径上边权最大值。有\(Q\)次查询,第\(i\)次查询从\(u\)到其他\(N-1\)个点的最短路径中路径长度第\(k\)大的长度。思路首先,此题显然只会在最小生成树上选择路径。所以我们......
  • 20241008
    短路显然可以得出一个结论,一个数字大的点肯定要到一个数字比他小的点,这个我们可以用单调栈维护出来比一个点小的第一个点,然后\(dp\)即可#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+5;intn,a[N],pos[N],dp[N],sum......
  • [智能网联汽车/数据标准/法规政策] 标准解读:GB/T 44464-2024《汽车数据通用要求》
    0引言随着智能技术的不断发展,智能网联汽车作为新时代移动智能终端的代表,正引领着汽车产业向智能化、网联化深刻转型与升级。智能网联汽车与云端服务器、移动端、车端等设备存在大量的数据交互,包括车辆运行数据、用户个人信息等。缺乏对这些数据实施的有效监管与控制,将潜藏重大......