这是两道MISC题,要想解题需要一些脚本基础,第一题如下:
这是个tar的压缩文件,实际上当你手动解压后会发现这是一个被压缩了很多次的压缩文件,主要用到的格式有:zip,bz2,tar,gz,xz,并且没有密码;既然是循环压缩,就可以用shell脚本(其实是我没找到Python的脚本或者说我不会写。。。)
#!/bin/bash target="flag.txt" while(true) do type=$(file $target) if [[ "$type" == *"POSIX tar archive"* ]]; then mv $target flag.tar tar -xvf flag.tar rm flag.tar fi if [[ "$type" == *"Zip"* ]]; then mv $target flag.zip unzip flag.zip rm flag.zip fi if [[ "$type" == *"bzip2"* ]]; then mv $target flag.bz2 bzip2 -dk flag.bz2 rm flag.bz2 mv flag.txt.out flag.txt mv flag flag.txt fi if [[ "$type" == *"gzip compressed data"* ]]; then mv $target flag.gz gunzip -d flag.gz rm flag.gz mv flag* flag.txt fi if [[ "$type" == *"XZ"* ]]; then mv $target flag.xz tar -xf flag.xz rm flag.xz fi if [[ "$type" == *"ASCII"* ]]; then echo $type break fi done
第二题的不同之处在于只用了zip但是需要解压密码,密码就是文件名
这个同样也是被迭代压缩了很多次,解法同样也是shell脚本(因为没找到Python解压带密码的zip的方法。。。)
!#/bin/bash for i in {1..100} do f=`ls -u|head -1`; unzip -P $f $f; done
小结:
本来傻傻的以为靠毅力终有一天能解压出flag的,于是手工解压了四十多分钟。。。果然还是shell脚本好用(真香!!!)