前言 从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用.当函数调用发生时,新的堆栈帧被压入堆栈:当函数返回时,相应的堆栈帧从堆栈中弹出.尽管堆栈帧结构的引入为在高级语言中实现函数或过程这样的概念提供了直接的硬件支持,但是由于将函数返回地址这样的重要数据保存在程序员可见的堆栈中,因此也给系统安全带来了极大的隐患. 历史上最著名的缓冲区溢出攻击可能要算是1988年11月2日的Morris Worm所携带的攻击代码了.这个因特网蠕虫利用了fingerd程序的缓冲区溢出漏洞,给…
前言 从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用.当函数调用发生时,新的堆栈 帧被压入堆栈:当函数返回时,相应的堆栈帧从堆栈中弹出.尽管堆栈帧结构的引入为在高级语言中实现函数或过程这样的概念提供了直接的硬件支持,但是由于将 函数返回地址这样的重要数据保存在程序员可见的堆栈中,因此也给系统安全带来了极大的隐患. 历史上最著名的缓冲区溢出攻击可能要算是 1988年11月2日的Morris Worm所携带的攻击代码了.这个因特网蠕虫利用了fingerd程序的缓冲区溢出漏…
本文的目的不是为了介绍如何进行恶意的破坏性活动,而是为了教会你如何去防御此类破坏性活动,以帮助你扩大知识范围,完善自己的技能,如有读者运用本文所学技术从事破坏性活动,本人概不负责. 0×01 前言 1988年,世界上第一个缓冲区溢出攻击–Morris蠕虫在互联网上泛滥,短短一夜的时间全世界6000多台网络服务器瘫痪或半瘫痪,不计其数的数据和资料被毁.造成一场损失近亿美元的空前大劫难! 缓冲区溢出是一种非常普遍.非常危险的漏洞,在各种操作系统.应用软件中广泛存在.利用缓冲区溢出攻击,可以导致程序运…
一.几个关于指针的小知识点: 1.  malloc是在堆上动态分配内存,返回的是void *,使用时会配合显式/隐式类型转换,用完后需要用free手动释放. alloca是标准库函数,可以在栈上分配任意字节数量的内存,用完自动释放. 2.指针的优先级较低: char (*p)[3],括号中优先级最高,所以p是一个指针,指向一个3个元素的char数组. char *p[3],  因为指针优先级较低,所以*与char结合,p代表一个3个元素的数组,每个元素都是一个char *. 3.函数指针: 它的…
先来看看基于 Red Hat 与 Fedora 衍生版(例如 CentOS)系统用于阻止栈溢出攻击的内核参数,主要包含两项: kernel.exec-shield 可执行栈保护,字面含义比较“绕”, 实际上就是用来控制能否执行存储在栈 中的代码,其值为1时表示禁止:为0时表示允许:默认为1,表示禁止执行栈 中的代码,如此一来,即便覆盖了函数的返回地址导致栈溢出,也无法执行 shellcode 查看与修改系统当前的可执行栈保护参数: [root@localhost 桌面]# sysctl -a |…
CSAPP缓冲区溢出攻击实验(下) 3.3 Level 2: 爆竹 实验要求 这一个Level的难度陡然提升,我们要让getbuf()返回到bang()而非test(),并且在执行bang()之前将global_value的值修改为cookie.因为全局变量与代码不在一个段中,所以我们不能让缓冲区一直溢出到.bss段(因为global_value初始化为0,所以它会被放在.bss而非.data段以节省空间)覆盖global_value的值.若修改了.bss和.text之间某些只读的段会引起操作系…
在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等目的.但随着操作系统和编译器针对缓冲区溢出问题引入防护机制,初学者想要由简入繁的学习和实践缓冲区溢出的原理变得困难.在 Linux 环境下,用户可以通过设置编译和系统环境来去除某些防护措施,从而方便的完成某些简单的缓冲区溢出实验. 1.关闭SSP( Stack Smashing Protector…
转自:http://blog.csdn.net/wangxiaolong_china/article/details/6844415 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 转载请注明出处httpblogcsdnnetwangxiaolong_china 1    Linux栈溢出保护机制 1   基本栈溢出攻击原理及实验 转载请注明出处:http://blog.csdn.net/wangxiaolong_china 1.1    Linux栈溢出保护机制 基本的…
逆向工程[缓冲区溢出攻击] 任务描述 掌握函数调用时的栈帧结构,利用输入缓冲区的溢出漏洞,将攻击代码嵌入当前程序的栈帧中,使程序执行我们所期望的过程. 主要方法 溢出的字符将覆盖栈帧上的数据,会覆盖程序调用的返回地址,这赋予了我们控制程序流程的能力.通过构造溢出字符串,程序将"返回"至我们想要的代码上. 实验包括三个可执行文件: ---| bufbomb为目标程序 ---| makecookie可以生成bufbomb需要的输入参数的cookie(也可以在gdb调试时直接读取寄存器获得)…
CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数名(bufbomb -t)的差异,不影响我们的实验. 1.实验工具 1.1 makecookie 后面实验中,五次"攻击"中有四次都是使你的cookie出如今它原本不存在的位置,所以我们首先要为自己产生一个cookie. 实验工具中的makecookie就是生成cookie用的.參数是你的…
Linux下的DOS攻击 DOS是Denial of service的简称,即拒绝服务,造成Dos攻击行为被称为Dos攻击,其目的是使计算机或网络无法提供正常的服务.最常见的Dos攻击有计算机带宽攻击和连通性攻击 概念 计算机和网络系统为Internet用户提供互联网资源,如果黑客要进行Dos攻击的话,可以有很多手段!现在最常见的Dos攻击有对计算机网络的带宽攻击和连通性攻击. 带宽攻击指以极大的信息量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过. 连通性攻击指用大…
什么是CC攻击?CC攻击就是利用大量代理服务器对目标计算机发起大量连接,导致目标服务器资源枯竭造成拒绝服务.那么如何判断查询CC攻击呢?本文主要介绍了一些Linux下判断CC攻击的命令. 查看所有80端口的连接数 netstat -nat|grep -i "80"|wc -l 对连接的IP按连接数量进行排序 netstat -anp | grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n…
缓冲器溢出攻击实验题目: 下边的代码摘自<黑客攻防技术宝典——系统实战篇(第 2 版)>2.5 节,攻击该代码,获得root 权限,实现相应的效果. strcpy(little_array,argv[ } 实验步骤: 1) 首 先 确 保 系 统 禁 用 了 ASLR ( Address space layout randomization ). cat /proc/sys/kernel/randomize_va_space 2) 利用 find_start 函数可以找出 ESP 的地址. #…
之前做过一个Windows应用SLmail的缓冲区溢出的实验 这次来做一个Linux平台的缓冲区溢出实验: 缓冲区溢出是什么? 学过汇编的应该知道,当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果 这次用到的是一款小游戏:(不是传统意义上的穿越火线) CrossFire(不是TX的某网游,只是恰好同名) 多人在线RPG游戏 1.9.0 版本接受入站 socket…
DDOS的全称是Distributed Denial of Service,即"分布式拒绝服务攻击",是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求.耗尽目标主机资源或网络资源,从而使被攻击的主机不能为合法用户提供服务. DDOS攻击的本质是:利用木桶原理,寻找利用系统应用的瓶颈:阻塞和耗尽:当前问题:用户的带宽小于攻击的规模,噪声访问带宽成为木桶的短板. 可以参考下面的例子理解下DDOS攻击.1)某饭店可以容纳100人同时就餐,某日有个商家恶意竞争,雇佣了200人来这个…
Linux系统下穿越火线-缓冲区溢出 原理:crossfire 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞. 工具: 调试工具:edb: ###python在漏洞溢出方面的渗透测试和漏洞攻击中,具有很大的优势 实验对象:crossfire[多人在线RPG游戏] 运行平台:Kali i686 虚拟机[32位,计算机CPU位数是指地址总线位数,64位系统的寻址空间为2^64,寻址过大,难以处理,为了简化本章操作,所以选用32位] 搭建实验环境 #linux中,游戏需安装带其ga…
LINUX下SYN攻防战如下 (一)SYN攻击原理 SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费服务器CPU和内存资源.SYN攻击聊了能影响主机外,还可以危害路由器,防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施.我们知道,在网络中两台电脑建立TCP连接 时需要进行三次握手过程,客户端首先向服务器发关TCP SYN数据包,接着服务器会向客户端发关相应的SYN ACK数据包,最后客户端会以ACK进行响应.从而建立…
最近认真学习了下linux下堆的管理及堆溢出利用,做下笔记:作者作为初学者,如果有什么写的不对的地方而您又碰巧看到,欢迎指正. 本文用到的例子下载链接https://github.com/ctfs/write-ups-2014/tree/master/hitcon-ctf-2014/stkof 首先总结一下linux下堆的分配管理.堆的基本结构见上一篇文章,这里不再赘述. 一个更详细总结的传送门 glibc内存管理ptmalloc源码分析 1.堆区是在进程加载时的一片区域,mmap方式分配的堆结…
原文地址:http://www.cnblogs.com/5201351/p/4208277.html 在windows的DOS操作界面里面,清屏的命令是cls,那么在linux 里面的清屏命令是什么呢?下面笔者分享几种在linux下用过的清屏方法. 1.clear命令.这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息. 2.Ctrl+l(小写的L).这是一个清屏的快捷键,这个是笔者在工作中用得最多的一种清屏方式,清屏效果同clear命令一样. 3…
wvdial是LINUX下的智能化拨号工具,利用wvdial和ppp可以实现linux下的轻松上网.在整个过程中wvdial的作用是拨号并等待提示,并根据提示输入相应的用户名和密码等认证信息:ppp的作用是与拨入方协商传输数据的方法并维持该连接. 一.wvdial及其相关配置 wvdial的功能很强大,会试探着去猜测如何拨号及登录到服务器,同时它还会对常见的错误智能的进行处理,不象chat一样,要求你去写登录脚本.wvdial只有一个配置文件:/etc/wvdial.conf. wvdial的启…
转自:http://www.cnblogs.com/langtianya/p/4164151.html 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的通用shell脚本. 只需要修改一些配置变量,就可以用来做起动脚本了. 并且除了能起动.还支持关闭.重启.查看是否正在运行的功能. 原文地址:http://www.tudaxia.com/archives/10 start函数中,nohup部分其实也…
Linux下的GitHub安装与简单配置教程   1.GitHub简介 Git是一个分布式版本控制系统,与其相对的是CVS.SVN等集中式的版本控制系统. 2.Git的安装 1)安装Git a.查看与使用 在ubuntu下可以使用如下命令进行查看系统中是否安装了Git: $ git b.安装 若当前系统中尚未安装Git,在ubuntu下可以使用如下命令进行安装: $ sudo apt-get install git 2)注册GitHub帐号 进入GitHub官网,进行帐号的注册,如下图所示: 注…
转自:http://blog.csdn.net/edsam49/article/details/5840489 在Linux下,你的代码工程如果是用svn进行管理的,要删除Linux kernel里的svn隐藏文件,在samba里用Windows的搜索功能搜索出来再手动删除,真是一件劳心劳力的事情,兄弟我以前也干过这样的事.认 真研究一下Linux的命令,里面还是有很多巧妙的方法的.笔者推荐一种:$find ./ -name "*.svn" | xargs rm -rf; "…
Remmina:一个 Linux 下功能丰富的远程桌面共享工具 作者: Aaron Kili 译者: LCTT geekpi | 2017-05-10 09:05   评论: 2 收藏: 4 Remmina 是一款在 Linux 和其他类 Unix 系统下的自由开源.功能丰富.强大的远程桌面客户端,它用 GTK+ 3 编写而成.它适用于那些需要远程访问及使用许多计算机的系统管理员和在外出行人员. 它以简单.统一.同质.易用的用户界面支持多种网络协议. Remmina 功能 支持 RDP.VNC.…
这是我第一篇博客,写的不好请谅解 ____________________________(分割线)_______________________________ 在kali linux系统下自带工具中有个arp神器叫做"arpspoof",废话不多说,直接上手 此次实验环境为靶机与FTP服务器之间的arp中间人 靶机 ip:10.90.100.53   mac:04:69:f8:db:75:6b 中间人kali ip:10.90.100.242   mac:00:0c:29:a7:1…
导读 Linux服务器在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等.通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长.比较彻底的解决方法是添置硬件防火墙.不过,硬件防火墙价格比较昂贵.可以考虑利用Linux 系统本身提供的防火墙功能来防御. SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问. Linux内核提供了若干SYN相关的配置,加大SYN队列长度可…
1.软件工具安装 1. nmap --网络嗅探工具 2. dsniff ( arpspoof )    --ARP嗅探工具 3. net-tools ( ifconfig ) --网络工具 sudo apt-get install dsniff sudo apt-get install net-tools sudo apt-get install nmap 2.查看当前局域网下的所有主机 umlinux@umlinux-PC:~$ nmap -sP 192.168.89.* Starting N…
这是我的学习总结,刚入坑网络安全,写的不好或者有什么错误的希望大佬们指正 首先了解ARP的作用以及原理: ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP栈中的网络层,负责将某个ip地址解析成对应的MAC地址,ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行,当然还有最重要的一点 它一般只能在内网进行,无法对外网(互联.非本区域内的局域网)进行攻击. ARP攻击就是通过伪造IP地址和MAC地址实现ARP…
 在维护每个线程的私有数据的时候,我们可能会想到分配一个保存线程数据的数组,用线程的ID作为数组的索引来实现访问,但是有一个问题是系统生成的线程 ID不能保证是一个小而连续的整数,并且用数组实现的时候由于其他线程也可以访问其数组中的数据,这样会引起数据混乱.这时候我们可以借助线程的私有数据 来解决这个问题.       线程私有数据实现的主要思想是:在分配线程私有数据之前,创建与该数据相关联的健,这个键可以被进程中的所有线程使用,但每个线程把这个键与不同的线程私有数据地址进行关联,需要说明的是每…
Tun/Tap都是虚拟网卡,没有直接映射到物理网卡,是一种纯软件的实现.Tun是三层虚拟设备,能够处理三层即IP包,Tap是二层设备,能处理链路层网络包如以太网包.使用虚拟网络设备,可以实现隧道,如OpenVPN的实现.这篇文章我主要根据自己画的一个图来简单说明在隧道实现中两个虚拟网络设备数据包的流程. 上面的图中,左右两边分别为两台机器.一台有一块物理网卡配置了IP:172.16.1.11,这台机器的系统里有一个Tun(以Tun为例,不讲Tap了)设备,配置了IP:192.168.1.11;…