Linux Luminarium

Linux Luminarium

Hello Hackers

1.介绍了whoami命令,输出当前用户名称

2.然后通过简单的示例介绍了如何使用命令的arguements

Pondering Paths

1.了解/代表root,也就是根目录

2.了解什么是绝对路径

3.了解cd命令,change directory

4.同上

5.同上

6.相对路径以及..的含义,也就是上级目录

7.‘.’ 代表当前目录

8.用./来表示运行程序

9.~代表用户目录

Comprehending Commands

1.cat命令

4.grep命令

1
hacker@dojo:~$ grep SEARCH_STRING /path/to/file

5.ls命令,就是列出文件和文件夹

6.touch创建文件

7.rm删除文件

8.ls -a 显示隐藏文件

9.组合使用

10.mkdir创建文件夹

11.find命令

12.创建软链接[符号链接]和硬链接

硬链接是一个代替地址,它指向这些数据,通过硬链接访问与直接访问无异

而软链接在Linux执行时会意识到这是一个软链接,读取文件**名称,**然后通常自动访问该文件,大多数情况下,两种情况都能访问原始数据,但是方式不同

1
hacker@dojo:~$ ln -s /tmp/myfile /home/hacker/ourfile 

上述过程创造ourfile指向 myfile

file命令可以监测软连接

1
2
hacker@dojo:~$ file ~/ourfile  
/home/hacker/ourfile: symbolic link to /tmp/myfile

原文的题目含义如下:

好的,现在轮到你来尝试了!在这个关卡中,标志(flag)一如既往地位于 /flag,但 /challenge/catflag 会输出 /home/hacker/not-the-flag 的内容。使用符号链接,欺骗它,让它给你标志!

这个时候我们可以把not-the-flag删除,然后创建相同名字的软连接指向/flag

然后就可以通过有读权限的软链接读取内容

大致思路如下:

1
2
hacker@dojo:~$ rm /home/hacker/not-the-flag
hacker@dojo:~$ ln -s /flag /home/hacker/not-the-flag

Digesting Documentation

1.ls -a

2.更复杂的方式熟悉联系

3.man命令,manual的简称,作用就是查询命令相关信息,退出查询输入q

4.说明书的阅读便捷指令

5.man man操作

6.–help选项,并不是所有的命令都有man

7.help

File Globbing

1.*代表任何字符,可以代表多个

2.?也代表任何字符,不过只代表一个

3.通配符[ab]只筛选在其中的

4.用[]通配符寻找路径

5.综合使用

6.[]中加上了!或者^含义是不需要找列出的字符的通配符

Practicing Piping

1.重定向输出 >

1
hacker@dojo:~$ echo hi > asdf

2.命令输出的重定向

3.>总是回创造一个新的重定向输出文件,同时删除内容,>>可以追加重定向

4.文件描述符

1
2
3
FD 0:标准输入#默认指向键盘输入
FD 1:标准输出#和正常情况相同
FD 2:标准错误#输入错误信息

5.重定向输入 <

6.grep

7.grep实时输出的信息 |

8.grep标准错误信息

9.>&操作符,将一个文件描述符重定向给另一个文件描述符

10.tee,T型分叉器,可以将管道上的数据复制到命令行上的任意数量的文件中去

11.tee的更多用法

1
2
hacker@dojo:~$ echo HACK | tee THE > PLANET#将数据复制到两个文件中
hacker@dojo:~$ echo HACK | tee THE | cat#将数据复制到文件和命令

进程替换

1
2
3
hacker@dojo:~$ echo >(rev)
/dev/fd/63
hacker@dojo:~$

写入一个参数

会将其输入连接到一个临时文件(它会创建)

这不是一个真正的文件,它被称为命名管道,因为他有一个文件名

随后bash会把命名管道文件的路径连接到rev

示例及其过程:

1
2
3
4
5
hacker@dojo:~$ echo HACK | rev
KCAH
hacker@dojo:~$ echo HACK | tee >(rev)
HACK
KCAH
  1. bash 启动了 rev 命令,并将一个命名管道(可能是 /dev/fd/63)连接到 rev 的标准输入。
  2. bash 启动了 tee 命令,将管道连接到它的标准输入,并将 tee 的第一个参数替换为 /dev/fd/63tee 甚至没有看到参数 >(rev); shell 在启动 tee 之前已经替换了它。
  3. bash 使用 echo 内置命令将 HACK 写入 tee 的标准输入。
  4. tee 读取了 HACK,将其写入标准输出,然后写入 /dev/fd/63(它连接到 rev 的标准输入)。
  5. rev 从其标准输入读取 HACK,将其反转,并将 KCAH 写入标准输出。

12.综合利用

Shell Variables

1.$变量名,存储在shell的工作目录路径中

2.也可以用=为变量赋值,注意=周围不能有空格

3.空格不能随便使用,复制后使用空格后的部分会被识别为命令

若要为变量的值赋出含空格的内容可以参考

1
hacker@dojo:~$ VAR="1337 SAUCE"

4.$最小提示符[shell]

1
2
3
4
5
6
hacker@dojo:~$ VAR=1337
hacker@dojo:~$ echo "VAR is: $VAR"
VAR is: 1337
hacker@dojo:~$ sh
$ echo "VAR is: $VAR"
VAR is:

5.env命令:打印出你在 Shell 中设置的所有导出变量

6.命令替换

1
2
3
4
hacker@dojo:~$ FLAG=$(cat /flag)
hacker@dojo:~$ echo "$FLAG"
pwn.college{blahblahblah}
hacker@dojo:~$

7.内置read函数读取标准数据

1
2
3
4
hacker@dojo:~$ read -p "INPUT: " MY_VARIABLE
INPUT: Hello!
hacker@dojo:~$ echo "You entered: $MY_VARIABLE"
OUTPUT: You entered: Hello!

8.综合考察


Linux Luminarium
http://example.com/Linux Luminarium/
作者
briteny-pwn
发布于
2025年3月6日
许可协议