3. 双竖线||和&&
双竖线||和一个&&,它其实有点类似于互和和的作用。双竖线的话其实就是类似于或,上一个命令为false的时候,它会执行下一条语句。我要像前面是一个PWD的时候,它就会只会去执行PWD而不会去执行ls所以是这样的一个效果。所以说对应的它就是&&,它其实就是一个和逻辑,就只有上一条为true的时候,它会执行下一条语句。


如果它是管道符|的话传递过去,这个要注意它做可能编码之后能够传递过去的状态。其实它这个地方,会作为去分割变量的一个问题。就是1=2,然后接下来就可能是第二个变量名,很多时候其实命令执行的时候,就是不让你去使用某些符号,因为过滤,你敲的都是字母,那么字母的话肯定没问题,但是很多时候它就比如说去过滤空格这种之类的,经常讲到一个东西,如何去绕过一个空格的过滤,空格过滤的时候就用到这些。这边提到相当于一个像<,我们知道,如果说你是向右,就是把它输出到什么东西里面,那么向左的时候,它其实可以起到一个空格的作用。可以看到这里还要提到那些什么$IFS等等这些东西,这里的话你就可以把它理解成一个内部的预分割符,它这里的话就相当于理解成了一个空格,然后$IFS ${IFS} $IFS$9暂时也不用太过于关注,后面会提这个问题。
它这地方把这一串给合并掉了那么这里就要加引号,要是不加引号没有IFS其实就是不行的。那么其实这里也提到一个问题,就是命令在识别的时候,它如何知道$IFS到哪里结尾到底是IFS 还是exec,所以就推出了一个像刚才那样子。IFS这个地方,它就用它的大括号去把它给括起来,括起来的作用是和直接执行命令是一致的,这样的话它能够更加明确你命令就这个命令到底是多长,而不会说它不认识。
思路:相当于把它第几个参数给拿过来意思就是,我们写一个shell的时候,比如说a.sh后面是跟好几个参数,那么它就是把你第几个参数渠道传给shell,就是这个意思,$9这些都是空的,所以它是没有值的,是不会有影响。这个%09的话,它其实是用一个在URL中做传递的,刚才我们看到PWD就是能够实现的,比如说我echo 222,这个地方是因为有空格才能够去实现的如果没有空格,它是没有用的,但是我要是跟上一个%09的时候,它又是能够实现的,所以说%09在这里的作用其实又是一个空格的一个作用。
接下来再看一下一些命令执行的一些绕过。这些绕过的话其实就是一些思路了。因为我们知道命令的话,其实就是一些字母组成的东西,对不对?那么像a=1;b=s;$a$b拼接起来是不是就是ls它的效果就可以看一下。
思路:它就实现了一个ls,这种时候你就能去实现任何的命令拼接也不会出现说非常敏感的那种关键词,比如说它检测的是ls,这里是没有ls,那你就可以实现一个绕过。那么像下面这种可能用的更多了,就是用base64的编码去做一个绕过,因为base64是命令在Linux中是一般来说都是存在的,整个可能参数上会有点区别,大写的就是像第二个参数,base64-D,那么我们对它打印出来的结果做base64编码就是base64-D大写的D那么这样的话其实解出来之后,它其实就是打一个whoami并没有去执行命令,对不对?所以说我还对它多执行一步,那么这里用的就是一个反引号,反引号以后对它这个是这条语句执行的最终结果去做一个命令执行,那么它就会去执行whoami命令,去输出一个我是谁的效果。那么所以说编码方式在实际利用中其实是比较多的,因为用通过base64的话,基本上会过滤掉任何关键字。
4.语法substr string pos len


它就有点类似于叫什么SQL注入中的节长度的一个过程。所以的话它相当于比如说${PATH:0:1},就01肯定就取的是$开始这个变量的第一个字符串。
expr去配合的话思路上也是一样的,就是去从字符串中去读到某个位置的字符串,比如说像命令去执行的时候。反斜杠的作用是它其实就是去分隔开。因为之前IFS如果说没有杠的话,它直接黏粘在一起,它可能无法分辨自己命令到底有多长。
思路:之前提到了IFS其实是因为空格的作用,那么这条命令的实质就expr substr然后加一个命令,然后取从第一位开始,就是相当于你能够获取到一串字符串,你从这个字符串中去选取命令,从这个字符串中去选取那个位置某个字母,那么下面这个也是一样的,只不过最终语句实现上可能会有点区别,PWD和pwd有什么区别?以及${}里面有什么区别?其实就是${PWD}和PWD是一样的,是没有任何区别的,只不过刚才提到这种的形式,它会更加明确你的命令语句是哪一些。pwd是纯粹的命令去执行,PWD代表是环境变量,就是它肯定能读取到。比如$PWD它是代表是环境变量,然后像下面也是一样,就是这个地方。所以说的话,如果你知道这些环境变量的名称,那么你可以通过这些方法去读任何你想要的内容。比如像这个地方没有这杠的话,就是IFS1那么它可能就不知道自己是个IFS这是这样的一个效果。所以的话就是命令执行的话,这些空格的一些过滤,我就先讲这么多了,那么在下一次过程中可能会找到一些例题来讲,或者说去讲一些无字母效的一些问题,这次就先这样了。