[2021铁人赛 Day07] General Skills 04

  • 引言
    昨天学了 chmod 命令的用法,这边大概整理几个简单用法:

    $ chmod 参数 目标档案
    
    参数 简介
    +x 增加目前使用者对目标档案执行权限
    +r 增加目前使用者对目标档案读取权限
    +w 增加目前使用者对目标档案写入权限
    -x 移除目前使用者对目标档案执行权限
    -r 移除目前使用者对目标档案读取权限
    -w 移除目前使用者对目标档案写入权限
    • 范例
      情境:
      我在目前目录创建档案 pie

      pie
      

      然後尝试 cat 它,可以正常读取。

      如果我想要移除它被读取的权限,

      $ chmod -r ./pie
      

      然後再尝试读取,

      $ cat pie
      cat: pie: Permission denied
      

      果然无法读取。

      其实这个命令还有许多关於使用者种类、群组等等的细节,
      可以限定某些使用者可以但其他人不行的设定,
      但这边就暂不赘述。

  • General Skills / Nice netcat...
    https://ithelp.ithome.com.tw/upload/images/20210922/201114291o3VyegLuI.png
    这题要引入一个新的、超好用的工具: nc (netcat)

    这个工具可以让你直接连接一个远方主机,它向你送讯息、你也向它送讯息,这样一个沟通工具,
    仔细讲它就是用来针对 TCPUDP 两种协定的传输,
    反正白话讲就是类似跟远端电脑聊天、你一句我一句的感觉。

    这个工具在 Linux 各种工具中常常在「最好用工具」榜单里名列前茅,相当实用~
    今天这题就要来第一次使用它看看。

    题目要求先使用 nc 工具连上一个服务器上的程序:

    $ nc mercury.picoctf.net 7449
    

    并且题目说该程序不会说英文,这是什麽意思?
    我们先连上去就知道了:

    112 
    105 
    99 
    111 
    67 
    84 
    70 
    123 
    103 
    48 
    48 
    100 
    95 
    107 
    49 
    116 
    116 
    121 
    33 
    95 
    110 
    49 
    99 
    51 
    95 
    107 
    49 
    116 
    116 
    121 
    33 
    95 
    102 
    50 
    100 
    55 
    99 
    97 
    102 
    97 
    125 
    10
    

    结果程序跑出一堆数字,如果稍微写过程序可能就会有点感觉,
    这些数字八成是 ASCII code
    每个字元都会对应一个数字,
    如:

    'a' 字元的 ASCII code 是 97
    'A' 字元的 ASCII code 是 65
    

    程序实际上是以这些数字来处理字元的。

    所以这些数字实际上是字元的 ASCII code ,
    我们可以写一个 Python 程序将它们转为字母:

     # nice_nc.py
      while True:
     try:
         n = int(input())
         print(chr(n), end='')  # chr 会将 ASCII code 转成字元
     except:
         print()
         break
    

    我们连上该服务器後,利用 linux 的管线 (pipe) ,
    将 nc 的输出当作 python 程序的输入,直接转换成字母并印出来,
    flag 就出现了:

    $ nc mercury.picoctf.net 7449 | python nice_nc.py
    picoCTF{g00d_k1tty!_n1c3_k1tty!_f2d7cafa}
    

    注意程序印出 flag 後不会结束,会等待输入,
    此时只要 Ctrl+D (代表 EOF ,意为档案的结尾 End of File) 结束即可。


<<:  [第八天]从0开始的UnityAR手机游戏开发-如何将模型设置在图卡上和脚本解说

>>:  Day07:Swift 基础语法-Struct 与 Class 的差异

【PHP Telegram Bot】Day25 - 入群欢迎机器人(1):发送欢迎讯息

看了五天的 API 文件,想必是有点腻了,今天开始来做点实用的东西 修改 processMessa...

#10-帮网页加上黑暗模式!日夜开关(CSS变数&Media Query)

这几年手机、电脑有黑暗模式,很多网页也加上像电灯一样的开关啦! 黑暗模式可以降低亮度,减少对眼睛的压...

使用回归分析与其意义 | ML#Day15

选模型并非最重要 为什麽我们要以回归分析的方式来建立模型,其他方式可不可以?其实没有说不行。 然而回...

Day 30 - [结論] 总整理与建议

台湾老年人口的比例越来越高,随之而来的便是民众对长照的需求。政府提出了长照 2.0 的计画,资源与服...

【Day6】:GPIO输入输出(中)

GPIO 输出-LED闪烁 昨天我们成功将脚位设定成输出模式,现在我们将PB0脚位设定为输出模式。会...