土匪通关笔记(Level0—— Level 11部分)

土匪通关笔记(Level0—— Level 11部分)

靶场地址(https://overthewire.org/wargames/bandit/)

请大家Ctrl+f搜索

image-20201203135408520

bandit0@bandit:~$ cat README
boJ9jbbUNNfktd78OOpsqOltutMc3MY1
bandit1@bandit:~$ cat ./- 使用"./"来表示当前目录,文件就表示为‘-’
CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9
bandit2@bandit:~$ cat spaces\ in\ this\ filename 
UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK
bandit3@bandit:~/inhere$ cat .hidden
bandit4@bandit:~$ cd inhere/
bandit4@bandit:~/inhere$ ls
-file00  -file01  -file02  -file03  -file04  -file05  -file06  -file07  -file08  -file09
bandit4@bandit:~/inhere$ file ./*		#file命令查看文件类型
bandit4@bandit:~/inhere$ vi ./-file07
koReBOKuIDDepwhWk7jZC0RTdopnAYKh
bandit5@bandit:~/inhere$ find . -type f  -size 1033c
./maybehere07/.file2
bandit5@bandit:~/inhere$ cat ./maybehere07/.file2
DXjZPULLxYr17uwoI01bNLQbtFemEgo7

find

-size n:文件大小是n 单位:b代表512位元组的区块,c表示字元数,k表示kilobytes,w是二个位元组。
-typec:文件类型是c的文件。
d:目录
c:字型装置文件
b:区块装置文件
p:具名贮列
f:一般文件
l:符号连结
s:socket
-pidn:processid是n的文件

bandit6@bandit:~$ find / -user bandit7 -group bandit6 -size 33c 2>/dev/full
/var/lib/dpkg/info/bandit7.password
bandit6@bandit:~$ cat /var/lib/dpkg/info/bandit7.password
HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

土匪通关笔记(Level0—— Level 11部分)_第1张图片

cvX2JJa4CFALtqS87jk27qwqGhBM9plV
bandit7@bandit:~$ grep millionth data.txt 
millionth       cvX2JJa4CFALtqS87jk27qwqGhBM9plV
bandit7@bandit:~$ 

bandit8@bandit:~$ sort data.txt | uniq -u
UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

Linux uniq

命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
uniq 可检查文本文件中重复出现的行列。

uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][–help][–version][输入文件][输出文件]
-c或–count 在每列旁边显示该行重复出现的次数。
-d或–repeated 仅显示重复出现的行列。
-f<栏位>或–skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或–skip-chars=<字符位置> 忽略比较指定的字符。
-u或–unique 仅显示出一次的行列。
-w<字符位置>或–check-chars=<字符位置> 指定要比较的字符。
–help 显示帮助。
–version 显示版本信息。
[输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
[输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

Linux sort

命令用于将文本文件内容加以排序。
sort可针对文本文件的内容,以行为单位来排序
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][–help][–verison][文件]
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
–help 显示帮助。
–version 显示版本信息。

bandit9@bandit:~$ strings data.txt | grep ====
========== the*2i"4
========== password
Z)========== is
&========== truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

strings

命令用于输出文件中可打印的字符串。不论文件是普通文本,还是可执行文件,任何文件都可以。

最常用的选项:
-a 扫描整个文件的任何段,这是strings的默认行为,但是这种默认行为是可以改变的。所以建议加上此选项。
-f Print the name of the file before each string.
-n 字符串的最小长度。默认是4。也就是说长度小于4的字符串不会输出。

常用场景:

确定某个可执行文件的版本。
生成的so文件的文件名往往不包含完整的版本号。
故可以使用strings -a | grep xxx.xxx 来确认版本。
当然,grep也可以。但是grep只能显示match与否,不能输出具体的字符串。

确认编译ko文件所使用的gcc版本

root@debian2:~/test# strings /lib/modules/4.9.0-7-686/kernel/net/netfilter/ipvs/ip_vs.ko | grep -i GCC
GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516

确认源文件与目标文件的对应关系
[taoge@localhost learn_c]$ strings -f * | grep “my dear”
a.out: oh, my dear, c is %d
test.c: printf(“oh, my dear, c is %d\n”, c);
[taoge@localhost learn_c]$

bandit10@bandit:~$ cat data.txt 
VGhlIHBhc3N3b3JkIGlzIElGdWt3S0dzRlc4TU9xM0lSRnFyeEUxaHhUTkViVVBSCg==
bandit10@bandit:~$ base64  -d data.txt 
The password is IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

Base64

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于{\displaystyle \log _{2}64=6}{\displaystyle \log _{2}64=6},所以每6个位元为一个单元,对应某个可打印字符。3个字节相当于24个位元,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuencode的其他编码方法,和之后BinHex(英语:BinHex)的版本使用不同的64字符集来代表6个二进制数字,但是不被称为Base64。

Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括MIME的电子邮件及XML的一些复杂数据。

格式:base64 file
从指定的文件file中读取数据,编码为base64字符串输出。
格式:echo “str” | base64 -d
将base64编码的字符串str+换行 解码输出。
格式:echo -n “str” | base64 -d
将base64编码的字符串str解码输出。 注意与上面的差别。
格式:base64 -d
从标准输入中读取已经进行base64编码的内容,解码输出。
格式:base64 -d -i
串输出。
格式:echo “str” | base64 -d
将base64编码的字符串str+换行 解码输出。
格式:echo -n “str” | base64 -d
将base64编码的字符串str解码输出。 注意与上面的差别。
格式:base64 -d
从标准输入中读取已经进行base64编码的内容,解码输出。
格式:base64 -d -i
从标准输入中读取已经进行base64编码的内容,解码输出。

你可能感兴趣的:(CTF,安全,工具,linux)