linux中查看文件命令和空格绕过

由于做了[WUSTCTF2020]朴实无华这道题目,整理一下除了cat还可以用哪些命令打开文件

  • cat  从第一行开始显示文件内容
  • tac  从最后一行开始显示文件内容
  • nl   显示的时候,顺道输出行号
  • more命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示
  • less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
  • head 只看头几行
  • tail 只看尾巴几行

linux下绕过空格技巧

 

  • ${IFS}
  • $IFS$9
  • <
  • <>
  • {,}

cat flag.txt
cat${IFS}flag.txt
cat$IFS$9flag.txt
cat<flag.txt
cat<>flag.txt
{cat,flag.txt}

${IFS}绕过:在linux下,${IFS}是分隔符的意思,所以可以有${IFS}进行空格的替代。

$IFS$9绕过:$起截断作用,9为当前shell进程的第九个参数,始终为空字符串,所以同样能代替空字符串进行分割。

输入输出的区别:

>>和>都属于输出重定向,<属于输入重定向。

文件内容的区别:

>会覆盖目标的原有内容。当文件存在时会先删除原文件,再重新创建文件,然后把内容写入该文件;否则直接创建文件。

>>会在目标原有内容后追加内容。当文件存在时直接在文件末尾进行内容追加,不会删除原文件;否则直接创建文件。

 

输入重定向:

对于一般的可执行程序而言,如果需要输入数据一般是直接从键盘中获取,而使用输入重定向则可以直接从文件中获取出数据。

假设有文本文件data,需要对data文件使用example程序,只需要输入命令:

example < data

<符号是Unix、Linux的重定向运算符。对于一个可执行程序而言(如example),它并不会关心它的输入是从键盘或是文件读取,输出是输出到屏幕还是文件中,它仅关心输入流或是输出流。而重定向运算符会将(data)文件与流关联,将data文件的内容引至example程序。

这样就很好理解绕过空格的原理了。

 

还有一个小知识,之前我在纠结为什么ca\t或者c\at的效果和cat一样,后来经过东拼西凑的问大佬和尝试,最后总结的原因是因为在linux里面当转义符号(\)转义普通字符的时候,和普通字符原来的效果是一样的,意思就是\t和t都是t,只有在转义特殊字符的时候,才起了作用,比如\$,$则不再表示变量的意思。

 

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值