# Web Note ###### tags: note * [Class2](#Class2) * [Class3](#Class3) ## 好用的東東 * https://curl.trillworks.com * 自動分析網站技術的 browser extension: https://www.wappalyzer.com/ * [kaibro cheetsheet](https://github.com/w181496/Web-CTF-Cheatsheet) : 各種 SQL 結構 * [DNS tool](https://github.com/ettic-team/dnsbin): 可自己架起一個 DNS server * https://sqlmap.org/: 可幫助 read/write file * [beeceptor](https://beeceptor.com/): 可幫忙接 HTTP request ## SQL instruction * concat(str1, str2): 字串拼接 * exists * ascii() * length() * substr(,,) (註: 每個 sql 不同) ## 思路   ## Javascript * eval(string) : 將 string 作為腳本執行 * 一句話木馬 : `<?php eval($_GET['code']); ?>` ## Local File Inclusion (LFI) * include server 上的 某個檔案,類似於 python import,可用於 leak source code * 指令 : `include($_GET['module'])` * phpinfo : * PHP filter: [PHP Manual](https://www.php.net/manual/en/wrappers.php.php) 可查詢相關指令 指令: `php://filter/` + parameter([read](https://www.php.net/manual/en/filters.php), resource...)  ### LFI to Remote Command/Code Execute(RCE) * access.log / error.log 可讀: 部分內容可控,就算其他部分有大量垃圾也沒關係,只要其中包含`<?php>`,就可以執行一句話木馬。 * /proc/self/environ 可讀: 將 payload 塞在 user-agent 內,然後 include 它 * 控制 session 內容: * PHP session 內容預設以檔案儲存 * `include /tmp/session_{session_name}` * session.upload_progress: 預設開啟的 config 參數 → session.upload_progress = on #enabled by default 其本意為,當要上傳一個很大檔案時,會有個 upload_progress 的 session 來儲存當前上傳進度。黨在 header 帶上此資訊,可以強迫其開一個 temp file,並且可以得知其位置,且內容部分可控。 * phpinfo * PHP filter : 2022年初提出的黑魔法 ## Injection 使使用者輸入變成指令、程式碼、查詢的一部份,改變原先程式預期行為 ### Basic * Code Injection: `+system (Code Injection)+` * PHP * eval * assert * Python * exec * eval * Javascript * eval * (new function(**code**))() * setTimeout / setInterval * Command Injection: ;$(Command) \`injection\`  ===  ===  * Command substitution  * Bypass some strict 限制匹配  不一定需要空格  ## SQL Injection: * SQL Injection' or 1=1  ### Data Exfiltration * Union Based * 透過 Union 合併取得聯集(column sizes 需一樣) 透過 select 不存在的 ID 可使命令正確,但只顯示出 Union 的結果    * 如何取得 Table Name & Column Name??  * Blind 資料不會被顯示出來,只能得知 Yes or No e.g. 有內容/無內容、成功/失敗 常見於: 登入、檢查 id 是否被使用過 * Boolean Based  操作範例: * 二分法測出 User name 長度  * 爆破出 User name (註: mid() 為 SQL 中 substr())  * Time Based 透過時間差來判斷,若比對正確就 sleep,不對則否  * Error-Based 指令報錯時會顯示出來,可以透過 trick 錯誤訊息顯示資料。通常條件較為嚴苛,因較少指令會顯示錯誤訊息,以下為常見會顯示錯誤訊息的指令:  * Out-of-Band 透過讓 DB 發起 DNS request or HTTP request 將資料往外傳。  ### 檔案操作  ## Template Engine 注入 實作 Web 時通常會將資料與使用者介面分離,也就是 → Template + render() → HTML介面 ### Server Side Templase Injection(SSTI) 當 server side template 為可控時,可做一些 server 非預期的行為  以 jinja2 為例(Python)     Dump object 的 subclasses 找出可用 function  若可以找到來自 OS 的 class,就可以 access global variable  其它 Template  ## Class2 ### Cookie 當 Server 想存資料在 Client side 的時候,會回傳 set-Cookie 這個 Header,瀏覽器收到後便會將此資料存在 local memory 內  ### Same Origin Policy(SOP): 同源政策 * 同 protocol,同 host,同 port-才可互相存取資源 * EX: http vs https 為不同的 protocol * EX: google vs twitter 為不同的 domain * Cross-Origin: 不同源情況下 * Cross-origin read : Disallowed ✖ * fetch / XMLHttpRequest * 讀取 iframe 內容 * Cross-origin write : Allowed ✔ * Link * Redirect: 轉跳 * Submit form: POST request 內 action 可以寫另一個 domain * Cross-origin embedding : Allowed ✔ * Javascript <script src="..."> </script> * CSS <link rel="stylesheet" href="..."> * image <img> * media <video>, <audio> * 可嵌入但讀不到 ### Cross-site Resquest Forgery(CSRF) 偽造 Cross-site 請求 * CSRF 防禦機制 * CSRF token(放在 cookie?),發送請求時同時送出 ### Clickjacking * button opacity=1 讓使用者看不見,~~太狠了這樣我怎麼看片~~   * 防禦機制 * X-Frame-Options * CSP - frame-ancestors * Cookie - SameSite ### XSS(Cross-site Scripting) * Def: 輸入欄位若沒做限制可直接修改到 HTML,使輸入的一部分被當成 script 執行     * Category * Reflected XSS * Stored XSS * DOM-based XSS ## Class3
×
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