土匪通关笔记(Level0—— Level 11部分) – 作者:gaoye02

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

请大家Ctrl+f搜索【bandit】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

image-20201203141904325

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

Linux sort

命令用于将文本文件内容加以排序。 sort可针对文本文件的内容,以行为单位来排序 sort -bcdfimMnr-t<分隔字符>–help[文件] -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

trings

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

最常用的选项: -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]

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 从标准输入中读取已经进行base64编码的内容,解码输出。

来源:freebuf.com 2020-12-03 18:49:43 by: gaoye02

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论