最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

linux命令行bandit使用練習(xí)實戰(zhàn)

 更新時間:2023年08月18日 10:19:03   作者:goblin_pitcher  
這篇文章主要為大家介紹了linux命令行bandit使用練習(xí)實戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

linux命令很久沒用了,最近重新復(fù)習(xí)一下,找到了一個wargames系列游戲,可以按照要求進行相關(guān)命令行操作,從而通關(guān)游戲,先從Bandit開始

Level 0~3 (ls)

按要求連接bandit.labs.overthewire.org,端口號2220

ssh bandit0@bandit.labs.overthewire.org -p 2220
 password: bandit0

Level 1~2僅需cd到對應(yīng)文件夾,cat查看即可,Level3需要查看隱藏文件,ls -a找到隱藏文件即可。

密碼如下:

lv1: NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL
lv2: rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi
lv3: aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiG
lv4: 2EW7BBsr6aMMoJ2HjW067dm8EgX26xNe

Level 4~7 (grep + find)

Level 4 查找 human-readable文件

這里密碼是/^[0-9a-zA-Z]$/格式,因此grep過濾內(nèi)容,命令如下:

grep -rE "^[0-9a-zA-Z]+$" ./inhere/

Level 5~7條件查找過濾

level5條件如下:

  • human-readable
  • 1033 bytes in size
  • not executable

按過濾的效率,先對比size,再過濾不能執(zhí)行的,最后用grep過濾內(nèi)容,命令如下:

find ./inhere/ -type f -size 1033c ! -executable -exec grep -rE "^[0-9a-zA-Z]+$" {} +

level6過濾條件如下:

owned by user bandit7

owned by group bandit6

33 bytes in size

命令如下(因為是練習(xí)題,所以換成管道的寫法,實際上這里用這種寫法效率并不高):

find / -type f -size 33c -user bandit7 -group bandit6 | xargs -I{} grep -rE "^[0-9a-zA-Z]+$" {}

但這樣又有一個問題,打印內(nèi)容中大量Permission denied,這是因為find從根目錄開始找,會找到很多無權(quán)訪問的文件,因此需要將錯誤重定向,寫法如下:

find / -type f 2>>/dev/null -size 33c -user bandit7 -group bandit6 | xargs -I{} grep -rE "^[0-9a-zA-Z]+$" {}

這里2>>/dev/null 是一種重定向操作符,它將標(biāo)準錯誤(stderr)輸出重定向到 /dev/null 設(shè)備。 /dev/null 是一個特殊設(shè)備文件,它會將所有寫入它的數(shù)據(jù)丟棄掉,不做任何處理,如果指向的是具體的文件,錯誤將會被寫入該文件中,可用于錯誤日志。

level7過濾條件如下:

  • in data.txt
  • next to the word millionth

直接上手,寫的命令如下

grep "millionth.*" ./data.txt

但這種寫法輸出是millionth xxxxx,雖然可以得到密碼,但我們其實僅需要密碼部分,更精準的寫法如下:

grep "millionth.*" ./data.txt | cut -f 2
# or
grep -oP "millionth\s+\K.+" ./data.txt

前一種寫法代表將查找結(jié)果分割,獲取第二列。后一種寫法是獲取正則的捕獲組,grep -E的正則貌似沒法獲取捕獲內(nèi)容,而-p采用Perl的正則語法,\K獲取捕獲組,配合-o輸出捕獲組

lv5: lrIWWI6bB37kxfiCQZqUdOIYfr6eEeqR
Lv6: P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU
lv7: z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S
lv8: TESKZC0XvTetK0S9xNwm25STk5iWrBvP

Level8~ 12(awk uniq sort tr..)

level8 查找不重復(fù)的行

題目要求在data.txt中找到唯一不重復(fù)的行。

因為linux命令不熟,所以一上手就想著用awk解決問題,思路比較簡單,先用一個cache統(tǒng)計每行字段的出現(xiàn)次數(shù),再從cache中找到count為1的字段,代碼如下:

awk '{
    cache[$0] = cache[$0] + 1;
} END {
  for(s in cache) {
    if(cache[s]==1) {
      print s
      exit
    }
  }
}' ./data.txt

但看題目下面的提示,提到了uniqsort,查看uniq文檔,雖然uniq可以統(tǒng)計詞頻,甚至直接顯示僅出現(xiàn)一次的行,但當(dāng)重復(fù)的行并不相鄰時,uniq 命令是不起作用的,這樣設(shè)計很好理解,若uniq可以處理不相鄰的重復(fù)字段,那必然需要對整個文件字段進行緩存,這種操作顯然是不太有利于流文件的處理,這種原子級的命令應(yīng)優(yōu)先考慮性能,功能可以通過命令之間的組合實現(xiàn)。因此要先用sort去對內(nèi)容進行排序,最終代碼如下:

sort ./data.txt | uniq -u

level9 在文件中密碼

密碼的條件:

  • 密碼前面有幾個"="
  • 密碼是human readable的

不難寫出如下代碼:

grep -aoP "={2,}\s*\K[0-9a-zA-Z]+" ./data.txt

這里先要給grep加上-a指令符,因為data.txt中有二進制內(nèi)容

Level 10密碼經(jīng)過了base64加密

base64 -d ./data.txt

Level 11 內(nèi)容解碼

這里題目比較難理解,所有字母旋轉(zhuǎn)了13個位置,但通過cat ./data.txt查看文檔,會發(fā)現(xiàn)文檔內(nèi)容如下:

Gur cnffjbeq vf WIAOOSFzMjXXBC0KoSKBbJ8puQm5lIEi

根據(jù)前面幾題的結(jié)果,比較容易猜測前三個單詞是The password is, 數(shù)字對的上,那么規(guī)則也比較好猜了,就是將a-z形成一個環(huán)形鏈表,這里的旋轉(zhuǎn)指的是旋轉(zhuǎn)環(huán)形鏈表的位置,注意這里說的是字母而非數(shù)字

用awk實現(xiàn),代碼如下:

awk '
  BEGIN {
    for(i=65;i<=122;i++) {
      ord[sprintf("%c", i)]=i
    }
  }
  function transform(str, offset) {
    cache=""
    len=length(str);
    for(i=1;i<=len;i++) {
      w=substr(str,i,1);
      word=w
      if(match(w,/[a-zA-Z]/)){
        n=ord[w]
        start=97;
        end=122;
        if(n>=65 && n<=90) {
          start=65;
          end=90;
        }
        count=n - offset;
        if(count<start) {
          count=end + (count-start + 1)
        }
        word=sprintf("%c", count)
      }
      cache=sprintf("%s%s", cache, word)
    }
    return cache
  }
  {
    offset=13;
    str=$0;
    transStr=transform(str, offset)
} END {
  print transStr
}' ./data.txt

awklinux命令不熟悉的人比較友好,但這么實現(xiàn)實在太長了。。。

關(guān)于awk腳本

一開始實現(xiàn)這段腳本的時候,以為awk后面接的腳本字符串,被awk解釋器解析完之后會轉(zhuǎn)換成shell或者c語言執(zhí)行,所以下意識感覺sprintf基本規(guī)則和printf類似,因此字母轉(zhuǎn)ASCII碼想著通過word=sprintf("%d", "a")實現(xiàn),但最后打印出來word是0。仔細一想awk解釋器之所以是解釋器,而不是編譯器,是因為它并不會走完整的解析->遍歷->編譯的流程,應(yīng)該是邊解析邊執(zhí)行的,遇到sprintf或許會將其解析為printf行為,但遇到參數(shù)%d后,下一個參數(shù)走的應(yīng)該是走的整數(shù)類型的解析,或許就是這里將非整數(shù)類型的對象直接轉(zhuǎn)換成0了。

tr命令

用命令的話,tr命令可進行替換,思路差不多,先獲取偏移后的字符串,再進行替換。。

cache=$(echo {a..z} | tr -d " ");
printf -v cache "${cache:13}${cache:0:13}";
cacheUpper=$(echo $cache | tr 'a-z' 'A-Z');
tr "[a-z][A-Z]" "[$cache][$cacheUpper]" < ./data.txt;

 lv9: EN632PlfYiZbn3PhVK3XOGSlNInNE00t
lv10: G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s
lv11: 6zPeziLdR2RKNdNYFNb6nVCKzphlXHBM
lv12: JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv

以上就是linux命令行bandit使用練習(xí)實戰(zhàn)的詳細內(nèi)容,更多關(guān)于linux命令行bandit的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Shell腳本編程中常用的數(shù)學(xué)運算實例

    Shell腳本編程中常用的數(shù)學(xué)運算實例

    這篇文章主要介紹了Shell腳本編程中常用的數(shù)學(xué)運算實例,包含最基本的加減乘除,還有質(zhì)數(shù)、偶數(shù)的判斷等,需要的朋友可以參考下
    2014-06-06
  • rhel5.7下安裝gearmand及啟動的方法

    rhel5.7下安裝gearmand及啟動的方法

    這篇文章主要介紹了rhel5.7下安裝gearmand及啟動的方法,需要的朋友可以參考下
    2014-07-07
  • Shell中特殊字符的用法總結(jié)大全

    Shell中特殊字符的用法總結(jié)大全

    這篇文章主要給大家總結(jié)了關(guān)于Shell中特殊字符的相關(guān)資料,文中包括分好、&、#、!、$、大于號、單雙引號等等一系列特殊字符的用法,通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-08-08
  • Shell腳本中if條件判斷的寫法實例

    Shell腳本中if條件判斷的寫法實例

    在寫shell腳本的過程中,用到了if else的寫法,突然有多個參數(shù)需要判斷,那么就想到了if else if的用法,這篇文章主要給大家介紹了關(guān)于Shell腳本中if條件判斷寫法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • shell模糊匹配與正則詳解

    shell模糊匹配與正則詳解

    這篇文章主要介紹了shell模糊匹配與正則詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • linux 中的atq命令

    linux 中的atq命令

    atq命令顯示系統(tǒng)中待執(zhí)行的任務(wù)列表,也就是列出當(dāng)前用戶的at任務(wù)列表。下面通過本文給大家分享linux 中的atq命令,感興趣的朋友一起看看吧
    2017-09-09
  • bash腳本中$符號的具體使用

    bash腳本中$符號的具體使用

    $符號主要用于訪問變量的值、參數(shù)擴展、算術(shù)運算以及命令替換等,本文主要介紹了bash腳本中$符號的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • ubuntu修改terminal終端的主機名的實現(xiàn)方法

    ubuntu修改terminal終端的主機名的實現(xiàn)方法

    這篇文章主要介紹了ubuntu修改terminal終端的主機名的實現(xiàn)方法的相關(guān)資料,希望通過本文能幫助大家,需要的朋友可以參考下
    2017-08-08
  • Linux中mysqldump命令實例詳解

    Linux中mysqldump命令實例詳解

    mysqldump是mysql數(shù)據(jù)庫中備份工具,用于將MYSQL服務(wù)器中的數(shù)據(jù)庫以標(biāo)準的sql語言的方式導(dǎo)出,并保存到文件中。今天通過本文給大家介紹mysqldump命令實例詳解,一起看看吧
    2016-12-12
  • Spark-shell批量命令執(zhí)行腳本的方法

    Spark-shell批量命令執(zhí)行腳本的方法

    今天小編就為大家分享一篇Spark-shell批量命令執(zhí)行腳本的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論

安阳市| 四子王旗| 太保市| 普安县| 加查县| 怀宁县| 郓城县| 屏南县| 衡阳市| 靖安县| 白山市| 高尔夫| 景谷| 泽普县| 观塘区| 沽源县| 阿克陶县| 西藏| 昭通市| 湖口县| 嘉定区| 昌吉市| 金门县| 焉耆| 清流县| 华亭县| 南宁市| 临漳县| 湘乡市| 神木县| 冷水江市| 金乡县| 南通市| 凌云县| 澳门| 霍城县| 常山县| 阳西县| 黔东| 莱芜市| 永州市|