|
|
|
联系客服020-83701501

不曾想过的的命令执行技巧

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
不曾想过的的命令实验手段

你或是在丑陋的Unix世界顶用shell实验你爱情的任何命令,但是有时一个命令或是被用来实验另一个命令,这便是你不曾想过的命令实验手段

举例来说,下面是用tar命令简介实验轻易命令的办法:

2015070614014367569

但是再略微研究一下,看上来有一大堆体式花式能用风靡的unix命令做到这一点,规则很简单:

不或是从shell中运转命令
垄断另一个命令的“副感导”
最终到达命令被实验

我用了一个小脚本,叫做runme.sh:

Default
12345 mitsurugi@mitsu:~/tmp$ cat runme.sh #! /bin/bash echo "The name's 0xMitsurugi!" echo "Remember it!" mitsurugi@mitsu:~/tmp$

如果脚本运转时阐扬阐发这段话了,你就赢了,来继续测试吧:

1/ tcpdump

Default
123456789 $ tcpdump -n -i lo -G1 -w /dev/null -z ./runme.sh tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes The name's 0xMitsurugi! Remember it! The name's 0xMitsurugi! Remember it! ^C6 packets captured 12 packets received by filter 0 packets dropped by kernel$

因为每一个数据包(-G),咱们用指定的措施模范(-z)处理输入的文件(-w)
(附译者测试截图:)

2015070614032689840

2/ tar

Default
12345 $ tar c a.tar -I ./runme.sh a tar: a.tar: Cannot stat: No such file or directory The name's 0xMitsurugi! Remember it! tar: Exiting with failure status due to previous errors$

因为你或是在命令行指定轻易收缩措施模范给tar(-I)而且咱们并不在乎它报错与否
(附译者测试截图:)

2015070614040710771

3/ zip

Default
12345 $ zip z.zip a -T -TT ./runme.sh The name's 0xMitsurugi! Remember it! test of z.zip OK $

zip有被动测试zip文件的朋侪听命(-T),而且用另一个措施模范测试解收缩(-TT)
译者注:这里的a必须是存在的文件,否则报错会不运转
(附译者测试截图:)

2015070614043567108

4/ ftp (and many others…)
良多措施模范或是将你的命令返回给shell实验,这里我演示ftp是因为它在老版本Unix上很通用

Default
12345 $ ftp ftp> ! ./runme.sh The name's 0xMitsurugi! Remember it! ftp>

另有vi、gdb之类等等,你甚至或是用~^Z来介入ssh的session
(附译者测试截图:)

2015070614052718807

5/ man
这个便是玩一玩而已,但是你必须给出措施模范的残破路径。用-P选项指定默认的分页措施模范。

Default
1234 $ man -P /tmp/runme.sh man The name's 0xMitsurugi! Remember it! $

(附译者测试截图:)

2015070614064613680

6/ git (and man, and…)
如果你或是应用环境变量,那末就有良多好玩的事故了:

Default
12345 $ export PAGER=./runme.sh$ git -p helpThe name's 0xMitsurugi!Remember it!$

(附译者测试截图:)

2015070614070621279

没错,“man”命令也或是多么垄断,而且肯定良多其余的措施模范只需界说了PAGER环境变量也一定或是。

但是别急,git能做的另有好多,如果你或是写入任何$PATH中的目录中,你或是做到:
(译者注:在git 1.9.1 中文版上未测试糜烂,不明觉厉,不明源作者所用版本)

Default
123456 $ export PATH=/tmp:$PATH $ ln -sf /tmp/runme.sh /tmp/git-help $ git --exec-path=/tmp help The name's 0xmitsurugi remember it! $

尽管我不晓得这该怎么玩,但我确信他人会找到用场 :) 因为不明原因,要想运转必需要有–exec-path在$PATH中才行

7/ 最想不到的:bash $HOME 变量
恩,是的,有办法弄二级的shell:
(译者注:原文命令如下,但是原作者忘了一条: ln -sf /root/runme.sh /root/.bashrc)

Default
123456789 $ pwd /tmp $ ls -la .bashrc lrwxrwxrwx 1 mitsurugi mitsurugi    8 juin  19 14:03 .bashrc -> runme.sh $ export HOME=. $ bash The name's 0xMitsurugi! Remember it! $

(附译者测试截图:)

2015070614075157963

在我尝试曩昔我本认为这是100%会成功的事故。

8/ awk (and many others)
当你有一个“system”命令时,部门都变的太简单了:

Default
1234 $ awk 'BEGIN {system("./runme.sh")}' The name's 0xMitsurugi! Remember it! $

(附译者测试截图:)

2015070614080718270

【via 翻译@Wooyun-lxj616】

原著述者:http://0x90909090.blogspot.hk/2015/07/no-one-expect-command-execution.html

数安新闻+更多

证书相关+更多