LINUX保护机制
LINUX保护机制RELRORelocation Read-Only (RELRO) 此项技术主要针对 GOT 改写的攻击方式。它分为两种,Partial RELRO 和 Full RELRO。 部分RELRO 易受到攻击,例如攻击者可以atoi.got为system.plt,进而输入/bin/sh\x00获得shell 完全RELRO 使整个 GOT 只读,从而无法被覆盖,但这样会大大增加程序的启动时间,因为程序在启动之前需要解析所有的符号。
Stack-canary栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈里插入类似cookie的信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败而阻止shellcode的执行。在Linux中我们将cookie信息称为canary。
NXNX enabled如果这个保护开启就是意味着 ...
Linux中标准输出和标准错误的重导向
Linux中标准输出和标准错误的重导向nohup如果一个命令需要长时间在服务器上运行,那么很多时候会用到nohup命令,这时即便远程登录ssh中断了与服务器的联系,那么在服务器上运行的命令也不会因此而被迫停止。
通常情况下,nohup与&连用,**&的意思是将该命令放在后台执行**。如下:
1nohup example.sh &
将exmaple.sh通过&放在服务器后台运行,nohup确保了即便当前ssh远程连接中断,example.sh仍然能够不受影响,继续在远程服务器中运行。
最近有两个配对测序文件,需要比对到参考基因组上,通过bwa可以完成,同时由于该文件比较大,运行时间长,为了避免网络连接不稳定造成ssh中断,使用nohup
1nohup bwa mem ref.fa read1.fq.gz read2.fq.gz > read12.sam &
将两个测序文件合并并生成sam文件。写好命令,一个回车键按下去,“啪”一声,那就一个爽。然后不用管它,十余个小时之后,果然生成了一个很大的文件read12.sam文件。但是,当用该sa ...
Linux下查看二进制文件
Linux下查看二进制文件我们在日常开发中有时候会遇到查看二进制文件的场景,直接打开的话往往会让我们直呼外星人。此时我们就需要各种二进制查看工具了,帮助我们更好的查看二进制文件。
hexdump 查看二进制文件hexdump 是 linux 下一个用于查看二进制文件的命令,它可以将二进制文件转换成十六进制的格式并打印出来,结果如下:
此外 hexdump 提供了各种选项实现数据格式的转换:
hexdump -C Main7.class显示文件的 ASCII格式
-C 命令可以显示对应字节的ASCII格式,并追加到最后面。
1234567891011121314root@74f21669baa4:/ctf/work/competition/2022xiangyuncup/unexp # hexdump -C dump 00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| ...
Linux下开启SSH,并且允许root用户登录,允许无密码登录
Linux下开启SSH,并且允许root用户登录,允许无密码登录SSH概述SSH由IETF的网络小组所制定;SSH为建立在应用层基础上的安全协议。SSH是目前较为可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可以弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台-包括HP-UX,Linux,AIX,Solaris,Digital UNIX,Lrix,以及其他平台,都可以运行SSH。
SSH功能传统的网络的服务程序,如:ftp,pop和telnet在本质上都是不安全的,因为他们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易收到“中间人”这种方式对待,所谓中间人的对待方式,就是中间人冒充真正的服务器接受你传送给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据被“中间人”转手做了手脚后,就会出现很严重的问题。通过使用SS ...
Linux usr目录
Linux /usr目录前言在linux文件结构中,有个很神奇的目录/usr。
有人认为/usr是user的缩写,但是其实不是/usr是Unix Software Resource的缩写,也就是Unix操作系统软件资源所放置的目录,而不是用户数据,所有系统默认的软件都会放置到/usr,系统安装完时,这个目录会占用最多的硬盘容量。
但是说他是user的缩写也不是很过分,因为在原来usr其实是现在的HOME目录,放着各种用户文件,后来被分离出来了
目录下的重要目录
目录
应放置文件内容
/usr/X11R6/
为X Window System重要数据所放置的目录,之所以取名为X11R6是因为最后的X版本为第11版,且该版的第6次释出之意。
/usr/bin/
绝大部分的用户可使用指令都放在这里。请注意到他与/bin的不同之处。(是否与开机过程有关)
/usr/include/
c/c++等程序语言的档头(head ...
Linux sed命令详解
Linux sed命令详解前言linux sed 命令是利用脚本来处理文本文件。
sed命令可以依照脚本的指令来处理编辑文本文件。
Sed主要用来自动编辑一个或者多个文件,简化对文件的反复操作,编写转换程序等等。
语法1sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
-e或--expression= 以选项中指定的script来处理输入的文本文件。
-f或--file= 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
动作说明:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的 ...
Linux proc目录
Linux /proc目录1. 什么是proc目录proc目录是linux系统下一个很重要的目录。它跟/etc、/home等这些系统目录不同,它不是一个真正的文件系统,而是一个虚拟的文件系统
它不存在于磁盘,而是存在于系统内存中。所以当你使用ls -al /proc这条命令来查看proc目录时。会看到其下面的所有文件的大小都为0字节。
proc以文件系统的方式为访问系统内核的操作提供接口。很多系统的信息,如内存的使用情况,cpu的使用情况,进程信息等等这些信息,都可以通过查看/proc的对应文件来获得。
proc文件系统是动态从系统内核读出所需信息的。
2. 初识proc目录proc目录下具体有哪些文件呢?/proc 目录下的文件/proc/cpuinifo CPU的信息(型号、家族、缓存大小等)/proc/meminfo物理内存、交换空间/proc/mounts 已加载的文件系统的列表/proc/devices 可用设备的列表/proc/file ...
Linux dev目录
Linux下的/dev目录前言在Linux下,/dev目录是很重要的,很多设备都在这个目录下
dev是设备(device)的英文缩写,/dev这个目录对于所有用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放这些外部设备的驱动程序,这一点和Windows不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便的去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
dev下的设备文件设备文件分为两种:块设备文件(b)和字符设备文件(c)
设备文件一般存放在/dev目录下,对与常见设备文件作如下说明: /dev/hd[a-t]:IDE设备
/dev/sd[a-z]:SCSI设备
/dev/fd[0-7]:标准软驱
/dev/md[0-31]:软raid设备
/dev/loop[0-7]:本地回环设备
/dev/ram[0-15]:内存
/dev/ ...
kernel的保护机制
kernel的保护机制前言我们从隔离、访问控制、异常检测、随机化这四种方式来介绍内核中的防御机制。
隔离在内核的防御机制中,根据隔离的主体,我们将隔离分为两种
内核态和用户态的隔离
内核自身内部不同对象间的隔离
内核态和用户态的隔离这里主要有
默认:用户态不可直接访问内核态的数据、执行内核态的代码
SMEP:内核态不可执行用户态的代码
SMAP:内核态不可访问用户态的数据
KPTI:用户态不可看到内核态的页表;内核态不可执行用户态的代码(模拟)
用户代码不可执行起初,在内核态执行代码时,可以直接执行用户态的代码。那如果攻击者控制了内核中的执行流,就可以执行处于用户态的代码。由于用户态的代码是攻击者可控的,所以更容易实施攻击。为了防范这种攻击,研究者提出当位于内核态时,不能执行用户态的代码。在 Linux 内核中,这个防御措施的实现是与指令集架构相关的。
x86 - SMEP - Supervisor Mode Execution Protectionx86 下对应的保护机制的名字为 SMEP。CR4 寄存器中的第 20 位用来标记是否开启 SMEP 保护。
开启
默认情况下, ...
kali更换环境变量失败的解决办法
kali更换环境变量失败的解决办法起因搭建arm的交叉编译环境,需要配置环境变量,但是根据教程来做还是不行,后来查阅相关资料才发现,kali的默认shell是zsh。我们需要去更改.zshrc
更换环境变量的方法下载之后,就是设置环境变量,总不能每次指定绝对路径。
12vim /etc/profileexport PATH=/usr/local/volatility:$PATH
更新一下
1source /etc/profile
发现压根没有生效.经过一番百度.
发现还需要更新一个地方. 就是/root/.zshrc
因为kali 2021.4的shell换成了 zsh .
123vim /root/.zshrcexport PATH=/usr/local/volatility:$PATHsource /root/.zshrc
然后再重启就大功告成了.
如果默认的shell是bash的话,就更改对应的.bashrc。和上面是一样的。



