20145339顿珠达杰 《网络对抗技术》 逆向与Bof基础

目的

  • 通过一些方法,使能够运行本不该被运行的代码部分,或得到shell的使用:

    • 将正常运行代码部分某处call后的目标地址,修改为另一部分我们希望执行、却本不应该执行的代码部分首地址(这需要我们有一定的权限修改可执行文件)
    • 通过缓冲区溢出:输入数据,使其超出缓冲区大小,并覆盖住返回地址(新的返回地址为另一部分我们希望执行、却本不应该执行的代码部分首地址)
    • ......

基础知识

  • objdump -d test :反汇编test
  • more : more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能
  • nop : 空操作指令,执行指令使程序计数器PC加1,占用一个机器周期
  • ebp esp : 寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(低址地)
  • bp : 16位 ebp :32位 rbp :64位
  • info r :info registers , 查看寄存器的情况
  • 缓冲区溢出攻击:是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上,当覆盖到堆栈中的返回地址时,将会引起程序错误或运行其他程序
  • call : call指令的机器代码表示为4字节(IA32的ATT格式),0x80 ** ** **,后3个字节为跳转到的指令地址到目前下一条指令的地址的偏移量,即 :
    • 后3个字节的值 + eip(目前所运行的call指令的下一条指令的地址) = 新eip(要跳转到的指令的地址)

测试可执行代码,发现成功运行了getshell代码

1 逆向及Bof基础实践说明

1.1 实践目标

  • 本次实践的对象是一个名为pwn1的linux可执行文件。
  • 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。
  • 实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode。

三个实践内容如下:

  • 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
  • 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
  • 注入一个自己制作的shellcode并运行这段shellcode。

2 直接修改程序机器指令,改变程序执行流程

  • 知识要求:Call指令,EIP寄存器,指令跳转的偏移计算,补码,反汇编指令objdump,十六进制编辑工具
  • 学习目标:理解可执行文件与机器指令
  • 进阶:掌握ELF文件格式,掌握动态技术
  • 下面就修改可执行文件,将其中的call指令的目标地址由d7ffffff变为c3ffffff。
时间: 2024-10-13 15:54:17

20145339顿珠达杰 《网络对抗技术》 逆向与Bof基础的相关文章

20145301赵嘉鑫《网络对抗》逆向及Bof基础

20145301赵嘉鑫<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的.我们实践的目标就是想办法运行这个代码片段. 本次实践主要是学习两种方法: 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数. 手工修改可执

20145336张子扬 《网络对抗》逆向及bof基础

20145336张子扬 <网络对抗>逆向及bof基础 学习知识点 缓冲区溢出 缓冲区溢出 一种非常普遍.非常危险的漏洞,在各种操作系统.应用软件中广泛存在.利用缓冲区溢出攻击,可以导致程序运行失败.系统宕机.重新启动等后果.更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作. 缓冲区溢出原理 通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的.造成缓冲区溢出的原因是程序中没有仔细检查

20155311高梓云《网络对抗》逆向及Bof基础

20155311高梓云<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的.我们实践的目标就是想办法运行这个代码片段. 本次实践主要是学习两种方法: 1.利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数. 2.手工

20145235李涛《网络对抗》逆向及Bof基础

上学期实验楼上做过这个实验 直接修改程序机器指令,改变程序执行流程 首先进行反汇编   我们所要修改的是,程序从foo返回,本来要返回到80484ba,而我们要把80484ba修改为getshell的首地址,所以通过vim直接查看可执行文件,并找到程序从foo返回的二进制代码,并将其替换,使之跳转到函数getshell. 这样程序就跳转到了getshell 缓冲区溢出攻击 在调用foo函数时,输入的字符会存储在foo函数的栈内,程序会提前申明缓存区的大小,如果数据过大,超过缓冲区的大小,显然会溢

2019-2020-2 20175203马羽达《网络对抗技术》Exp02 Kali的安装

2019-2020-2 20175203马羽达<网络对抗技术>Exp02 Kali的安装 任务一 安装Kali虚拟机 任务二 配置好共享文件夹 任务一 1.首先进行kali的下载(https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/),我选择下载的是一个现成的适用于vm的虚拟机,所以后续需要进行用户的添加. 2.对kali进行汉化 1)进入root权限后输入vim /etc/apt/

20145311王亦徐 《网络对抗技术》 Web安全基础实践

2014531王亦徐 <网络对抗技术> Web安全基础实践 实验内容 利用WebGoat平台尝试了一些XSS.CSRF.SQL注入攻击 基础问题回答 1.SQL注入攻击原理,如何防御原理: SQL注入是指攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息.简单地认为是将sql语句作为输入交给表单或者通过域名等将sql交给后台,从而欺骗服务器执行sql语句 防范: 过滤字符串,对一些数据库敏感

2017-2018-2 20155314《网络对抗技术》Exp8 Web基础

2017-2018-2 20155314<网络对抗技术>Exp8 Web基础 目录 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 Apache的安装与配置 2 前端编程 3 后端编程 PHP的安装与配置 4 MYSQL的安装与配置 5 简单SQL注入与XSS 实验中遇到的问题及解决过程 实验总结与体会 参考资料 返回目录 实验内容 Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. Web前端

20155324《网络对抗技术》web安全基础实践

20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,把SQL语句当做用户名等输入正常网页中以获取数据库信息的攻击,最终达到欺骗服务器执行恶意的SQL命令 ②对输入的数据进行过滤,在数据库中对密码进行加密 XSS攻击的原理,如何防御 ①通过对网页注入可执行代码,成功地被浏览器执行,以达到攻击的目的

20154309 【网络对抗技术】Exp8: Web基础

20154309 [网络对抗技术]Exp8: Web基础 一.实验要求 掌握网页编程的基本知识 html语法 javascript php 前端,后台,数据库之间如何建立连接 掌握数据库的使用 mysql的启动,创建数据库,表单等基本操作 sql语句的使用 了解如今网页设计上的一些安全隐患以及原理 sql注入 xss攻击 二.实验问题解答 什么是表单 表单是web设计中一个组件,用于采集用户输入的数据,以便进行后续处理,实现和用户之间的交互 浏览器可以解析运行什么语言 html php 脚本语言