Program Misuse(1)

简介: Program Misuse

level 1~6

Linux读文件的命令:

cat,more,less,tail,head,sort

level 7~9

Linux编辑器:

vim,emacs,nano

level 10~16

其他输出内容的命令:

rev

逆置输出文件内容

od

将指定文件内容以八进制、十进制、十六进制、浮点格式或 ASCII 编码字符方式显示,系统默认的显示方 式是八进制。

使用范例1:
hacker@program-misuse~level11:/$ echo |od -tcx1 flag
0000000   p   w   n   .   c   o   l   l   e   g   e   {   s   o   8   i
         70  77  6e  2e  63  6f  6c  6c  65  67  65  7b  73  6f  38  69
0000020   g   b   7   P   p   r   7   J   0   S   h   K   I   5   3   v
         67  62  37  50  70  72  37  4a  30  53  68  4b  49  35  33  76
0000040   l   M   H   u   9   B   L   .   0   1   M   1   E   D   L   w
         6c  4d  48  75  39  42  4c  2e  30  31  4d  31  45  44  4c  77
0000060   Y   T   M   2   Q   z   W   }  \n
         59  54  4d  32  51  7a  57  7d  0a
0000071
使用范例2:(去掉空格,转为16进制,*表示与前面重复,为6c)
hacker@program-misuse~level11:/$ od -An -w1 -tx1 flag|awk '{for(i=1;i<=NF;++i){printf "%s",$i}}'
70776e2e636f6c*6567657b736f3869676237507072374a3053684b493533766c4d487539424c2e30314d3145444c7759544d32517a577d0ahacker@program-misuse~level11:/$ 
转为ascii: pwn.college{so8igb7Ppr7J0ShKI53vlMHu9BL.01M1EDLwYTM2QzW}

hd(hex dump)

用来查看指定文件的十六进制编码

hacker@program-misuse~level12:/$ hd flag
00000000  70 77 6e 2e 63 6f 6c 6c  65 67 65 7b 77 69 4e 4c  |pwn.college{wiNL|
00000010  66 31 74 6d 5a 79 30 66  33 63 51 30 4f 70 73 6f  |f1tmZy0f3cQ0Opso|
00000020  67 5a 67 43 57 64 78 2e  30 46 4e 31 45 44 4c 77  |gZgCWdx.0FN1EDLw|
00000030  59 54 4d 32 51 7a 57 7d  0a                       |YTM2QzW}.|

XXD

十六进制dump工具,可以将二进制文件转换为十六进制表示,并以可读的形式显示

base32/64

将文件内容以base32/64编码形式输出。

split

可以将一个大文件分割成很多个小文件。【可以作用于root限制文件,然后使用cat读取分割后的小 文件获取原文件数据】

level 17 ~ 23

不同的存档格式:

vim可以直接查看压缩文档里面的内容,vim flag.zip 进入压缩目录,光标移至想要查看的文件前面键入enter 即可查看内容。

gzip

gzip + file 压缩文件,不保留原文件。

gzip -d ,[–decompress] flag.gz 解压缩.gz压缩文件。

gzip -cd flag.gz 查看压缩文件的内容】

bzip2: 命令与gzip相似,压缩后缀为.bz2。

zip: zip -m test.zip a.txt 压缩a.txt到test.zip归档文件,压缩不保留

unzip -l test.zip 仅仅查看压缩文件信息,不解压缩

tar: tar -cf flag.tar flag 压缩flag到flag.tar归档文件,压缩并保留

ar

用于建立或修改备存文件,或是从备存文件中抽取文件。

ar cv flag.bak flag 压缩flag到flag.bak归档文件,压缩并保留

cpio

用来建立,还原备份档的工具程序,它可以加入,解开 cpio 或 tar 备份档内的文件。

find . -iname flag -print | cpio -ov >/tmp/flag.cpio 将flag归档为备份文件flag.cpio,(归档需要一点 时间)位于/tmp文件夹 【/路径无root权限】

$ mkdir output
$ cd output
$ cpio -idv < /tmp/object.cpio

genisoimage :(level23)

命令用于创建 ISO 9660 格式的映像文件,通常用于准备数据以进行光盘刻录。用于创建 ISO 9660 格式的映像文件,通常用于准备数据以进行光盘刻。

genisoimage -o /tmp/testfile.iso /flag 创建为一个名为 testfile.iso 的 ISO 映像,tmp文件夹

参考wp与视频:

EXTREMELY HARD genisoimage -sort /flag -o - /flag

genisoimage --help 2>&1 | grep FILE

https://www.youtube.com/watch?v=14mIjpOXnrM&t=733

level 24~32

单个命令实现绕过root读取flag文件内容

env

利用 env 命令的特殊功能: env 命令可以用来设置环境变量并执行命令。你可以尝试使用 env 命令结合重定向符号来获取 flag 文件的内容。以下是一个示例命令: ** env -i /bin/cat flag**

env -i ./elf 以零环境变量启动elf可执行程序。

find

** **如果只能使用find命令来查看文件内容,你可以尝试使用find命令结合exec参数来执行其他命令来查> 看文件内容。以下是一个可能的方法:

find / -name 1.txt -exec cat {} \;  # 就算cat命令被roo控制也可以读取

这个命令将在整个文件系统中查找名为1.txt的文件,并使用cat命令来查看文件内容。{}表示find命令找到的文件路径,\;表示exec命令的结束。

make

  1. 想要查看的文件所在文件夹可以创建文件:

1.1 创建Makefile文件:首先,你需要创建一个名为Makefile的文件,其中包含了执行cat命令查看文件内容的规则。你可以使用文本编辑器创建一个Makefile文件,内容如下:

all:
    @cat 1.txt

1.2 执行make命令:将Makefile文件保存在与1.txt相同的目录中,然后在终端中执行以下命令:

make -f Makefile

这将执行Makefile文件中的规则,即执行cat 1.txt命令来查看1.txt文件的内容。

通过这种方法,你可以使用make命令来查看文件内容。

  1. 没有创建文件权限

如果无法在根目录下创建文件,你可以尝试以下方法来使用make命令查看根目录下的文件内容:

** 2.1直接在命令中指定文件路径**:你可以直接在make命令中指定文件路径来查看文件内容,而不需要创建Makefile文件。例如,你可以执行以下命令来查看根目录下的1.txt文件内容:

make -f /dev/stdin <<<'all: ; @cat /1.txt'

这个命令会执行cat /1.txt命令来查看根目录下的1.txt文件内容。

2.2 使用echo命令:另一种方法是使用echo命令结合make命令来查看文件内容。你可以执行以下命令:

echo 'all: ; @cat /1.txt' | make -f -

这个命令会将echo输出的内容通过管道传递给make命令来执行,从而查看根目录下的1.txt文件内容。

nice

nice命令是用于调整进程的优先级的Unix/Linux命令。通过nice命令,你可以指定一个命令运行时的优先级,即CPU调度器在决定哪个进程运行时会考虑到这个优先级。较低的优先级值表示更高的优先级,而较高的优先级值表示更低的优先级。 在Unix/Linux系统中,如果使用nice命令而不指定具体的优先级值,则默认情况下,进程的优先级会继承其父进程的优先级

  1. 直接在命令中指定文件路径:你可以直接在nice命令中指定文件路径来查看文件内容。例如,你可以执行以下命令来使用nice命令查看根目录下的1.txt文件内容:
nice cat /1.txt

这个命令会使用nice命令来运行cat /1.txt命令,从而查看根目录下的1.txt文件内容。

  1. 使用echo命令:类似地,你也可以使用echo命令结合nice命令来查看文件内容。你可以执行以下命令:
echo 'nice cat /1.txt' | sh

这个命令会将echo输出的内容通过管道传递给sh命令来执行,从而使用nice命令查看根目录下的1.txt文件内容。

timeout

timeout命令用于设置命令的运行时间限制。你可以使用以下命令来设置运行时间限制并查看文件内容:

timeout 5s cat /1.txt  # 可以绕过root权限

这个命令会将cat /1.txt命令的运行时间限制设置为5秒,即5秒后如果命令还未执行完毕,则会被强制终止。

stdbuf

stdbuf命令用于修改标准I/O流的缓冲设置。通过stdbuf命令,你可以控制命令的输入、输出和错误流的缓冲方式,以便更好地控制命令的行为。

要使用stdbuf命令来获取文件内容,你可以按照以下步骤进行操作:

  1. 使用stdbuf命令:你可以结合stdbuf命令和cat命令来获取文件内容并修改缓冲设置。例如,你可以执行以下命令来获取根目录下的1.txt文件内容:
stdbuf -o0 cat /1.txt

在这个命令中,-o0选项表示将标准输出流的缓冲设置为无缓冲,这样可以立即输出文件内容而不等待缓冲区填满。

指定不同的缓冲模式:除了-o0选项外,stdbuf命令还提供了其他选项来控制标准I/O流的缓冲方式,如-i用于设置标准输入流的缓冲模式,-e用于设置标准错误流的缓冲模式等。

通过以上命令,你可以使用stdbuf命令来获取文件内容并修改标准输出流的缓冲设置,以便更好地控制输出行为。

setarch

setarch命令用于设置进程的架构(architecture),可以用于在不同的架构下执行命令。通过setarch命令,你可以模拟不同的CPU架构来执行命令。

要使用setarch命令来获取文件内容,你可以按照以下步骤进行操作:

  1. 使用setarch命令:你可以结合setarch命令和cat命令来获取文件内容并设置不同的CPU架构。例如,你可以执行以下命令来获取根目录下的1.txt文件内容:
setarch x86_64 cat /1.txt

在这个命令中,x86_64表示要模拟执行命令的CPU架构为x86_64架构。

  1. 指定不同的架构:除了x86_64架构外,setarch命令还支持其他架构,如i386arm等,你可以根据需要选择合适的架构来执行命令。

通过以上命令,你可以使用setarch命令来获取文件内容并模拟不同的CPU架构来执行命令。

watch 【level 31】

要使用watch命令来查看文件内容,你可以按照以下步骤进行操作:

  1. 使用watch命令:你可以结合watch命令和cat命令来定期查看文件内容。例如,你可以执行以下命令来每隔2秒查看一次根目录下的1.txt文件内容:
watch -n 2 cat /1.txt

在这个命令中,-n 2选项表示每隔2秒执行一次cat /1.txt命令,从而定期查看文件内容。

  1. 指定刷新时间间隔:通过调整-n选项后面的时间间隔值,你可以控制watch命令定期执行命令的时间间隔,以便查看文件内容。

通过以上命令,你可以使用watch命令来定期查看文件内容,而不需要手动多次执行cat命令。

使用:watch -x cat /flag   
# 在一些Linux发行版中,watch命令可能不支持-x选项,因为-x选项通常用于指定要执行的命令的参数。如果watch命令不支持-x选项,你可以尝试使用其他方法来实现相同的效果,例如使用管道符|将cat /flag的输出传递给watch命令。参见上面代码块(这里只能用这个命令...)

socat 【level 32】

socat - /flag

level 33~ 36

whiptail

whiptail是一个在命令行界面下创建对话框的工具,通常用于在Shell脚本中创建交互式用户界面。它可以显示各种类型的对话框,如消息框、输入框、菜单框、Yes/No框等,使用户能够通过键盘输入或选择选项来与脚本进行交互。

以下是一些常用的whiptail对话框类型和用法:

  1. 消息框(msgbox): 显示一条消息,并等待用户按下“OK”按钮。
whiptail --msgbox "Hello, World!" 10 30
  1. 输入框(inputbox): 提示用户输入文本,并将输入的文本保存到变量中。
result=$(whiptail --inputbox "Enter your name:" 10 30 3>&1 1>&2 2>&3)
  1. 菜单框(menu): 显示一个菜单供用户选择,并将选择的结果保存到变量中。
choice=$(whiptail --menu "Choose an option:" 15 30 4 \
"1" "Option 1" \
"2" "Option 2" \
"3" "Option 3" 3>&1 1>&2 2>&3)
  1. Yes/No框(yesno): 显示一个Yes/No选项供用户选择,并根据选择返回不同的退出状态。
whiptail --yesno "Do you want to continue?" 10 30
if [ $? -eq 0 ]; then
    echo "User chose Yes"
else
    echo "User chose No"
fi

通过使用whiptail,你可以在Shell脚本中创建交互式的用户界面,使用户能够更方便地与脚本进行交互和操作。

利用whiptail来读取文件内容,你可以结合使用--textbox对话框类型。--textbox对话框可以显示文件的内容,并允许用户浏览和查看文件内容。

  1. 使用**--textbox**对话框显示文件内容:
whiptail --textbox /path/to/file.txt 20 60

这将在对话框中显示指定文件(/path/to/file.txt)的内容,对话框的大小为20行60列。用户可以使用方向键和Page Up/Page Down键来浏览文件内容。

  1. 结合保存用户选择的文件内容:
    如果需要将用户在--textbox对话框中选择的文件内容保存到变量中,可以使用重定向来实现:
file_content=$(whiptail --textbox /path/to/file.txt 20 60 3>&1 1>&2 2>&3)

这样,用户在对话框中查看文件内容后,按下Enter键,文件内容将被保存到file_content变量中。

通过上述步骤,你可以利用whiptail的--textbox对话框来显示文件内容,并且可以选择是否将文件内容保存到变量中供后续处理。希望这个详细回答能帮助你成功读取文件内容并与用户交互。如果有任何疑问,请随时提出。

awk

awk是一种强大的文本处理工具,通常用于从文本文件中提取和处理数据。它可以逐行扫描文件,根据指定的模式匹配和执行相应的操作。以下是awk命令的一些主要功能和用途:

  1. 文本处理
  2. 数据提取和报告
  3. 数据转换和格式化
  4. 文本搜索和替换
  5. 报表生成
  6. 自定义脚本

要使用awk命令读取/flag文件,你可以使用awk的print函数来输出文件的内容。以下是详细的步骤:

  1. 使用awk读取文件内容:
awk '{print}' /flag

这条命令将使用awk读取/flag文件的内容,并将其输出到标准输出。

  1. 将文件内容保存到变量中:

如果需要将文件内容保存到变量中,可以使用重定向来实现:

file_content=$(awk '{print}' /flag)

这样,文件的内容将被保存到file_content变量中供后续处理。

  1. 按行读取文件内容:
    如果需要按行读取文件内容并进行处理,可以使用awk的逐行处理能力:
awk '{print "Line " NR ": " $0}' /flag #这条命令将逐行输出/flag文件的内容,并在每行前加上行号。

通过以上步骤,你可以使用awk命令读取/flag文件的内容,并根据需要输出到标准输出或保存到变量。

sed

sed(Stream Editor)是一个流式文本编辑器,用于对文本数据进行处理、转换和编辑。它通常用于Shell脚本和命令行中,可以实现以下功能:

  1. 文本替换
  2. 文本删除
  3. 文本插入
  4. 文本选取
  5. 文本转换
  6. 文本合并
  7. 脚本编程

要使用sed命令读取文件内容,你可以结合使用sed的打印命令来输出文件的内容。以下是详细的步骤:

  1. 使用sed读取文件内容:
sed 'p' /path/to/file.txt

这条命令将使用sed读取/path/to/file.txt文件的内容,并将每一行重复打印一次,实现读取文件内容的效果。

  1. 将文件内容保存到变量中:

如果需要将文件内容保存到变量中,可以使用重定向来实现:

file_content=$(sed 'p' /path/to/file.txt)

这样,文件的内容将被保存到file_content变量中供后续处理。

  1. 按行读取文件内容:

如果需要按行读取文件内容并进行处理,可以使用sed的行范围功能:

sed -n '1,10p' /path/to/file.txt

这条命令将打印/path/to/file.txt文件的前10行内容。

通过以上步骤,你可以使用sed命令读取文件内容,并根据需要输出到标准输出或保存到变量中。

ed

使用ed命令来读取文件内容相对比较复杂,因为ed是一个行编辑器,它主要用于在命令行中逐行编辑文本文件。以下是使用ed命令来读取文件内容的详细步骤:

  1. 打开文件:
  • 首先,使用ed命令打开要读取的文件:
ed /path/to/file.txt
  1. 显示文件内容:
  • 输入以下命令来显示文件内容:
,p

这将打印整个文件的内容到屏幕上。

  1. 逐行读取文件内容:
  • 如果要逐行读取文件内容,可以使用以下命令:
1,$p

这将逐行打印文件的内容到屏幕上,从第一行到最后一行。

  1. 保存文件内容到变量中:
  • 如果需要将文件内容保存到变量中,可以使用重定向和ed的输出命令:
file_content=$(ed -s /path/to/file.txt <<< ",p")

这样,文件的内容将被保存到file_content变量中。

  1. 退出ed编辑器:
  • 在完成文件内容的查看后,可以输入以下命令退出ed编辑器:
q

通过以上步骤,你可以使用ed命令来读取文件内容。请注意,ed是一个相对较老的文本编辑器,使用起来可能相对复杂,但仍然可以用于逐行查看和编辑文件内容。

目录
相关文章
|
6月前
|
Shell 网络安全 C语言
Program Misuse(2)
Program Misuse(2)
59 6
|
7月前
|
Java Maven
Error executing CMake: Cannot run program “cmake“
Error executing CMake: Cannot run program “cmake“
78 0
3.4 Files
3.4 Files
66 0
files 2
files 2
74 0
|
Unix Windows
为什么文件路径 Program Files 可以写成 Progra~1
为什么文件路径 Program Files 可以写成 Progra~1
EXEC_PROGRAM
EXEC_PROGRAM
129 1
|
Java
编译OpenJDK:invalid configuration Files: machine Files not recognized
编译OpenJDK:invalid configuration Files: machine Files not recognized
114 0
|
NoSQL Java 数据库
|
NoSQL
[Advance] How to debug a program (上)
Tool GDB Examining Memory (data or in machine instructions) You can use the command x (for “examine”) to examine memory in any of several formats, independently of your program's data types.
881 0