Exp1 PC平台逆向破解 20164323段钊阳
实验目标
学习两种方法运行代码片段,并学习如何注入运行任何Shellcode。
三个实验内容如下:
1.手工修改可执行文件,改变程序执行流程,直接跳转到getshell函数
2.利用foo函数的bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getshell函数
3.注入一个自己制作的shellcode并运行这段shellcode
做好前期的一些准备工作,替换更新换,导入公钥,安装execstack,包括pwn文件的权限(chmod a+x pwn1),成功运行pwn文件,然后复制三份文件,开始实验


实验一.对pwn1文件进行反汇编 objdump -d pwn1,查看代码,发现主函数跳转的是8048491,我们需要把它改成804847d跳转到getshell函数,根据偏移量计算,把d7改成c3,vi pwn1 进入编辑界面 :%!xxd转成16进制格式 /e8 d7 跳转,输入i进行修改 :%!xxd -r 改成原格式,:wq进行保存



然后执行./pwn1发现修改成功,执行getshell

实验2 对pwn2文件进行反汇编,了解程序的基本功能

我们需要输入字符串进行测试,看哪些会覆盖到返回地址,用gdb进行调试,发现1234覆盖到返回地址

但是我们输入的时候要输入16进制的数,所以需要构造输入字符串通过管道符|,作为pwn2的输入,实验成功

实验三.实验三有点麻烦,需要前期准备工作,因为我前期工作以为自己已经修改了文件堆栈,但由于重新复制了文件,做了十几次都没有成功,最后重新进行了准备工作,终于成功了,哭了。
构造payload:使用命令perl -e 'print "A" x 32;print "\x04\x03\x02\x01\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
用A来填满缓冲区,以确认,寻找字符串中对应的的4个字节
输入命令 (cat input_shellcode;cat) | ./20165335 注入攻击bof
在另外一个终端进行gdb调试,先使用 ps -ef | grep 20165335寻找进程号
用attach 命令调用·进程
同时,反汇编,在函数return esp指针变化执行后的ret语句出,设置断点
使用info r esp 查看esp寄存器的值,找出shellcode的地址(地址就在指针的后面)
最后,将找到的4个字节的地址填充进去,完成注入,再次运行程序,实现攻击


实验感想;做实验的时候真的碰到很多的问题,本来应该很早完成的,拖了很久,有时候因为自己很蠢输错了代码,结果一直错误。发现实验真的需要很细心,不过虽然这样,实验大概做了十几次了,对实验过程有了更深的了解,同时了解了实验的原理,收获还是很多的。
Exp1 PC平台逆向破解 20164323段钊阳的更多相关文章
- 20155324《网络对抗》Exp1 PC平台逆向破解(5)M
20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...
- 20165221 《网络对抗技术》EXP1 PC平台逆向破解
20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...
- 2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解(BOF实验) 实验有三个模块: (一)直接修改程序机器指令,改变程序执行流程: (二)通过构造输入参数,造成BOF攻 ...
- 2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解
- 2018-2019-2 20165206<网络对抗技术>Exp1 PC平台逆向破解 - 实验任务 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...
- Exp1 PC平台逆向破解 20165235 祁瑛
Exp1 PC平台逆向破解 20165235 祁瑛 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...
- 2018-2019-2 20165317《网络对抗技术》Exp1 PC平台逆向破解
2018-2019-2 20165317<网络对抗技术>Exp1 PC平台逆向破解 实验目的 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP:无作用,英文&quo ...
- 2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常 ...
- 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解
2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...
- 2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解 实验1-1直接修改程序机器指令,改变程序执行流程 先输入objdump -d 20165305pwn2查看反汇编代码 ...
随机推荐
- Sublime Text 3 安装+注册+汉化
参考:https://www.cnblogs.com/h--d/p/7555119.html
- vue.js常见面试题及常见命令介绍
Vue.js介绍 Vue.js是JavaScript MVVM(Model-View-ViewModel)库,十分简洁,Vue核心只关注视图层,相对AngularJS提供更加简洁.易于理解的API.V ...
- 迷你MVVM框架 avalonjs 0.93发布
这段时间吸取@limodou, @东灵等人的意见,做了以下改进 重构isArrayLike,提高avalon.each的性能,原来avalon.each是依赖于isArrayLike来判定是循环普通对 ...
- VS2008项目移植到Linux
不少人都遇到过这种情况:在Windows下用Visual Studio工具开发的程序需要移植到Linux系统中,做成Linux版本的,但程序比较大,在Linux上又离不开Make,手动编写Makefi ...
- Python slice() 函数
Python slice() 函数 Python 内置函数 描述 slice() 函数实现切片对象,主要用在切片操作函数里的参数传递. 语法 slice 语法: class slice(stop) ...
- jQuery的过滤器总结
1.内容过滤器 $(function () { // $("a:contains('标签')").css("color","green") ...
- [leetcode]273. Integer to English Words 整数转英文单词
Convert a non-negative integer to its english words representation. Given input is guaranteed to be ...
- Window Application has "update" key words
Error Qt Creater:console error:Failed to start program. Path or permissions wrong? Description 在使用Qt ...
- DOM 删除HTML元素
常用方法: <script> var parent=document.getElementById("div1"); var child=document.getEle ...
- post传参
1.form表单 2.数据流