实验吧:SOS

解题链接:http://www.shiyanbar.com/ctf/1850

不得不说Linux还是安全人员的必备品。本题有两种方法,一种是binwalk提取,然后脚本跑。还有一种是挂载磁盘,然后脚本跑。

其实这两种方法都是提取出磁盘文件的内容,只是binwalk的自动化程度更高。但最原始的方法也不能忘记啊

首先binwalk sos看看这个文件是个啥?

从第一行可知,这个文件是一个linux EXT的文件系统,要是文件系统,我们就可以挂载到本机。具体操作如下:

sudo mkdir /home/xxx/sos
sudo mount -w sos /home/xxx/sos
cd /home/xxx/sos
ls

这时我们可以看到文件夹中有242个压缩包形式的东西,但是解压时会出现错误,问题是因为压缩包的名称和压缩包内文件名重复,导致无法解压成功。将b这些文件拷贝到自己的文件目录下,批量重命名为1.gz,2.gz ...的形式,然后全部解压到当前目录

之所以拷贝到自己文件目录的原因是,挂载的文件系统有大小限制,超过文件系统最大值,就无法继续向其中写入文件,所以需要拷贝到自己的本地文件系统中。

上面的所有步骤的操作,其实就完成了binwalk -e sos的操作,但是对于没有安装binwalk程序的同学来说,这种方式也可以进行文件的获取。

可以看到解压出来的每一个文件都只有一字节,随意打开其中的一个文件,可以看到可见字符,说明这个可能就是让我们将所有文件中的字符拼接起来。

那接下来就十分简单了,直接读取并拼接就好

代码如下:

str = ''
for i in range(1,243):    
    f = open('%d'%i,'rb')
    line = f.read()
    str +=line
    f.close()
print str

最后运行得到的结果如下

得到flag后别忘记把文件系统卸载哟

df -h

umount /home/eumeniders/sos

大功告成

点赞

发表评论

[2;3Rer>