|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
系统做了些什么,这需要时间去掌握,(背命令不是一件好的学习方法,相信我你一定会在你背完之前全部忘光),尽量掌握常用命令;
将wget或curl输入的内容管道给bash大概sh是一件十分愚昧的事,比方像上面如许:
1
wget-O-http://example.com/install.sh|sudosh
命令注释:wget的-O参数是指明输入文件名,一样平常前面接详细的文件名,这里接“-”暗示“writtentostdout”即写进到尺度输入而不保留在当地磁盘,然后将尺度输入里的内容作为输出传送给sudosh命令。
到处可见如许的例子。偶然候它们也告知你疏忽证书(看看Salt),这些操纵都是大名鼎鼎的。
我以为其大名鼎鼎(而不是在你呆板上运转恣意命令,基于用户代办署理来棍骗你)的次要缘故原由是其失利形式(failuremode)。
假如毗连半途封闭了会产生甚么?让我们来一同见证吧!
1
(echo-n"echo"Hello"";cat)|nc-l-p5555
命令注释:
(1)echo的-n参数指明不在输入开头增加“rn”举动,即不显式增加换行符(默许是增加的);
(2)cat命令只要碰到换行符才会停止,不然一向处于挂起形态,直到碰到换行符停止;
(3)nc命令是收集检测工具,详细用法请Google,这里-l指处于监听形式,-p5555暗示在5555号端口处监听。
这将给毗连端发送一条命令,可是并没有发送换行符,因而它会一向处于挂起形态。让我们毗连此客户端:
1
nclocalhost5555|sh
一入手下手,甚么也不会产生。很好!假如我们用kill-9命令强迫杀失落正在监听的netcat会产生甚么呢?sh命令会实行其缓冲区里的部分命令吗?
1
2
nclocalhost5555|sh
Hello
历程申明:
(1)怎样杀失落正在监听的netcat?
起首用ps-auf|grepnc命令找到“(echo-n"echo"Hello"";cat)|nc-l-p5555”该监服从令的历程pid,然后kill-9该pid便可杀失落。
(2)“Hello”是杀失落nc监听历程后毗连客户端方的输入了局,怎样输入的?
毗连半途封闭后,“(echo-n"echo"Hello"";cat)|nc-l-p5555”命令里的管道输出“(echo-n"echo"Hello"")”会被存进一时缓冲区内,此时毗连方“nclocalhost5555|sh”中的“nclocalhost5555”会吸收该缓冲区的内容,也就是此时毗连方的命令会酿成:
1
(echo-n"echo"Hello"")|sh
固然输入Hello了。
从下面能够看出,真的实行了,如果换作wget或curl命令又会怎样呢?
1
2
3
4
5
6
7
8
9
10
11
12
13
wget-O-http://localhost:5555|sh
--2013-10-3116:22:38--http://localhost:5555/
Resolvinglocalhost(localhost)...127.0.0.1
Connectingtolocalhost(localhost)|127.0.0.1|:5555...connected.
HTTPrequestsent,awaitingresponse...200Noheaders,assumingHTTP/0.9
Length:unspecified
Savingto:`STDOUT
[<=>]12--.-K/sin8.6s
2013-10-3116:22:47(1.40B/s)-writtentostdout[12]
Hello
系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho |
|