Cybersecurity[1] = ## Web ### 前後端 - 可以把前端想像成點餐 後端想像成出餐 - 使用者理所當然只能接觸到點餐的部分 - 後端負責處理各種請求 #### 前端 - 所有東⻄都會直接顯⽰給使⽤者 - HTML、CSS、JS - 以ctf來說很常可以從js裡面看~~或通靈~~出你需要找的東西 #### 後端 - 我們去餐廳消費,我們是顧客(Client)、餐廳服務生是提供服務端(Server) - 當我們對服務生提出需求說想要喝水(Request),他就會幫我們拿水過來回應我們的需求(Response)  - 背後運作的伺服器與程式 處理資料與邏輯 - 處理使用者的請求(ex. 登入、查詢資料...) - 連接資料庫存取資料 - 動態顯示網頁資料 #### 網頁伺服器 Web Server - 軟硬體: - 硬體指實體機器 - 軟體指用來接收與回應請求的程式 - 靜態網站 Static Web Server: - 回傳固定檔案(HTML、圖片、CSS、JS) - 每次打開的內容都一樣 - 動態網站 Dynamic Web Server: - 有程式處理邏輯 - 可根據使用者行為或資料庫內容回傳不同結果 - 例:登入頁、購物車、留言板 #### 資料庫 Database - 儲存與管理網站的各種資料(帳號、密碼、商品、留言...) - 管理資料、管理權限、控制效能與備份資料 - 後端透過 SQL 指令向資料庫查詢、寫入、更新、刪除資料 ### HTTP/HTTPS - 超文本傳輸協議 **H**yper**t**ext **T**ransfer **P**rotocal - 定義如何向伺服器請求資料 - 適用於用戶端-伺服器通訊的協定或一組通訊規則 - HTTP: - 開放系統互相連線 (OSI) 網路通訊模型中的應用層通訊協定 - 定義了多種類型的請求和回應 - HTTP請求: - GET:取得資料,例如打開網頁、查資料 - POST:送出資料,例如表單提交、登入操作 - HEAD、PUT、DELETE... ``` GET / HTTP/1.1 Host: www.google.com ``` - [HTTP回應](https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Reference/Status#%E8%B3%87%E8%A8%8A%E5%9B%9E%E6%87%89): - 資訊回應(100~199) - 成功回應(200~299) - 重新導向訊息(300~399) - 用戶端錯誤回應(400~499) - 伺服器錯誤回應(500~599) - HTTPS - 必須從獨立的憑證認證機構 (CA) 取得 SSL/TLS 憑證 - SSL/TLS憑證:一種數位物件,允許系統驗證身分並隨後使用 Secure Sockets Layer/Transport Layer Security 協定,與另一個系統建立加密網路連線 - Web 瀏覽器上的掛鎖圖示和綠色地址欄 - 瀏覽器網站地址上的 https 前綴 - 建立加密連線後 只有用戶端和 Web 伺服器才能看到傳送的資料 - 伺服器和 Web 瀏覽器可交換加密或混亂的資料 - HTTP Vs. HTTPS - HTTP - 沒有對傳輸資料做加密 - HTTPS(HTTP secure) - 允許對傳輸資料進⾏加密 - HTTPS 需要向憑證頒發機構申請相關憑證  --- ### 隱藏檔案與伺服器設定檔 - robots.txt - 指示搜尋引擎爬蟲哪些網頁可抓取、哪些不可抓 - 位置:網站根目錄/robots.txt - 可能藏有不想被外界看到的隱藏路徑或檔案 - ctf常見線索來源 - 來看看[IKEA](https://www.ikea.com/robots.txt) - .htaccess - Apache目錄級設定檔 - 控制權限 重寫網址 密碼保護 - 設定規則若被公開 可能洩露進攻方向或特殊目錄資訊 - .htpasswd - 與.htaccess配合的密碼檔 - 存放帳號與加密密碼 - 能嘗試破解登入密碼 - .git - Git版本控制目錄 - 所有版本紀錄和原始碼 - 可下載整個程式碼 挖掘漏洞和敏感資訊 - .DS_Store - MacOS自動生成的資料夾設定檔 - 可能透露目錄結構或隱藏資訊 --- ### F12 - 使用方式 - 在網頁按鍵盤上的F12 - 在網頁點右鍵 Inspect - 元素(Elements) - 查看、編輯網頁的HTML結構 - 查找隱藏文字、註解、元素屬性 - 可以修改 但僅對當前的頁面渲染生效 - ctrl(cmd)+f找flag 好用 - 控制台(Console) - 顯示js錯誤、輸出訊息 - 可輸入js指令試驗 - 控制台日誌:js中用console.log()函數輸出的日誌信息會在console顯示 - 源代碼(Sources) - 查看到當前網頁的所有源文件 - 有時候flag也會在這(同理Elements - 網絡(Network) - 監控網頁載入的所有請求(HTML、CSS、JS、API請求、圖片)並進行回放 - 查看各個資源內容與回應數據 - 另存為文件進行分析 - 開preserve log:頁面重新整理或跳轉時不會清除已經捕捉到的網路請求記錄 - 預設會在你刷新頁面或切換頁面時把之前的請求清空 - 應用面板(Application) - 管理網站資料(ex. Cookie、LocalStorage、SessionStorage) - Cookie: - 瀏覽器用來儲存網站資料的一種小型文字檔 - 記錄狀態、設定 - 造訪網站 伺服器會用HTTP回應給瀏覽器Set-Cookie指令 - 之後同一網站的請求就會自動附帶那個Cookie - 可以修改Cookie內容(ex. user=admin)來嘗試權限提升 - 修改後刷新頁面 --- ### Burp Suite - [愛水母](https://slides.com/jellyyfish/ctf-web-one#/6/12) --- ### 題外話 - base64 - ctf很愛用的編碼方式 - 一種將二進制數據表示為ASCII字符的編碼方式 - 目的:將二進制數據轉換為文本數據 以便在文本協議中傳輸 - 後面很多時候會有=或==,很好認 - ~~看久了會有一種感覺他是base64~~ - ex. ```fgisc -> Zmdpc2M=``` --- ## 題單 ### F12 - [Inspect HTML](https://play.picoctf.org/practice/challenge/275?category=1&page=1) - [Includes](https://play.picoctf.org/practice/challenge/274?category=1&page=1) - [Unminify](https://play.picoctf.org/practice/challenge/426?category=1&page=1) - [Local Authority](https://play.picoctf.org/practice/challenge/278?category=1&page=1) - [where are the robots](https://play.picoctf.org/practice/challenge/4?category=1&page=2) - [Insp3ct0r](https://play.picoctf.org/practice/challenge/18?category=1&page=2) - [WebDecode](https://play.picoctf.org/practice/challenge/427?category=1&page=1) - [findme](https://play.picoctf.org/practice/challenge/349?category=1&page=3) - [dont-use-client-side](https://play.picoctf.org/practice/challenge/66) - [login](https://play.picoctf.org/practice/challenge/200) - [Scavenger Hunt](https://play.picoctf.org/practice/challenge/161?category=1&page=2) ### Cookie - [Cookie Monster Secret Recipe](https://play.picoctf.org/practice/challenge/469?category=1&page=1) - [logon](https://play.picoctf.org/practice/challenge/46?category=1&page=2) - [Cookies](https://play.picoctf.org/practice/challenge/173?category=1&page=1) - [Power Cookie](https://play.picoctf.org/practice/challenge/288) ### Burp Suite - [IntroToBurp](https://play.picoctf.org/practice/challenge/419) - [picobrowser](https://play.picoctf.org/practice/challenge/9?page=1&search=picobrowser) - [GET aHEAD](https://play.picoctf.org/practice/challenge/132?page=1&search=GET%20aHEAD) --- ## References - https://slides.com/ioker - https://slides.com/jellyyfish - https://medium.com/appworks-school/網頁新手入門-初探網頁架構和前後端語言-a88a5dc86ee3 - https://hackmd.io/@nisra/B1SrsmrJY - https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Reference/Status - https://web4theme.com/article/chrome%E7%80%8F%E8%A6%BD%E5%99%A8f12%E7%B6%B2%E9%A0%81%E9%96%8B%E7%99%BC%E5%B7%A5%E5%85%B7%E6%95%99%E5%AD%B8.html - https://pala.tw/frontend-backend-basic/ - https://tw.alphacamp.co/blog/database-intro - https://blog.csdn.net/cunjiu9486/article/details/109071899
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up