技术流丨关于linux命令那点事

admin 2023年3月10日09:00:32评论25 views字数 1139阅读3分47秒阅读模式

技术流丨关于linux命令那点事


提起linux命令想必大家都不陌生

诸如经常用到的 ls、cat、cd 

通过这些命令可以执行相应的系统功能

那么你知道这些命令的调用原理吗?

Linux命令又分为内部命令和外部命令


内部命令


shell内嵌命令内置命令在系统启动时就调入内存,常驻内存效率高。


内部命令是写在bash源码里面的,执行速度快,因为解析内部命令shell不需要创建子进程。


外部命令


系统的软件功能,用户需要时才从硬盘中读入内存,是磁盘中的可执行程序


Linux外部命令本质上是elf可执行程序,当我们在终端输入相应的命令时,其实是在调用这些 $PATH目录中的可执行程序。


外部命令是在bash之外额外安装的,可通过“echo $PATH”命令查看外部命令的存储路径。


常见$PATH   /bin,/sbin,/usr/bin,/usr/sbin,/usr/local/sbin


具体命令的源码实现大家可查看GNU源码 http://ftp.gnu.org/gnu/



可通过type 命令查看是否内部命令

技术流丨关于linux命令那点事


如图所示,cd为shell内建命令,cat为外部命令,路径/bin。

常见 内部命令 cd、echo、read、source、exit等。

可通过enable 命令查看内部命令

技术流丨关于linux命令那点事

图中所示为部分内部命令


那么将对应目录下的外部命令删除会怎么样呢?

技术流丨关于linux命令那点事

技术流丨关于linux命令那点事


图示为/bin 目录下的外部程序,删除ls以及cat命令 (*危险操作建议备份)

*删除ls命令可能导致系统UI 错误,建议备份后还原。


现在测试一下

技术流丨关于linux命令那点事


提示ls、cat未安装,无法完成命令操作。

But……

技术流丨关于linux命令那点事


因为 ls、cat本身是可执行程序,把它们放在测试目录下直接运行,就可以实现原有命令的功能操作。具体使用参数和命令操作没有区别。


最后记得还原

技术流丨关于linux命令那点事


扩展思考

在一些ctf比赛中,可能将查看flag的一些外部命令ban掉,导致获取flag的难度增大。

遇到这种情况就可以使用内部命令组合的方式实现获取flag。


使用 linux 内部命令 read 实现ls功能

read -e -p "plz press TAB:" list

技术流丨关于linux命令那点事


使用 linux 内部命令 read 读取flag文件


第一种方法:read -u

创建 fd

exec 3<flag


读取

read -u 3 var


显示

echo "Line $count:$var"


关闭 fd

exec 3<&-

技术流丨关于linux命令那点事



【沙箱可用】第二种方法:重定向

文件内容作为输入

read line <flag


显示

echo "Line $count:$line"

技术流丨关于linux命令那点事


以上内部命令的功能及详细使用方法可以自行查阅。

技术流丨关于linux命令那点事

至于一些其他的组合功能,这里抛砖引玉,大家可以自行尝试。


如果你还想了解CTF比赛中一些相关知识,在这里也推荐给大家四叶草安全创研中心的CTF竞赛培训班,在线学习+实操,提升更快哦~


技术流丨关于linux命令那点事


技术流丨关于linux命令那点事

原文始发于微信公众号(小草培养创研中心):技术流丨关于linux命令那点事

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月10日09:00:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   技术流丨关于linux命令那点事https://cn-sec.com/archives/1232424.html

发表评论

匿名网友 填写信息