如何使用Linux文本操作命令ed进行提权nov5详解

前言

本文我将为大家介绍一个面向行的文本编辑器命令“ed”,它主要用于生成,显示,更改和操作文本文件。所有ed命令都在行或行范围内执行操作;例如,“d”命令删除行;“m”命令移动行,“t”命令复制行等等。现在,我们要做的就是利用这些“ed”命令,来提升我们在Linux系统上的用户权限。

ed 概要

Linux中的ed命令用于启动“ed文本编辑器”,这是一个基于行的文本编辑器。它是Linux中功能最简单的文本编辑程序,一次仅能编辑一行而非全屏幕方式的操作。它可以帮助用户执行许多操作,如创建,编辑,显示和操作文件。

它有两种不同的工作模式,命令模式(command mode)和输入模式(input mode)。在命令模式下,“ed”从标准输入读取命令并执行,以操作编辑器缓冲区的内容,而在输入,如“m”(移动),“d”(删除),“t” (复制)或“c”(更改)命令时,ed就会进入其输入模式。

键入help命令以了解有关“ed”的更多信息。

ed --help 

使用ed初始化文件:在初始阶段运行命令时终端空间如下图所示。默认情况下,编辑器创建一个要写入的空缓冲区,类似于其他基于命令行的编辑器,在没有文件名的情况下调用时的工作方式。

ed

现在,让我们来创建一个包含文本内容的文本文件。首先,我们输入a进入输入模式,完成编辑后输入一个点(.)然后回车回到命令模式。按wq文件名保存新文件,再按q退出编辑器。

ed
a
.
w info.txt
q
cat info.txt

你可以使用“cat”命令确认文件是否已被成功创建。

使用ed编辑文件:如果现在你想要再次编辑同一文件,你可以通过将文件名作为参数传递给ed命令,然后按照以上相同过程操作即可。

在下图中,我在我的文件“info.txt”中添加了一行,并通过相同的方式创建了它。

ed info.txt

注:无论何时使用ed命令的任何选项你都需要使用 ‘a', ‘.', ‘w', ‘q'命令 。

现在,我们已经学习了使用ed的基本编辑方法。那么如果我们想要更改特定行,该如何使用ed来实现该操作呢?

在下图中,我为大家展示了如何使用'p'和'n'参数打印任何的特定行

当我们输入'p'(小写) 打印当前行,如输入 ‘,p'(不含引号) 则显示全文;'n'用于显示最后一行的行号和内容,输入数字来选择要编辑行;

ed info.txt
p

因此,我们只需输入相应的行号即可。

n
2
5

定位到相应的行后,你可以通过输入“c”命令来更改行。例如,这里我更改了第5行,这是我文件中的最后一行,我添加了一些额外的内容在其中,并使用'cat'命令查看我的内容是否已成功被添加,最后按照上述相同的过程保存文件即可。

c
cat info.txt

通过使用ed显示错误消息:当你键入ed无法理解的内容时会显示问号 (?)。了解更多有关错误编辑的信息,只需键入'h'即可。

ed info.txt
b
h

从以下截图中可以看到,当我输入了一个'b'选项时它返回了(?),这是表示错误的符号。而我输入'h' ed则更进一步的向我说明了错误的原因,即选项b为未知命令。

ed复制和移动操作:除了上面讨论的功能之外,ed还提供了在其他位置复制和粘贴行的选项,在这种情况下,我们使用't'命令复制行,'m'命令移动行。你需要在t命令前添加你想要复制和添加行的行号。例如,如下所示,我已将第5行复制到位置0并进行了保存。

ed info.txt
5t0
cat info.txt

在上述命令中,5表示要复制的行,0表示粘贴位置的行号。

ed搜索操作:我们也可以按关键字搜索任意的行。首先,我们在ed后使用“-p%”选项,这将进一步的提示你搜索任务。我们只需在%后跟搜索关键字,按Enter键即可。

ed -p% info.txt
%/misconfiguration
%/Linux

在下图中,ed仅打印了那些包括搜索关键字misconfiguration和Linux的行。

滥用 ed 命令

现在,我们将利用ed命令执行提权操作。为此,我们需要设置具有管理权限的ed command lab。然后,我们将查看获取sudo权限后对它的影响,以及我们如何更多地将其用于提权。

如下图所示,我创建了一个拥有所有sudo权限的本地用户(test)。

要添加sudo权限请打开/sudoers文件,并输入以下行作为用户权限规范。

test All=(root) NOPASSWD: /bin/ed

利用 Sudo 权限

我们需要受害者机器的会话,这将有助于我们让本地用户访问目标系统,并通过它提升为root用户权限。

首先,我们使用ssh连接到目标机器。键入以下命令以通过本地用户登录获取访问权限。

ssh test@192.168.1.31

然后我们查找具有sudo权限的“test”用户,发现用户“test”可以在没有密码的情况下以“root”权限执行ed命令。

sudo -l

在知道了test用户拥有sudo权限的事实后,我们可以使用ed命令访问空缓冲区来调用bash /sh shell。如下所示,我们的用户权限已被提升为了root。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • Linux利用UDF库实现Mysql提权

    环境: os:linux(bt5)   database:mysql   简述: 通过自定义库函数来实现执行任意的程序,这里只在linux下测试通过,具体到windows,所用的dll自然不同.   要求:  在mysql库下必须有func表,并且在‑‑skip‑grant‑tables开启的情况下,UDF会被禁止:   过程: 得到插件库路径 找对应操作系统的udf库文件 利用udf库文件加载函数并执行命令 1,得到插件库路径 mysql> show variables like "%p

  • linux提权用的一个技巧

    作者:xi4oyu 一个test: [xiaoyu@localdomain ~]$ echo $BASH_ENV [xiaoyu@localdomain ~]$ export BASH_ENV="/tmp/.bashrc" [xiaoyu@localdomain ~]$ echo $BASH_ENV /tmp/.bashrc [xiaoyu@localdomain ~]$ cat /tmp/.bashrc #!/bin/bash echo "Hello" [xiao

  • Linux下非交互式提权详解

    前言 之前拿到某站的Webshell之后,在提权的时候发现网站不能反弹shell.而且,在渗透的时候经常遇到那种不能反弹shell的,你的提权工具拿上去之后因为没有交互式的环境,也不知道提权是否成功.因此,写了一个简单的工具.需要的朋友们可以参考学习. 方法如下 proce_open() // path是提权工具的绝对路径,例如:/usr/local/htdocs/2.6.18 // cmd是你需要执行的命令,例如:whoami if(isset($_GET['path']) && iss

  • 如何使用Linux文本操作命令ed进行提权nov5详解

    前言 本文我将为大家介绍一个面向行的文本编辑器命令"ed",它主要用于生成,显示,更改和操作文本文件.所有ed命令都在行或行范围内执行操作:例如,"d"命令删除行:"m"命令移动行,"t"命令复制行等等.现在,我们要做的就是利用这些"ed"命令,来提升我们在Linux系统上的用户权限. ed 概要 Linux中的ed命令用于启动"ed文本编辑器",这是一个基于行的文本编辑器.它是Linu

  • Linux 远程管理及sshd服务验证知识点详解

    一.SSH远程管理 SSH定义 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录.远程复制等功能. SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令.因此SSH协议具有很好的安全性. SSH优点 数据传输是加密的,可以防止信息泄漏 数据传输是压缩的,可以提高传输速度 SSH配置文件 sshd 服务的默认配置文件是/etc/ssh/sshd_config ssh_config和sshd_config都是ssh服务器的配置文件 二者区

  • Linux 下FTP的安装与配置教程详解

    0.安装ftp的前置条件是关掉SElinux # vi /etc/selinux/config 修改 SELINUX=" disabled " ,重启服务器.若相同,则跳过此步骤. 1. 可先查看是否安装过vsftp # rpm -qa | grep vsftpd 则代表已经安装.可直接跳过步骤2 2 .安装 vsftp # yum install vsftp* Is this ok [y/N]: y 代表安装完成. 3. 对vsftp 进行配置 # /etc/vsftpd/vsftp

  • Linux下sshd服务及服务管理命令详解

    sshd SSH为Secure Shell的缩写,是应用层的安全协议.SSH是目前较可靠,专为远程登陆会话和其他网络服务提供安全性的协议.利用SSH协议可以有效防止远程管理过程中的信息泄露问题. openssh-server 功能:让远程主机可以通过网络访问sshd服务,开始一个安全shell 客户端连接方式 ssh 远程主机用户@远程主机ip 先rm -rf /root/.ssh/清掉之前的配置 ssh 远程主机用户@远程主机ip -X 调用远程主机图形工具 ssh 远程主机用户@远程主机ip

  • Linux系统(CentOS7安装)安装JDK8的教程详解

    JDK 的安装 系统安装就不做过多介绍,大家从网上寻找安装步骤进行安装,不过我推荐大家进行安装时选择桌面图形化格式进行安装,方便做一部分操作,同时在安装过程中选择英文模式,同时我自己在安装的过程中发现使用Oracle VM VirtualBox这个虚拟机工具比使用VM工具开发更加方便些 使用工具 系统:CentOS7_64位(推荐使用最小配置命令窗口) Jdk:jdk1.8.0_191 虚拟机:Oracle VM VirtualBox 文档编写工具:EditPlus 文件传输工具:FileZil

  • Linux中的bz2压缩格式的实例详解

    Linux中的bz2压缩格式的实例详解 一 语法 bzip2 源文件 压缩为bz2格式,不保存源文件 bzip2 -k 源文件 压缩之后保留原文件 注意:bzip2命令不能压缩目录 bzip2 -d 压缩文件 解压缩,-k保留压缩文件 bunzip2 压缩文件 解压缩,-k保留压缩文件  二 实战 [root@localhost test]# ls abc cdf dirtst [root@localhost test]# bzip2 abc [root@localhost test]# ls

  • Linux 在Shell脚本中使用函数实例详解

    Linux 在Shell脚本中使用函数实例详解 Shell的函数 Shell程序也支持函数.函数能完成一特定的功能,可以重复调用这个函数. 函数格式如下: 函数名() { 函数体 } 函数调用方式: 函数名 参数列表 实例:编写一函数add求两个数的和,这两个数用位置参数传入,最后输出结果. root@ubuntu:/home/study# vi test3 #!/bin/bash add(){ a=$1; b=$2; z=`expr $a + $b`; echo "The sum is $z&

  • Linux上安装Mysql及简单的使用详解

    1. 安装mysql sudo apt-get update sudo apt-get install mysql-server sudo apt-get install python-mysqldb(如果python中要使用,请安装) 2.登录root用户: mysql -u root -p 3.查看所有数据库: show databases; 4.选择一个数据库操作: use database_name; 5.查看当前数据库下所有的表: show tables; 6.创建一个数据库: cre

  • Linux/Unix环境下的Make和Makefile详解

    Linux/Unix环境下的Make和Makefile详解 无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install.利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系.而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简

  • LINUX启动/重启/停上MYSQL的命令(详解)

    如何启动/停止/重启MySQL 一.启动方式 1.使用 service 启动:service mysqld start 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld start 3.使用 safe_mysqld 启动:safe_mysqld& 二.停止 1.使用 service 启动:service mysqld stop 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld stop 3.mysqladmin shutdown 三.重启 1.使用

随机推荐