iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 3
3
Security

CTF入門學習系列 第 3

[Day3]成為工具小達人的開始

經過了昨天的文章之後
大家應該對linux的操作慢慢的有些了解了吧

那今天我們要繼續來認識更多更多的工具
讓我們一起成為工具小達人!

我們繼續來看下一道題目!

https://ithelp.ithome.com.tw/upload/images/20181018/20112085GsHVVkhgqc.png

這題目主要是希望各位學會如何讓你比較方便遠端登入你的電腦(植入後門X
平常我們要遠端去控制電腦的時候
通常都會輸入帳號密碼
但明明兩台都是自己的電腦
為什麼要這麼麻煩每次都輸入帳密呢!!!!
在linux裡面有個好東西
可以讓自己常用的電腦紀錄在白名單裡面
只要有這個白名單
以後登入就可以不需要經過認證
那讓我們來開始實做吧

https://ithelp.ithome.com.tw/upload/images/20181018/20112085G7qf94tVFb.png

這時候 我們需要用ssh-keygen來產生"白名單"的金鑰
輸入之後後面全部按enter直接跳過即可
最後就會產生出屬於這台電腦的專屬金鑰
而這個金鑰
會儲存在.ssh/id_rsa.pub這個檔案裡面
我們可以用cat去看到這個檔案的內容
只要我們把這個內容
複製到我們目標電腦上的特定檔案內
未來我們不管什麼時候(偷偷)連進去都不需要密碼

https://ithelp.ithome.com.tw/upload/images/20181018/201120851IudIvblIx.png

這時候呢
我們就到目標電腦一樣的資料夾內
自己創一個authorized_keys的檔案
並且將剛剛的內容整段複製進去並存檔
最後我們再用我們原本的電腦來連線試試看~

https://ithelp.ithome.com.tw/upload/images/20181018/20112085e4T6mzNHUI.png

這時候就會發現!!
我們不需要密碼就可以連進去了!!!
當然遠端連線有非常多的用途
這個部份只是讓我們先了解我們能夠有機會不取得對方密碼就讓自己植入後門


https://ithelp.ithome.com.tw/upload/images/20181018/20112085OK8zAWeTrb.png

這一題他告訴我們
我們答案就在伺服器提供的linux虛擬機裡的
/problems/you-can-t-see-me_3_1a39ec6c80b3f3a18610074f68acfe69目錄底下
這目錄看起來真的很嘲諷
那我們就到他的shell去瞧一瞧
到了這個目錄下 理所當然用了ls先去看看檔案
結果發現被騙了!
一個檔案都沒有
接著又試試ls -al
會發現得到的結果像下面一樣....
為什麼會有資料夾名字設成 '.'
對電腦來說 .是指同一層目錄的意思
所以不論你再怎麼用cd去讀取這個目錄
都還是會不停的出現這個畫面

https://ithelp.ithome.com.tw/upload/images/20181018/201120851UXPi6ZUty.png

當時我解題的時候還以為
他跟windows資料夾一樣還有分長名跟短名
試著想要找出他另一個名字去存取
後來發現grep有個超好用的方法
就是在後面加上-nr
他可以把整個目前目錄的所有子目錄和檔案都翻過一次
然後把你要的字串給找出來

https://ithelp.ithome.com.tw/upload/images/20181018/20112085eRbJJ9Cnl9.png

那我們就來試試
果不其然馬上就找到了這串答案
有時候在打CTF的時候要嘗試用各種不同的解題方法
一種題目可能會有非常多種解法
不一定要拘泥在自己會的或可能懂的東西上
google一下很容易有新發現

今天的最後
我們來看看下一題,這是一個訓練邏輯思考能力的題目

https://ithelp.ithome.com.tw/upload/images/20181018/201120850t28JLGjya.png

在這題目裡面 他附了一隻程式的原始碼
然後叫我們去線上的linux系統裡面執行他
一開始我們先把程式碼打開來看看

https://ithelp.ithome.com.tw/upload/images/20181018/20112085i57hYT8rLV.png

大致上可以看得出來
他打開一個flag.txt的檔案
再打開一個permission.txt的檔案
如果permission檔案裡面的字串是yes
他就將flag.txt的檔案內容顯示給你

再來我們實際到那個資料夾看看

https://ithelp.ithome.com.tw/upload/images/20181018/20112085Qkwb6oWnoe.png

我們可以看到剛剛的flag.txt和那隻執行檔
到這裡大家可能會想說
咦? 那不就差一個permission檔案就可以了嗎!?
但實際上用vi試著在這資料夾裡面新增一個內含yes字串的permission檔案
會發現我們在這資料夾內沒有新增檔案的權限

那這時候我們再回去看看題目
仔細觀察可以發現
他的permission是用相對路徑
而flag.txt卻是使用絕對路徑
這時候我們就可以想到
那如果我把這隻執行檔搬到其他我可以新增檔案的目錄去
就可以解決這問題了

那我們就馬上來尋找可以新增檔案的資料夾
在linux的跟目錄底下
通常會有個tmp資料夾
在這裡面基本上沒什麼權限的限制
那我們就試著把檔案搬過來試試

結果!!!
我們把檔案複製一份出來後
他卻說我們沒有權限讀取flag.txt了
這時候我們回頭去看看剛剛這個檔案的權限可以發現
只有創建檔案的這個user才有權限去讀取他
但我們自己複製出來的程式
創建者卻是自己
導致權限不符
這時候苦惱了
我當時候嘗試著用各種方法去改變自己的權限
卻發現自己其實是沒有權限改變權限的
直到最後
我突然想到windows中的捷徑
若是將捷徑移到想要的位置
是不是就能保留原始檔案的權限
又能改變他的相對路徑

https://ithelp.ithome.com.tw/upload/images/20181018/201120851ACiO8OQnZ.png

最後我用了cp -s這個指令
將那隻程式的捷徑指到tmp資料夾去
再從tmp資料夾執行這隻檔案
就順利的將答案拿到手了

其實解CTF就像是腦筋急轉彎
但是是需要大量基礎的腦筋急轉彎
越後面的題目越能看得出來
絕對不是簡簡單單的思維就可以解決這些問題
甚至有很多問題是自己這輩子從來沒看過也從來沒想過的
但這時候就要發揮自己的想像力
用盡各種手段將答案拿到手


上一篇
[Day2]CTF基礎知識(續)
下一篇
[Day4]執行檔資料輸出分離
系列文
CTF入門學習30

尚未有邦友留言

立即登入留言