InUrHeart
CBCTF-test_your_nc
涉及知识点:
- nc命令
- cat命令的使用
- cat的类似命令
- bin文件夹中存放常用命令
- echo的特殊用法
- shell脚本解释器
题目内容
解题思路
了解nc:
nc是netcat的简写。(Linux的nc命令)主要用于建立和监听任意TCP和UDP连接,支持ipv4和ipv6连接。
基本格式:nc [-options] hostname port[s] [ports] …
在这里考察连接的建立。
如图示,成功建立连接后,光标出现在下一行,并闪烁。
按照一般的解题思路,使用cat命令,获取flag文件内容。
发现cat命令不可用。-> cat命令被出题人屏蔽。
cat命令的使用:(此题)cat file 查看file文件的内容
尝试使用其他与cat作用相同(即查看文件内容)的命令:
- more命令(逐页显示文件内容)
- less命令(与more类似,但可向前翻页,搜索字符)
- nl命令(类似 cat -n,显示时输出行号)
- head命令 (默认只显示文件前10行)
- tail命令 (默认只显示文件末尾10行)
- tac(从最后一行倒序显示内容,并将所有内容输出)
- tailf(类似 tail -f)
这些命令均被屏蔽。 -> 怎么找到没有被屏蔽的命令?
Linux下bin文件夹中存放了常用的二进制可执行命令!
所以可以进入bin文件并查看其中内容,得知可用命令。
sbin文件夹中存放管理员用命令
这里涉及到另一个linux命令:ls 显示文件和目录列表,与dos下的dir命令类似
可知有四个可执行命令。
其中
- ls用于显示文件和目录列表;
- bash和sh是脚本语言shell的两种脚本解释器;
- echo用于脚本的输入。
echo的特殊用法:(打印文本内容)echo "$(< flag)"
直接运行发现得到一个空行。
这是因为这种echo命令只能在bash解释器下使用。
所以需要先启用bash脚本解释器:./bin/bash(在主目录)
得到flag。
题后反思
做nc题的流程:
- 用ls命令查看文件及目录列表。
- 尝试使用cat命令直接获取flag文件。
- 进入bin文件夹查看文件列表,得到可用命令。
- 根据可用命令进行取舍,找到合适的查看文件内容的方法。