重复base64编码结果与预期不符的Hack The Box bash脚本问题
错误原因分析
你的第一版代码存在两个核心错误:
- 变量未用双引号包裹导致内容被篡改
代码中var=$(echo $var | base64)里的$var没有加双引号,Bash进行变量扩展时,会自动把变量内容中的所有空白字符(包括base64编码后每行默认添加的换行符)替换为单个空格,导致每次传给base64的输入都不是上一次编码的正确结果,多次迭代后最终的编码内容完全不符合预期。 - 长度统计规则不匹配验证要求
你统计长度时用了echo -n "$var" | wc -c,-n参数会取消echo默认输出的末尾换行符,而验证系统的统计规则是包含该换行符的,就算编码结果正确,统计出来的长度也会比正确值少1。
另外补充两个不影响结果的代码问题:
- 循环逻辑冗余:你循环了40次,只在第35次输出结果,后续5次循环是无意义的冗余代码。
- 条件判断写法不规范:
[ $COUNTER == 35 ]中的==是Bash扩展语法,POSIX标准的相等判断应该用单个=,虽然多数环境下不会报错,但存在兼容性风险。
内容的提问来源于stack exchange,提问作者Filipe Azevedo
相关产品推荐
相关产品推荐

