[2021铁人赛 Day18] General Skills 15

  • 引言
    我们终於快完成 General Skills 了,
    最後的时间我们会来解解其他六大类的题目。

    之前说的 picoCTF 2019 的游戏的话,
    我打算跟大家介绍游玩方式为主,
    基本上题目大部分都收录在 picoGym 这个解题页面,
    讲解还是会在 picoGym 进行。

  • General Skills / plumbing
    https://ithelp.ithome.com.tw/upload/images/20211003/20111429h6PCFXCF30.png
    题目先要求你连上服务器:

    $ nc jupiter.challenges.picoctf.org 7480
    

    连上後程序会输出诸如以下的资讯:

    This is defintely not a flag
    Not a flag either
    Again, I really don't think this is a flag
    Again, I really don't think this is a flag
    Not a flag either
    Not a flag either
    Not a flag either
    Not a flag either
    I don't think this is a flag either
    This is defintely not a flag
    

    会输出很多很多,最後停下。
    可以观察出题目应该是要我们从这堆讯息中找 flag !

    刚刚的程序你可以按下 Enter ,程序就会结束。

    相信你看了那麽多题了,脑中应该已经浮现那个字了吧~
    就是 grep !这题一样是 grep 题,
    你可以利用 grep 先自己写写看要怎麽找 flag,
    我马上公布答案:

    公
    
    布
    
    答
    
    案
    
    就
    
    在
    
    下
    
    面
    

    你可能有疑问, grep 是从档案中找资讯,
    但是这是 nc 耶,是程序输出的资讯,
    也可以找吗?

    当然可以,我们有两种方法:

    1. 管线
      第一种就是管线 (pipe) ,这个我们也使用过,
      grep 很常搭配管线使用,像 nc 这种情形就非常适合。

      $ nc jupiter.challenges.picoctf.org 7480 | grep "pico"
      

      你可以搜寻 pico 或是 picoC 、 picoCT 、 picoCTF 之类的都可以,
      反正找的到都好,程序就会:

      picoCTF{digital_plumb3r_06e9d954}
      

      (你的 flag 後面那串编号会跟我不同,再次提醒)
      然後按下 Enter 结束。

    2. 输出至档案
      第二种方式就很直观,既然 grep 拿来找档案内容,
      那我就把输出导到档案就好啊!

      所以你也可以将程序的输出导到档案:

      $ nc jupiter.challenges.picoctf.org 7480 > flag_file
      

      然後按 Enter 结束。

      维基百科: 重新导向(电脑)
      >< 都是重新导向的符号,
      > 负责把输出导向到其他地方,
      < 负责将其他地方的资料流导入到程序的输入。

      你可以看到其实管线也是重新导向的一种,
      的确也相当合理, output -> 下个 input 。

      它不会有输出显示在萤幕,
      这边以可以想像成,萤幕是一个「档案」,
      一般情形会把输出导到萤幕这个「档案」,
      你就会看到 shell 上显示结果。

      现在我们将输出重导到你指定的档案,
      自然萤幕就不会显示了,资讯已经导走了。

      你可以看看这个档案内容:

      $ cat flag_file
      

      确认资讯的确在里面。

      然後我们就可以用 grep 找出 flag :

      $ grep "pico" flag_file
      
      picoCTF{digital_plumb3r_06e9d954}
      

<<:  Day 30 | 很像 Vue 的 AlpineJS(五): 与 Livewire 共享资料

>>:  Day 29 - 这一年多来的开发问题解析心得分享

Day 29 : 撰写LineBot,利用短短三天认识自动化机器人(下)

今天来继续接着昨天的LineBot。我们昨天讲到,我们可以使用ngrok来让程序连上公开网路,也就是...

视觉化平台规划

昨天测试完API的第一步之後, 我突然想到我还没说视觉化平台的整个规划, 今天就来谈谈这整个专案的规...

[Day29] Tableau 轻松学 - TabPy 启动排程

前言 通常我们会希望服务器主机开机後,就立即上线服务客户,这项要求对 TabPy Server 也不...

MLOps 带给商业与技术流程的5个好处与13个指标 | MLOps落地指南 - 流程篇

MLOps除了ML之外,另一部分则是DevOps(develop operations)。事实上,技...

企划实现(25)

在fragment里面使用元件 常常在写程序时会遇到再fragment抓不到元件的事情 用这个方式就...