命令执行漏洞(三)
15位、7位、5位、4位可控字符下的任意命令执行
15位可控字符
利用原理:
直接下载一个空文件,然后直接将shell分段写入文件中,最后修改文件名来getshell
wget是Linux中的一个下载文件的工具
echo可以直接将字符输出到文件中,但需要使用‘>’符号
且第一次输出到文件中时使用‘>’符号,再输入进文件就需要使用‘>>’来进行追加
例如:将一句话写入文件
<?php eval($_GET[1]);
注意:当遇到符号时,记得使用反斜杠 \ 进行转译
7位可控字符
这里我们使用的命令需要更短
w [-fhlsuV][用户名称] Linux w命令用于显示目前登入系统的用户信息。 执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。 单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
> 符号—>生成文件名 > a : 以a为文件名写入a ls > a:以a为文件名写入a和ls的内容
sh:sh命令就是shell
sh a :执行a文件
当我们想输入长命令时,可以使用 \ 来分割
当我们输入命令出现许多字符时,可以使用base64编码的形式来避免字符的问题
需要注意的一点,反斜杠也需要反斜杠来注释,而且输入命令时需要倒序输出
ls -t :将文件按创建的时间排序,这样就可以控制文件的顺序
5位可控字符
如果是5位可控字符,那么前面输入内容也是没有问题的
主要的问题就是
ls -t >a
这里也是通过写入文件的方式来解决该问题
最后
sh a 即可
4位可控字符
基本上就是很变态的题目了
这边给个博客来了解了解