20145308 《网络对抗》 逆向及BOF基础实践 学习总结
20145308 《网络对抗》 逆向及BOF基础实践 学习总结
实践目的
通过两种方法,实现程序能够运行原本并不会被运行的代码
实践原理
- 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数
手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数
知识点学习总结
汇编、机器指令
汇编指令与机器指令一一对应
EIP、指令地址
%eip存储指向下一条要执行的指令的地址%ebp存储栈底指针,栈基址%esp存储栈顶指针,始终指向栈顶ESP存储栈底地址,是由ESP在函数调用之前传递给EBP的。等到调用结束之后,EBP会把其地址再次传回给ESP。所以ESP再次指向了函数调用结束后,栈顶的指针
方法一
反汇编了解程序
首先将可执行文件
pwn1复制另存为文件名为学号20145308的文件并执行,可实现回显输入的字符串的功能

- 使用
objdump -d 20145308 | more命令查看目标文件20145308的反汇编代码 getshell

foo

main

- 可看到
main函数在call 8048491处调用执行foo函数,对应机器码为e8 d7ffffff 想要使
main函数在此处改为跳转执行getshell函数,修改d7ffffff(EIP+d7ffffff=foo)为c3ffffff(EIP+c3ffffff=getshell)即可直接修改机器指令,改变程序执行流程
- 使用
vi打开20145308,将显示模式切换至16进制模式,并查找到e8 d7

将
d7改为c3,并将模式改回原格式,保存

运行修改后的文件,成功执行
getshell

方法二
反汇编了解函数
复制可执行文件
pwn1为20145308lhy

- 使用
objdump -d 20145308lhy | more进行反汇编 目标触发函数
getshell

正常运行的可执行函数
foo

读入字符串部分函数

确认输入字符串哪几个字符会覆盖到返回地址
输入长度超过缓冲区的字符串

通过查看
EIP寄存器的值,发现是5覆盖返回地址

再次输入另一字符串,精确确定是字符串的哪个位置覆盖返回地址

查看
EIP寄存器,发现是1234四个数字覆盖返回地址

构造输入字符串
构造用
getsell地址覆盖返回地址的字符串

使用16进制格式查看
input文件

将
input通过管道符|作为20145308lhy的输入,缓冲区溢出,覆盖返回地址,返回到getshell,截获getshell后输入命令ls成功执行

其他
- 本次实践使用两种方法实现了使程序执行了getshell,第一种方法为利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数;第二种方法为手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。通过这次实践复习加深了对上学期学习的Linux命令的理解,也对本次实践所要学习的知识有所掌握
20145308 《网络对抗》 逆向及BOF基础实践 学习总结的更多相关文章
- 20145308 《网络对抗》Web安全基础实践 学习总结
20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...
- 网络对抗实验一 逆向及Bof基础实践
网络对抗实验一 逆向及Bof基础实践 一.实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ...
- 20145206邹京儒《网络对抗》逆向及Bof基础实践
20145206邹京儒<网络对抗>逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:ma ...
- 20145216《网络对抗》逆向及BOF基础实践
20145216<网络对抗>逆向及BOF基础实践 1 逆向及Bof基础实践说明 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函 ...
- 20145327 《网络对抗》逆向及BOF基础实践
20145327 <网络对抗>逆向及BOF基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...
- 20145204《网络对抗》逆向及bof基础实践
20145204<网络对抗>逆向及bof基础实践 实践目的说明 实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何 ...
- 20145208蔡野 《网络对抗》逆向及BOF基础实践
20145208蔡野 <网络对抗>逆向及BOF基础实践 逆向及Bof基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函 ...
- 《网络对抗》——逆向及Bof基础实践
<网络对抗>--逆向及Bof基础实践 原理 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数. 手工修改可执行文件,改变程序执行流程,直接跳转到g ...
- 20145302张薇 《网络对抗技术》逆向及BOF基础实践
20145302张薇 <网络对抗技术>逆向及BOF基础实践 实验内容 实践对象:名为20145302的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单 ...
随机推荐
- Dockerfile详解(一)
Dockerfile 用于自动化构建一个docker镜像.Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: ...
- 使用Spark下的corr计算皮尔森相似度Pearson时,报错Can only zip RDDs with same number of elements in each partition....
package com.huawei.bigdata.spark.examples import org.apache.spark.mllib.stat.Statistics import org.a ...
- RDD、DataFrame、Dataset三者三者之间转换
转化: RDD.DataFrame.Dataset三者有许多共性,有各自适用的场景常常需要在三者之间转换 DataFrame/Dataset转RDD: 这个转换很简单 val rdd1=testDF. ...
- Unity shader学习之Grab Pass实现玻璃效果
GrabPass可将当前屏幕的图像绘制在一张纹理中,可用来实现玻璃效果. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7201324.html shader ...
- java中二维数组的复制克隆
https://blog.csdn.net/qq_37232304/article/details/79950022
- Rpgmakermv(7) Chronus插件介绍翻译
协议:MIT 作用:时间,有时间推进,可以设置速度,随着游戏中时间的推进,会发生昼夜改变和天气变化. ------------------------------------------------- ...
- 支持向量机SVM 参数选择
http://ju.outofmemory.cn/entry/119152 http://www.cnblogs.com/zhizhan/p/4412343.html 支持向量机SVM是从线性可分情况 ...
- KL距离,Kullback-Leibler Divergence
http://www.cnblogs.com/ywl925/p/3554502.html http://www.cnblogs.com/hxsyl/p/4910218.html http://blog ...
- CSS小知识-----前缀-moz-、-ms-、-webkit-,-o-分别代表的意思
这种方式在业界上统称:识别码.前缀 -ms-代表[ie]内核识别码 -moz-代表火狐[firefox]内核识别码 -webkit-代表谷歌[chrome]/苹果[safari]内核识别码 -o-代表 ...
- 关于poi导出excel方式HSSFWorkbook(xls).XSSFWorkbook(xlsx).SXSSFWorkbook.csv的总结
1.HSSFWorkbook(xls) import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermo ...