美文网首页
2018 Mossad Challenge

2018 Mossad Challenge

作者: 四火流年 | 来源:发表于2018-06-14 14:27 被阅读22次

    2018 Mossad挑战,目的是招聘。

    以下来自百度百科 - Mossad

    摩萨德(Mossad),全称为以色列情报和特殊使命局(The Institute for Intelligence and Special Operations),由以色列军方于1948年建立,以大胆、激进、诡秘称著于世。与美国中央情报局苏联国家安全委员会英国军情六处,并称为“世界四大情报组织”。自从成立以来,摩萨德进行了多次让世界震动的成功行动。它的成功,成为世界情报史上的传奇。

    第一个页面

    https://www.r-u-ready.xyz
    初始页面就是下面这张图,可以判断处高亮的字符实则是 brainfuck 编码。

    image.png

    左边的代码为:

    >+-++<>-+--><[+-[
    ]+-]<+--+>[+--+]<
    [+>+<-]><----[-->
    +++<]>--.--------
    -.+++.[++>---<]>+
    +.-[----->++<]>-.
    +[->+++<]>+.+++++
    ++++++.----------
    --.----[->+++<]>+
    .-[-->+++++<]>---
    .------.[--->+<]>
    ++.[-]>+-++<>-+--
    ><[+-[]+-]<+--+>[
    +--+]<[+>+<-]><>+
    -++<>-+--><[+-[]+
    -]<+--+>[+--+]<[]
    

    右边的代码为:

    +++++++++++[>++++
    +++++++<-]>+[<+>-
    ]-[>+<-------]>--
    -[<+>-][<+>-]>++>
    +[>++[-<++++++>]<
    <]>[<+>-]>+>++[++
    >++[-<+++++>]<<]>
    [<+>-]>+>+[>++++[
    -<++++>]<<]>[<+>-
    ]++++++++[>++++++
    +++++<-]>+[<+>-]+
    ++>>+>+[->+++[-<+
    ++++>]<<]>[<+>-]+
    +++++++[>++++++++
    <-]>+[<+>-]+++>++
    ++++>+>+-++<>-+--
    

    解题路径

    1. 借助一个brainfuck的在线解释器(http://esoteric.sange.fi/brainfuck/impl/interp/i.html),可以很容易的得到左边的输出是 xor-with-key
    2. 同样使用这个在线解释器,去解析右边的代码,却得到的是空。
    3. 深入了解brainfuck这门语言,发现它用来输出的关键字是 .,但是右边的代码却没有 .,即没有输出。所以在代码的最底下手动加上输出
    .<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.
    

    (向右移动再输出也试过,空的)
    得到结果:���AZ�YUS\Fz

    1. 到目前为止,解题陷入困境。
      我们知道了,需要拿右边的输出和一个 key 进行异或 xor,但是这个key是什么呢?
      从页面上看、从页面的源代码看,都没有找到一个8字符长度的字符串。唯一比较像key的是,上面那幅图里的这句话Israel-is-70,12个字符。

    2. 继续
      实际上,右边的输出并不是8字符长度的字符串,而也是12个字符长度的字符串,只是没有显示出来!!!
      从下图看,确实就是8个字符,复制粘贴到微信、Sublime等编辑器里,也都是显示8个字符。


      image.png

    但是,简书就很厉害了!下图是粘贴到简书的编辑器里的效果:


    image.png

    从上图可以看出,右边代码的输出确实就是12个字符长度的字符串!

    1. 知道了上述的事实,依然不知道空的位置是什么,那就继续研究brainfuck的语法,然后人肉解释执行出来。
      (简书的强大是刚刚才知道的,当时的想法是,深入了解brainfuck,人肉解释执行。异曲同工)
      这里有一个brainfuck的可视化工具,有助于理解brainfuck的执行过程。
      http://top.jobbole.com/36665/
      (其实,也可以通过在代码里加上输出的方式,只是这样依然无法知道缺失的那4个字符的具体数值)
    2. 通过手动解释执行的结果为:
      [0x7a, 0x46, 0x5c, 0x53, 0x55, 0x59, 0x03, 0x5a, 0x41, 0x03, 0x06, 0x01]
      注意,要把上述的���AZ�YUS\Fz顺序颠倒一下,即zF\SUYZA
      手动解释执行的过程记录在这里:
      2018-06-14 Brainfuck程序手动解释执行
    3. 再和 Israel-is-70,进行异或,得到结果:
    >>> a = [122, 70, 92, 83, 85, 89, 3, 90, 65, 3, 6, 1]
    >>> b = list("Israel-is-70")
    >>> [chr(a[i] ^ ord(b[i])) for i in range(12)]
    ['3', '5', '.', '2', '0', '5', '.', '3', '2', '.', '1', '1']
    

    一个IP地址:35.205.32.11

    第二个页面

    打不开。。。
    这个IP地址估计要翻墙、甚至要模拟地理位置才能打开吧?

    总结

    浅尝辄止总是会付出代价,只有深入去了解,踏踏实实一步一个脚印,才是真正的捷径。

    相关文章

      网友评论

          本文标题:2018 Mossad Challenge

          本文链接:https://www.haomeiwen.com/subject/sageeftx.html