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函数会简单 ...
随机推荐
- Objective-C中NSArray的基本用法示例
NSArray的一些用法 NSArray只允许装OC对象,并且不能装空值,空代表数组元素的结束 #pragma mark - NSArray的基本用法 // 创建一个空数组 NSArray *arra ...
- 28.json数组,select选择,input输出对应数据
效果:选择对应的车类,下面的input会实时出现车价. html: <form action="" class="priceModelform1"> ...
- 水题C
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种有一棵树. ...
- html5-样式表的使用-初步
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- Unknown Treasure (卢卡斯 + 孙子定理, 模板题)
Unknown Treasure 参考链接 : https://www.cnblogs.com/linyujun/p/5199684.html 卢卡斯定理 : C(n, m) % p = C(n ...
- 用 hashcat 破解 WIFI WPA2破解
首先用CDlinux系统进行抓包,CDlinux抓包我就不详细说明 到这里可以查看如何安装CDlinux http://jingyan.baidu.com/article/7f766daf5173a9 ...
- BIOS 搭配 MBR/GPT 的开机流程
鸟哥私房菜书上内容: BIOS 搭配 MBR/GPT 的开机流程 在计算机概论里面我们有谈到那个可爱的BIOS与CMOS两个东西, CMOS是记录各项硬件参数且嵌入在主板上面的储存器,BIOS则是一个 ...
- 转:三值逻辑与NULL的处理方式
来自:<Microsoft SQL SERVER 2008技术内幕 T-SQL查询>P7 在SQL中谓词(逻辑表达式)的可能值为TRUE.FALSE和UNKNOWN.这就是所谓的三值逻辑, ...
- docker Dockerfile指令ADD和COPY的区别,添加目录方法
docker Dockerfile指令ADD和COPY的区别,添加目录方法 ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录.以及一个URL标记的文件 拷贝到镜像中.其格式是: ADD 源 ...
- python之运算符与基本数据类型
1.开发工具:IDE pycharm(推荐).eclipse 2.运算符 结果是值 算数运算 a = 10 * 10 赋值运算 a = a + 1 a+=1 结果是布尔值 比较运算 a = 1 ...