0x00 前言

首先我要为我们队每个队员点个大大的赞(内心有愧,因为实习,没有好好参加比赛),大爱你们。

(本文暂不涉及深度学习的东西,稍后整理之后单独发)

在浏览题目的时候,发现一道很有意思的题目 “Dog or Frog”。题目.png
打开看看提示,“This really is a ML problem”,打开题目看看喽。Hints.png
题目中说要我们把这只可爱的马里努阿变成树蛙 (╯ ̄Д ̄)╯╘═╛ ,那么好玩的狗狗变成树蛙,表示强烈谴责。但是看见这分数……

算了,真香。

0x01 这才是正文

这里才不是正文,老师没说过拿到题先审一下题么?

打开网站,看到那些下载的数据图片,的确是一个中规中矩的深度学习的东西。
2018shell2.picoctf.com.png

我们把环境下载下来,配置好(PS: 还好不是 Python 2 的东西,不然要疯)

打开提示信息,里面有两句关键的信息

  • Classify as a Tree Frog, at 95% confidence
  • Be similar to the original image (max 2 bit difference using p hash)

第一条是要求我们把它变成一只树蛙,因为在imagenet中有1000分类,青蛙的分类有三种,所以我们要先找到树蛙的类别编号,分类编号.png
第31分类就是我们要的树蛙。接下来看第二条,图片的hash差异度不能超过2,什么鬼!?

这里我简单的说一下,通常说hash的时候,hash是一组数据的压缩映射值,具有数据的完整性和抗数据篡改的能力。但是在图片中,有一种比较特殊的hash算法,这种hash算法是包含图片特征的,也就是说,图片的内容结构作为了一种hash值。后面我单独拿出来一篇文章将这个。

这个也就代表了我们不能随便用一张树蛙的图片来得到flag了,只能对给我们的这张马里努阿动手了 ╮(╯▽╰)╭

0x02 这里才是真的正文

涉及的深度学习的内容单独发出来,这里我贴一下代码。

贴代码是不可能的,这辈子都是不可能的。才不会告诉你代码在这里

运行这个,之后得到一张新的图片。
trixi_hacked_image.png
唔,看起来好像并没有什么变化,但是预测结果中预测结果.png
OK,上传图片,拿到flag。flag.png

0x03 尾记

唔,好好学机器学习,之后老老实实的打CTF去,哇卡卡卡。

你以为这就结束了么,不不不。

(未完待续……)