本文为个人学习与实战过程中的思路总结,旨在分享技术探索经验,若有疏漏之处,欢迎交流指正。
好靶场简介
漏洞复现学习由"好靶场"支持

靶场一(nl命令执行)
我们开启靶场先看描述

这道题的描述是:"通过这个Demo,你可以体验并学会Linux的nl命令。
Flag在/tmp/flag.txt"
官方解题思路
nl 命令用于为文件中的每一行加上行号,输出时更加清晰有序。基本用法为 nl filename,可以看到每一行前面都有编号。
在安全测试中,nl 一些过滤只限制 cat 、head 等命令的场景下,攻击者可能绕过过滤用 nl 来查看敏感文件内容。
nl /tmp/flag.txt

拓展
除了提供的思路 nl /tmp/flag.txt
还可以使用下面的nl命令获取flag
. 使用标准输入重定向
nl < /tmp/flag.txt
. 指定行号格式
nl -b a /tmp/flag.txt # 所有行都编号
nl -b t /tmp/flag.txt # 只对非空行编号(默认)
nl -b n /tmp/flag.txt # 不编号
. 自定义行号格式
nl -n ln /tmp/flag.txt # 左对齐编号
nl -n rn /tmp/flag.txt # 右对齐编号(默认)
nl -n rz /tmp/flag.txt # 右对齐,前导零
. 设置编号宽度
nl -w 3 /tmp/flag.txt # 编号宽度为3个字符
nl -w 1 /tmp/flag.txt # 最小宽度
. 设置编号增量
nl -i 2 /tmp/flag.txt # 每次增加2
. 使用命令替换
nl $(echo /tmp/flag.txt)
nl echo /tmp/flag.txt
. 使用通配符(如果目录中只有一个文件)
nl /tmp/f*.*
nl /tmp/*.txt
. 使用find结合exec
find /tmp -name "flag.txt" -exec nl {} ;
在 /tmp 目录下查找名为 flag.txt 的文件,找到后用 nl 命令(带行号显示内容)处理它
. 使用进程替换(bash)
nl <(cat /tmp/flag.txt)
bash 的进程替换语法,把 cat /tmp/flag.txt 的输出(文件内容)当成一个「临时文件」,传给 nl 命令加行号
nl /tmp/flag.txt | head # 只显示前几行
用 nl 给文件加行号,再通过管道 | 把结果传给 head,只显示文件前 10 行(默认)
nl /tmp/flag.txt | less # 分页查看
nl 加行号后,用 less 分页浏览长文件,支持上下翻页、搜索(/关键词),适合大文件
靶场二(less命令执行)
我们开启靶场先看描述

这道题的描述是:"通过这个Demo,你可以体验并学会Linux的Less命令。
Flag在/tmp/flag.txt"
官方解题思路
less 是一个高级文件分页查看命令,与 more 类似,但功能更强大。使用 less /etc/passwd 可以高效阅读大文件,支持向上和向下翻页(用上下箭头或 PageUp/PageDown),按 q 退出。less 支持内容搜索(使用 / 输入关键词)和更灵活的滚动方式。
在安全实践中,攻击者有时会通过 less 去查看敏感文件,因为它比 more 更易于浏览和查找关键信息,有些过滤措施可能只防住了 cat or more 指令,却忽略了 less。
less /tmp/flag.txt

靶场三(tail命令执行)
我们开启靶场先看描述

这道题的描述是:"通过这个Demo,你可以体验并学会Linux的tail命令。
Flag在/tmp/flag.txt"
官方解题思路
tail 是 Linux 下用于查看文件末尾内容的命令,默认显示最后 10 行。比如:tail /etc/passwd 会输出文件的最后 10 行。
在安全实践中,tail 可以用来快速检查日志的最新内容,或者读取大文件的末端。攻击者有时会用 tail 来获取敏感文件的结尾信息,以绕过对部分内容的读取限制。
tail /tmp/flag.txt

拓展
看看其它解题思路!
tail /tmp/flag*
tail -n 20 /tmp/flag.txt
awk '{print}' /tmp/flag.txt
逐行打印文件的全部内容,效果和 cat /tmp/flag.txt 完全等价
awk 'NR<=20' /tmp/flag.txt
只打印文件的前 20 行内容
sed -n '1,50p' /tmp/flag.txt
打印文件的第 1 行到第 50 行内容
sed '' /tmp/flag.txt
原样输出文件的全部内容,等价于 cat /tmp/flag.txt
fold -w 80 /tmp/flag.txt
把文件的超长行按 80 个字符宽度折行,方便阅读
vi xxxxxxxxxx
靶场四(head命令执行)
我们开启靶场先看描述

这道题的描述是:"通过这个Demo,你可以体验并学会Linux的head命令。
Flag在/tmp/flag.txt"
官方解题思路
head 是 Linux 下用于查看文件开头内容的命令,默认显示前 10 行。比如:head /etc/passwd 会输出文件的前 10 行。
在安全实践中,head 可以用来快速检查大文件的一部分,或者绕过对某些命令(如 cat )的限制。攻击者有时会用 head 来读取敏感文件的开头内容。
head /tmp/flag.txt

靶场五(tac命令执行)
我们开启靶场先看描述

这道题的描述是:"通过这个Demo,你可以体验并学会Linux的tac命令。
Flag在/tmp/flag.txt"
官方解题思路
tac 是 Linux 下的一个有趣命令。它和 cat 类似,但会将文件内容的每一行倒序输出,最后一行会显示在第一行。比如:tac /tmp/flag.txt
有时候如果服务不允许 cat 命令,攻击者会尝试用 tac ,因为 tac 实际上也可以读取文件内容,常用于绕过对 cat 命令的限制。
tac /tmp/flag.txt

拓展
看看其它师傅们的解题思路!
除了tac /tmp/flag.txt可以查看flag
还可以通过以下的命令你来查看
使用特定分隔符(默认为换行符)
tac -s '' /tmp/flag.txt
以空行作为分隔符逆序段落
tac -s '^$' /tmp/flag.txt
使用shell脚本
echo "$(tac /tmp/flag.txt)"
使用命令替换
var=$(tac /tmp/flag.txt); echo "$var"
多次逆序(等同于原顺序)
tac /tmp/flag.txt | tac
使用绝对路径调用tac
/usr/bin/tac /tmp/flag.txt
本篇完 | 实践出真知,交流共进步
每一篇文章都是一次沉淀,感谢你的阅读。技术没有捷径,唯有不断积累、不断输出。期待下次继续与你分享更多实战经验,一起前行。
《法律与责任声明》
本内容仅用于网络安全漏洞的技术研究、学习与交流。
一、合法性要求
- 严格遵守《中华人民共和国网络安全法》及相关法律法规,严禁将所学技术用于非法活动,如未经授权的攻击、窃取信息等。例如,不得对未授权的真实生产环境网站做漏洞测试。
- 漏洞测试须在合法授权环境进行,可使用自己搭建的靶场或获书面授权的目标系统,否则将担法律责任。
二、风险与责任
- 若因参考本内容对第三方造成损失,本人不承担法律责任,使用者自行担责。
三、传播限制
- 禁止将本内容用于恶意传播,如制作恶意教程、培训非法黑客组织,应维护良好网络安全环境。
- 发现有人利用本内容非法活动,应及时举报。
四、版权声明
本文为本人独立创作,有完整知识产权。未经书面许可,任何单位或个人不得转载、复制或以其他方式使用,违者依法追责。
阅读并使用本文章内容即表示同意声明条款