引言
昨天比較重要的重點是 Python 中括號用法,
看看下面的練習回憶一下吧:
a = 'picoCTF'
print(a[3:5])
print(a[:4])
print(a[:-3])
分別會印出什麼呢?想完之後可以自己寫程式對答案哦!
今天的題目會使用到兩個新工具,也都是很重要的,
我們就直接開始吧!
General Skills / strings it
首先,題目提供了一個檔案,
連結名 | 下載的檔案 |
---|---|
file | strings |
下載下來後是一個 strings
檔案,
題目表示是否可以不執行它來得到 flag ?
那我們第一件事就是先執行它 (?
$ chmod +x strings
$ ./strings
得到輸出:
Maybe try the 'strings' function? Take a look at the man page
得知可以使用 strings 功能來達成目標,它請我們查看手冊 man :
$ man strings
僅擷取主要說明的部份
NAME
strings - print the sequences of printable characters in files
strings 這個命令可以查看所有可視字元,
因為不是所有字元都是可以看得見的,
如 ASCII code 的 0~31 號就是不可見的,都有特殊功能。
strings 尤其對查看執行檔內部資訊相當有用,
因為裡面大部分都是不可視的,畢竟不是文字檔案。
簡單使用方式是:strings file
可以印出 file 的所有可視字元並以換行隔開每一個。
將檔案 strings
用 strings 命令來查看:
$ strings strings
會印出非常多無意義字串,我們用 grep 篩選:
grep 這個工具可以在一個或多個檔案中尋找特定形式的字串,
這裡列出幾個常用用法:
grep "xxx" file1
表示在 file1 檔案中尋找 xxx 字串grep "xxx" file1 file2
表示在 file1 與 file2 檔案中尋找 xxx 字串grep "xxx" ./*
表示在目前目錄下所有檔案中尋找 xxx 字串grep -r "xxx" ./*
表示在目前目錄以及所有子目錄下所有檔案中尋找 xxx 字串
$ strings strings | grep "pico"
picoCTF{5tRIng5_1T_827aee91}