Hackergame 2020 Writeup
科大新生赛……不得不说自己就是菜啊。除了第一天是周六来得早,上波分最高到了四五十名,后面知识水平完全就跟不上,直接落到四五百名=。=(time:11.3 22:29)
超简单的世界模拟器
真是“超简单”的呢……当然,这题我估计大家的做法也都差不多。生命游戏很有意思,但这题本身感觉很无聊,单纯为了随手记录一下没见过的东西
总之,给出一个15*15的矩阵,画生命游戏图,然后上网找一下就有了,具体啥也都忘了,就疯狂找图,然后胡乱测试,就做出来了23333。
233同学的Docker
这题是我写WP的动力,研究了老半天总算搞定了,还从零攒了点docker的基础。
基础我也就不说了吧……直接开始,反正记录的是一些找的比较辛苦的资料。
拉下仓库后,docker history 可以看见flag.txt的删除记录
Docker镜像分层,最上面一层可读,其它层全部都是只读,但是我查了半天不知道怎么读……
而且似乎是那个ENTRYPOINT [“/bin/sh” “-c” “python /code/app.py”]的原因,尝试运行这个镜像时会自动输出一句nothing here然后终止容器的运行,现在想想感觉是一种另类的提示……因为进去了也找不到之前的镜像层。
1 | docker run -it --entrypoint sh [image_name] |
我还不懂entrypoint、ADD、CMD、COPY这些dockerfile的内容,但是根据这句命令可以进入这个镜像并启动sh shell,记录一下~
查找之前的镜像内容我是根据两个来的,第一是用dive分析镜像层内容,这个很容易找到,但是就是读不出内容……不过挺关键的是,这里面可以看见层细节(可能其它也有办法看见),对后面找文件帮助还是很大的。
第二呢,则是docker save命令,直接可以把镜像打包生成压缩文件。但是这个压缩文件的名字全是哈希值,就很烦躁
后来发现哈希值刚好就是layer ID,于是dive派上用场了,根据ID找到文件夹,进去即能找到flag
从零开始的火星文生活
反正目前还是不理解……胡乱做出来的哈哈哈
1 | with open("gibberish_message.txt",'rb') as f: |
先是读入bytes,用decode转换成strings,但是不知道为什么不能用gbk解码=。=,于是就默认decode,解码出来就是输入的字符串。再用encode编码成gkb bytes,再用gbk解码,为什么是不一样的字符串我也不知道23333,但是出来的那堆内容,扔进乱码恢复就出来flag了。
- 本文作者: crlwebby
- 本文链接: https://crlwebby.github.io/security/CTF/Hackergame_2020_Writeup/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!