Shellcode攻击实验

//csdn博客目前暂时不再更新了,有兴趣请访问我的技术博客-晓的博客:zhangxiaolong.org 

      首先,先要知道什么是shellcode,Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。详见维基百科shellcode介绍:http://en.wikipedia.org/wiki/Shellcode

      今天,先从一个简单的漏洞程序入手分析进行shellcode攻击。看一个程序vulp.c

#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
char buf[1024];
strncpy(buf, argv[1], sizeof(buf) - 1);
printf(buf);
exit(0);
}

    我们的目的是在程序执行到exit()时,通过更改exit的内存地址中的内容,把shellcode的地址作为内容写入到该地址。

(1)编译vulp.c程序,并且设置为suid权限。如图1所示。

图1

(2)编写一个shellcode代码(一般可以在网上找到,并做小修改就可以了),并定义一个环境变量EGG,在变量中存放shellcode;编写一个get()函数,目的是获取这个变量的地址。如图2示。所获取的地址为0xbffff838.

    get()函数作用是返回变量EGG在内存中的地址。函数内容为:

#include<stdio.h>
int main()
{
     printf("%p\n",getenv("EGG"));
     exit(0);
}

图2

(3)寻找exit函数的地址,用objdump –R vulp命令,寻找exit的地址,如图3示.

图 3

(4)为了在exit函数位置内写入地址,首先要计算在此位置要写入的字符数,如图4所示。Exit在第八个位置上。

图 4

(5)有以上内容知,用vulp函数在exit地址内写入如下图5示的内容,其中在0x0804a010的低地址写入0xf839,在高地址位写入0xbfff。(计算方法在图中已表明)

图 5

   

      接下来在运行vulp的程序中,执行到exit时,不进行退出,而转向执行shellcode代码,运行得到root权限。如图6所示。(运行后可能结果与图片显示不一样,此图是为了更好的显示效果,所以所有的填充都用0)

图 6

 

 

时间: 2024-11-04 02:58:58

Shellcode攻击实验的相关文章

汇编语言 栈溢出攻击实验

问题描述 汇编语言 栈溢出攻击实验 对于实验的原理我并不太清楚,应该是吧foo函数的返回地址篡改到malice函数的入口,最后不断循环malice函数用栈帧把栈占满导致溢出呢? 附上程序原文: void malice() { printf("you have been attacked.n"); } void foo() { int* ret; ret=(int*)&ret+2; //get the addr of return addr (*ret)=(int)malice;

了解return-into-libc攻击以及如何在系统中防止攻击的发生

最后,本文给出了针对这些攻击方法的防御手段.本文可以帮助读者了解 return-into-libc 攻击以及如何在系统中 防止攻击的发生.缓冲区溢出攻击是最常见的利用程序缺陷的攻击方法,并成为了当前重要的安全威胁之一. 在各种安全报告中,缓冲区溢出漏洞始终是其中很重要的一部分.缓冲区溢出攻击很容易被攻击者利用,因为 C++ 和 C++等语言并没有自动检测缓冲区溢出操作,同时程序编写人员在编写代码时也很难始终检查缓冲区是否可能溢出.利用溢出,攻击者可以将期望数据写入漏洞程序内存中的任意位置,甚至包

在linux下进行缓冲区溢出实验 出现illegal instruction

问题描述 在linux下进行缓冲区溢出实验 出现illegal instruction int main(int argc, int *argv[]) { char buf[10]; if(argc>1) strcpy(buf,argv[1]); return 0; } 编译时带有-fno-stack-protector,在第一参数为21字符时正常,22字符时出现illegal instruction,23字符时出点段错误. 请问22字符时的illegal instruction是怎么回事? 解

基带0day漏洞可攻击数百万部华为手机

本文讲的是基带0day漏洞可攻击数百万部华为手机,安全公司Comsecuris的安全研究员Ralf-Phillip Weinmann周四透露:未公开的基带漏洞MIAMI影响了华为智能手机.笔记本WWAN模块以及loT(物联网)组件.在其中一种攻击方案中,攻击者可以对这些设备进行内存破坏的攻击.不过,攻击成功需要的条件很难具备,这大大降低了公共受攻击的可能性. 数千万的华为智能手机可被轻易攻击 Weinmann表示,这一个基带漏洞是HiSliconBalong芯片组中的4G LTE调制解调器(译者

Offset2lib攻击如何全面绕过64位Linux的内核防护【视频】

前言 地址空间布局随机化(ASLR),在你知道目标代码或数据定位的前提下,它可以变成一种规避攻击的技术.正因为黑客并不知道整个地址空间的布局,ASLR技术变得极为有效.只有当可执行程序编译为PIE时(地址无关可执行文件),才能最大限度地从ASLR技术那里获得保护,因为其所有组成部分都是从随机地址加载的. 然而,当可执行文件被编译成PIE之后,GNU/Linux下的ASLR实现的过程中,会出现一个名为Offset2lib安全漏洞,其专门用于绕过在GNU/Linux下如ASLR之类的对于普通漏洞的常

黑客老王:一个人的黑客史

   三十年过去了,在广州潮湿的天气里,我经常会回忆起小时候东北的天空. 那时候,我时常需要仰望天空.因为我的任务是手握一根松木杆,高高挑起电视天线.一阵风吹过,电视上就闪过一片雪花.村庄很空旷,我有足够的时间,把天线调整到一种精妙的姿势.在某一刻,电视里的雪花猛然消失,我的心情顿时舒畅得无以复加. 直插天际的松木天线很漂亮,只是它的刺有些扎手. 如果愿意,可以叫我老王.从小我就喜欢一切最先进的科技.在1980年代,最先进的科技是"电".那时候电视经常因为里面电压的变化,造成影像拉伸或

物联网技术浪潮将给IT职位与工作效率提升带来哪些深远影响

在北卡罗来纳州凯里市通过安装水表系统以自动化方式将用水情况发布给公共事业部门之后,其十个相关抄表岗位旋即遭到裁撤.而日前水资源集团亦凭借着物联网技术对内部工作岗位进行了削减. 过去工作人员每月需要检查总计约六万块水表,如今新的水表记录系统能够每小时检查水资源使用情况,并将使用量数据通过无线方式以每天四次的频率向总部报告. 能够每小时掌握水资源使用情况使得相关部门得以及时发现异常问题.相较于由现场检测人员带来的高额运营成本,该水资源部门如今已经可以主动联系客户,提醒其厕所及花园可能存在的漏水现象.

“性冷淡”的企业聊天工具,里面的秘密比陌陌还多

   世道越来越艰辛,觅食都要以"团伙"为单位.连恐怖分子搞暴恐袭击都玩多点协同. 从某业内段子手的吐槽来看,主打团队之间协作的企业聊天协作工具在2015年大火是有理可循的.钉钉.今目标.纷享销客.iWork365等等类似平台都在以各自的姿势强势插入这个领域.不过,有人的地方就有秘密:特别是人多的地方,秘密总是多到无处容身. 其实只要不在其中宣布出柜,这种"性冷淡"的内部协作平台是没有什么"你懂的"秘密的.不过换一个角度来看:身处组织,最重要的秘

如何防止ISP通过智能设备窥探你的隐私

普林斯顿大学的研究人员,找到了可以阻止互联网服务供应商(ISP)和网络窥探者通过智能设备监视你的解决方案.     劣质安全和可能的隐私侵犯,是伴随智能设备的两大风险.即便你已经采取额外措施保护你的隐私,比如将IoT设备置于VPN之后,ISP或者具备ISP类似功能的敌人,依然可以用你的智能设备监视你. 幸运的是,普林斯顿大学的研究论文<监视智能家居:加密IoT流量中的隐私攻击与防护>,提出了阻止ISP通过智能设备窥探用户隐私的方法. 对用户隐私的攻击 研究人员发现,ISP或其他无源网络敌人,可