<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>yuna0x0 :3</title><description>yuna0x0&apos;s website :3</description><link>https://yuna0x0.com/</link><item><title>Happy Sugar Life 讀後心得</title><link>https://yuna0x0.com/posts/2019-happy-sugar-life-thoughts/</link><guid isPermaLink="true">https://yuna0x0.com/posts/2019-happy-sugar-life-thoughts/</guid><description>家庭價值觀的偏差導致現代社會的三種問題</description><pubDate>Mon, 14 Oct 2019 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;本文投搞「全國高級中等學校閱讀心得寫作比賽 - 1081015 新北」獲得特優，是一個當時我在高中寫的讀後心得w&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;作品標題 (讀後心得標題)&lt;/h2&gt;
&lt;p&gt;家庭價值觀的偏差導致現代社會的三種問題&lt;/p&gt;
&lt;h2&gt;閱讀書名&lt;/h2&gt;
&lt;p&gt;Happy Sugar Life：幸福甜蜜生活 7&lt;/p&gt;
&lt;h2&gt;圖書作者與內容簡介&lt;/h2&gt;
&lt;p&gt;鍵空富燒，日本漫畫家。從事同人團體「子旅再生」時別名為「鍵空富焼」。&lt;/p&gt;
&lt;p&gt;故事主要講述女高中生松坂砂糖，因其叔母自幼就教導她對於愛的不正確價值觀，而導致她無法理解「愛」為何物。直到砂糖在路上偶遇神戶鹽這位小學女生之後才了解到愛是什麼，並決定與鹽一起生活，而且為了守護這份感情甚至不惜一切，做出欺騙、恐嚇甚至殺人在內的行為，認為「只要是為了守護愛的話，無論做出什麼事情都可以被原諒」。&lt;/p&gt;
&lt;h2&gt;內容摘錄&lt;/h2&gt;
&lt;p&gt;妳真的要生下這個小寶寶嗎？和自己不喜歡的人結婚的我，該向誰宣誓我的愛呢？究竟該向誰呢？(p. 42-43)&lt;/p&gt;
&lt;p&gt;「愛」是看不見的事物。而且形式因人而異，光輝也不相同，但是誰都能得到屬於自己的愛。體悟了愛的瞬間，內心就會獲得滿足。(p. 49-50)&lt;/p&gt;
&lt;p&gt;被「愛」包圍的我，過得十分幸福。但是為什麼？在我的內心深處，卻仍然空著一個大洞呢？(p. 56)&lt;/p&gt;
&lt;p&gt;曾經有人說過..「心是一只瓶子」。雖然能填入許許多多的東西，但一旦破裂了，那個人也會隨之毀滅。(p. 117)&lt;/p&gt;
&lt;p&gt;曾經有人說過..愛，是種生存本能。人是為了保護自己，才會愛上某個人。但是，其實不是這樣的。若人是為愛…而活，為愛而死呢？(p. 170-171)&lt;/p&gt;
&lt;h2&gt;我的觀點&lt;/h2&gt;
&lt;p&gt;在《Happy Sugar Life》故事中所表現出的劇情內容雖極為誇張化，但其中的事件成因、人與人的衝突和結果卻是真真實實的到現在，都還持續發生在我們周遭的人事物之間，因此本作品值得讓我們更加深思的探討其中的故事與真實社會和人際問題的關係。&lt;/p&gt;
&lt;p&gt;「《Happy Sugar Life》深切地將親情、友情、愛情與社會之間的互相矛盾與衝突描寫出來，並淋漓盡致的表現真實世界中所會遭遇到的問題。」&lt;/p&gt;
&lt;p&gt;我將本作從這三個主要要探討的社會及人際關係問題進行切入：「原生家庭價值觀扭曲導致犯罪問題」、「職場和校園中的霸凌與性騷擾問題」、以及「對責任的錯誤認知」。&lt;/p&gt;
&lt;p&gt;人並非生而就能知道正確的道德及價值觀念，從美國心理學家哈利·蘇利文所提出的心理學理論中就可得知，我們對於價值觀的認知都是經由重要他人經後天的影響後，讓我們得以在社會化的過程中，習得正確的道德價值觀，劃定正確的自我，而不至於誤入歧途。但很遺憾是有些人的原生家庭價值觀本來就有些許問題，而導致在教育下一代的時候，讓自己的孩子學習到的是錯誤或有問題的價值觀，進而導致自己的孩子走上偏差的道路，之後難以改邪歸正，因為其錯誤的觀念早已深植其心中成為自我認同。而從孩子價值觀偏差的開始，就是一步一步的在提升其犯罪的可能性，進而提高社會事件的發生機率。在故事中，砂糖自幼的價值觀早已因為家庭教育的問題而走上偏差之路，導致她對於「愛」的定義是完全無法理解或是在嘗試理解之後自己做下了錯誤的理解，從而導致她為了守護和鹽的感情而不惜一切，連殺人這種事情都覺得可以做，而且殺人後完全沒有任何的悔念或罪孽感，認為她做的事情是完全可以被大家接受的，這是多麼可怕的一件事情。從這就可得知，家庭教育的觀念正確與否對於犯罪率的影響是相當深遠且必須重視的，但往往家庭教育卻是最難以被一般社會大眾所監督的，因此政府社會服務相關機構也應介入協助監督才行。&lt;/p&gt;
&lt;p&gt;再來要提提職場和校園中的霸凌與性騷擾問題，價值觀的偏差同時增加了發生霸凌與性騷擾的可能性，現代職場及校園都極有可能遭遇霸凌與性騷擾，就算現在已經有良好的法律系統可以維護個人權益，但許多受害者因為深怕其會因此丟失這份工作，或是因為缺少證據而沒有辦法向相關單位請求協助，只能讓加害者繼續為非作歹和逍遙法外，並讓更多的人成為下一位被害者，進而助長這個惡性循環，讓它一直持續下去。相信很多人在遭遇職場霸凌和性騷擾時，最後還是都只能忍氣吞聲。因此我認為這個問題也是現代社會需要共同關心和一起幫忙的，如此才能讓被害人從這困境中走出來。&lt;/p&gt;
&lt;p&gt;緊接著，我們來談談對責任的錯誤認知。顯然地，我們都知道犯錯之後要做什麼事情，道歉和改過，但現代人往往拿一個道歉當成擋箭牌，覺得只要說了一句「對不起」之後就負起責任了，之後的什麼事情都跟他沒有關係了，而這種責任的錯誤認知也都是因為家庭價值觀的錯誤而導致。人非聖賢，孰能無過，但言過其行，那就大錯特錯了，因為口頭道歉和真正的承擔事情的責任是完全不同的事情。同時有部分政治人物和企業家認為只要引咎辭職，就已經用個人責任向社會大眾妥協了，但實質上卻是完全在逃避集體責任，以個人責任來蒙蔽該負的集體責任，讓機構內部持續腐敗下去，最終將導致敗亡。在故事中砂糖為了守護和鹽這份純真的感情，不僅殺人還放火，到最後寧願死也不願意讓鹽的哥哥將鹽帶回去，使其團圓，以愛為名卻逃避了該對社會所負的責任，我個人認為是不對的。&lt;/p&gt;
&lt;p&gt;最後我認為《Happy Sugar Life》中除了有我在上面所討論的三個社會及人際關係問題外，其中還有討論到朋友與愛情間的抉擇、到底該不該幫朋友、真愛的意義、愛情的糾結與欺騙、以及為了愛而付出的意義與價值等等議題，都是值得讓我們用心去好好思考的。&lt;/p&gt;
&lt;h2&gt;討論議題&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;為了守住自己的感情，而向另一半撒了謊，你認為這麼做是對的嗎？為什麼？&lt;/li&gt;
&lt;li&gt;如果有人介入了自己的愛情世界，就該將對方消滅嗎？&lt;/li&gt;
&lt;li&gt;為了真愛而犧牲一切有意義嗎？無論這社會怎樣看我，只要是為了真愛做什麼就是對的嗎？&lt;/li&gt;
&lt;li&gt;如果你只能選擇朋友或愛情其中一個而必須拋棄另一個，你會選擇哪一個呢？為什麼？&lt;/li&gt;
&lt;li&gt;現代的霸凌和性騷擾法規有沒有不完善的地方呢？如果有，能舉例嗎？&lt;/li&gt;
&lt;li&gt;到底該不該幫朋友？會不會幫忙後反而自己惹事上身呢？&lt;/li&gt;
&lt;li&gt;道歉、請辭或自殺之後就沒自己的事了嗎？&lt;/li&gt;
&lt;li&gt;家庭教育的價值觀該如何被社會所共同監督呢？&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>osu!lazer 比賽模式客戶端 使用教學</title><link>https://yuna0x0.com/posts/2019-osu-lazer-tourney/</link><guid isPermaLink="true">https://yuna0x0.com/posts/2019-osu-lazer-tourney/</guid><description>給想要舉辦 osu! 比賽的相關工作人員 (=ﾟωﾟ)ﾉ</description><pubDate>Tue, 03 Dec 2019 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;文章遷移前的發佈網址 (巴哈姆特): https://forum.gamer.com.tw/C.php?bsn=18601&amp;amp;snA=7758&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;osu!lazer 比賽模式 (Tournament Mode) 為現在 osu! World Cup (OWC) 官方直播所使用的客戶端，並透過 &lt;a href=&quot;https://zh.wikipedia.org/wiki/%E8%A1%8C%E7%A8%8B%E9%96%93%E9%80%9A%E8%A8%8A&quot;&gt;IPC&lt;/a&gt; 方式和 &lt;a href=&quot;https://osu.ppy.sh/help/wiki/osu!tourney&quot;&gt;osu!tourney (osu! 比賽模式)&lt;/a&gt; 進行資料連結 (例如: 分數、比賽房間聊天室等...)。&lt;/p&gt;
&lt;p&gt;同時也可配合使用第三方比賽房間管理軟體 &lt;a href=&quot;https://git.cartooncraft.fr/shARPII/script-chan/wikis/About-us/Home&quot;&gt;Script chan (又稱為 osu!tournament)&lt;/a&gt;  管理房間。&lt;/p&gt;
&lt;p&gt;先決條件:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已安裝 osu! (Cutting Edge 版本)，並登入帳號 (去官網下載，就是平常在用的 osu! 客戶端，然後進遊戲切換版本即可)&lt;/li&gt;
&lt;li&gt;已安裝 osu!lazer，並登入帳號 (去這裡下載: https://github.com/ppy/osu/releases)&lt;/li&gt;
&lt;li&gt;擁有 osu!supporter tag (才能啟動 osu!tourney)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;如何進入 osu!lazer 比賽模式客戶端&lt;/h2&gt;
&lt;p&gt;步驟:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在桌面的 osu!lazer 捷徑上按右鍵，點「內容」&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;enter-client-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在目標的最後面加入 &lt;code&gt;--tournament&lt;/code&gt;，並按確定&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;enter-client-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;點兩下 osu!lazer 的捷徑&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;會看到這樣的介面，代表已經進入 osu!lazer 比賽模式&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;enter-client-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;osu!tourney 及 IPC 設定&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;打開 osu!lazer 比賽模式之後還要打開 osu!tourney 並設定 IPC 才能做資料連結，以下是 osu!tourney 的設定方式&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開 osu!，然後將版本換成 Cutting Edge (好像翻作最新版...)，然後重啟並更新&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;tourney-ipc-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;接著退出遊戲，到 osu! 的安裝資料夾 (如果沒有特別更改，通常在 &lt;code&gt;C:\Users\&amp;lt;用戶名稱&amp;gt;\AppData\Local\osu!&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;新增 &lt;code&gt;ipc.txt&lt;/code&gt; 和 &lt;code&gt;tournament.cfg&lt;/code&gt; 這兩個空白文件 (副檔名請注意，可以打開副檔名檢視直接改副檔名比較快)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;tourney-ipc-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開 osu! 後就會進入 osu!tourney 比賽模式，然後就會看到類似這樣的介面 (其餘設定可參照 osu! 官方文件: https://osu.ppy.sh/help/wiki/osu%21tourney)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;tourney-ipc-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;osu!lazer 比賽模式概略介紹&lt;/h2&gt;
&lt;h3&gt;Setup (設定)&lt;/h3&gt;
&lt;p&gt;有這些設定:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IPC 連接確認 (如果顯示 Not Found，請檢查第二部分是否操作正確)&lt;/li&gt;
&lt;li&gt;osu! 帳號登入 (如果還沒登入請按 Change Login 登入，需要 osu! 帳號才能正確獲得圖譜等資料)&lt;/li&gt;
&lt;li&gt;模式選擇&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Team Editor (隊伍編輯器)&lt;/h3&gt;
&lt;p&gt;主要用來整理隊伍跟成員。&lt;/p&gt;
&lt;p&gt;右邊的 Control Panel:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add new: 新增隊伍&lt;/li&gt;
&lt;li&gt;Clear all: 刪除全部隊伍&lt;/li&gt;
&lt;li&gt;Add all countries: 把全部國家的名稱當成隊名都加進去&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;中間的隊伍:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: 隊伍全名&lt;/li&gt;
&lt;li&gt;Acronym: 隊伍縮寫 (會顯示在後面的賽程表和天梯圖)&lt;/li&gt;
&lt;li&gt;Flag: 隊伍國旗 (用國家代號)&lt;/li&gt;
&lt;li&gt;Add player: 新增玩家的 ID 到隊伍&lt;/li&gt;
&lt;li&gt;Delete Team: 刪除該隊伍&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Rounds Editor (回合編輯器)&lt;/h3&gt;
&lt;p&gt;用來整理回合和圖池。&lt;/p&gt;
&lt;p&gt;右邊的 Control Panel:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add new: 新增回合&lt;/li&gt;
&lt;li&gt;Clear all: 刪除全部回合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;中間的回合:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: 回合名&lt;/li&gt;
&lt;li&gt;Description: 回合解釋&lt;/li&gt;
&lt;li&gt;Start Time: 該回合的開始時間&lt;/li&gt;
&lt;li&gt;Best of: 賽制數量&lt;/li&gt;
&lt;li&gt;Add beatmap: 新增圖譜到圖池&lt;/li&gt;
&lt;li&gt;Beatmap ID: 圖譜 ID
(像是圖譜 https://osu.ppy.sh/beatmapsets/813454#osu/1706017 的 ID 就是 &lt;code&gt;1706017&lt;/code&gt;，取最後的數字)&lt;/li&gt;
&lt;li&gt;Mods: 使用的 Mods
(需自行於 &lt;code&gt;C:\Users\&amp;lt;用戶名稱&amp;gt;\AppData\Roaming\osu&lt;/code&gt; 中建立 &lt;code&gt;mods&lt;/code&gt; 資料夾，並將各個 mods 的圖案放到該資料夾當中，最後在這邊輸入檔案名稱即可 (不需副檔名)，檔名可自取。圖案可以直接用 skin 當中的 mods 圖案，也可以自行設計)&lt;/li&gt;
&lt;li&gt;Delete Beatmap: 將該圖譜從圖池刪除&lt;/li&gt;
&lt;li&gt;Delete Round: 刪除該回合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Bracket Editor (賽程天梯編輯器)&lt;/h3&gt;
&lt;p&gt;用來整理賽程比分的天梯圖，在空白處按右鍵來新增對戰，在對戰上按右鍵來設定目前進行中的對戰並連結其他對戰。&lt;/p&gt;
&lt;p&gt;右邊的 Ladder:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Team 1: 該對戰的隊伍 1&lt;/li&gt;
&lt;li&gt;Team 2: 該對戰的隊伍 2&lt;/li&gt;
&lt;li&gt;Round: 該對戰是屬於哪個回合 (和剛剛在 Rounds Editor 中所設定的做對應)&lt;/li&gt;
&lt;li&gt;Losers Bracket: 該對戰是否為敗部賽&lt;/li&gt;
&lt;li&gt;Match Time: 對戰進行的時間&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Schedule (自動生成的賽程表)&lt;/h3&gt;
&lt;p&gt;從上面設定好的資料中自動生成的賽程表，可用於 OBS 直播。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Bracket (賽程天梯圖)&lt;/h3&gt;
&lt;p&gt;從賽程天梯編輯器設定好的天梯圖，可用於 OBS 直播，並在上面編輯比分。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;TeamIntro (比賽開始前的隊伍介紹)&lt;/h3&gt;
&lt;p&gt;從上面設定好的資料中自動生成的隊伍介紹圖，可用於 OBS 直播。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;MapPool (圖池)&lt;/h3&gt;
&lt;p&gt;從上面設定好的資料中自動生成的圖池，可用於 OBS 直播，並做 Pick/Ban 圖的功能，下面同時同步比賽房間聊天室內容。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Gameplay (比賽時遊戲介面)&lt;/h3&gt;
&lt;p&gt;以 IPC 和 osu!tourney 即時同步分數和目前圖譜，擁有綠布幕可將本介面和 osu!tourney 的畫面合成到 OBS 直播中，下面同時同步比賽房間聊天室內容。&lt;/p&gt;
&lt;p&gt;右邊的 Control Panel:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Toggle warmup: 熱身賽開關&lt;/li&gt;
&lt;li&gt;Toggle chat: 比賽房間聊天室開關&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-9.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Win (該回勝利的隊伍圖)&lt;/h3&gt;
&lt;h3&gt;Drawings (抽籤介面)&lt;/h3&gt;
&lt;p&gt;osu!Lazer Drawing 抽籤系統。&lt;/p&gt;
&lt;p&gt;須先設定，可參照 osu! 官方文件: https://osu.ppy.sh/help/wiki/Tournament_Drawings&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-10.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Showcase (圖譜詳細資料顯示)&lt;/h3&gt;
&lt;p&gt;顯示圖譜的詳細資料，可自行於 OBS 中合成其他物件。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;tourney-mode-11.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>AIS3 2021 | Pre-exam write-up</title><link>https://yuna0x0.com/posts/2021-ais3-2021-writeup/</link><guid isPermaLink="true">https://yuna0x0.com/posts/2021-ais3-2021-writeup/</guid><description>之前參加 AIS3 2021 (資安暑期課程) 的 Pre-exam write-up</description><pubDate>Mon, 24 May 2021 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;題目我忘記存到哪裡了... 總之就是之前紀錄的解題過程 ouo&lt;/p&gt;
&lt;p&gt;隊名叫做: 白上吹雪好可愛 (小易貓貓去女裝)&lt;/p&gt;
&lt;p&gt;www&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;ReSident evil villAge&lt;/h2&gt;
&lt;p&gt;Forgery Attack Against RSA Digital Signature
Reference (p.9): http://www.ccs.neu.edu/home/riccardo/courses/csg252-fa06/lecture6.pdf&lt;/p&gt;
&lt;p&gt;&quot;Ethan Winters&quot; → 5502769663009776377079720669811&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Existential forgery using a known-message attack:

Suppose y = sig(x) and y’ = sig(x’)
Can check e(y y’ mod n) = x x’ mod n
So y y’ mod n = sig(x x’ mod n)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;因此根據公式，先分解出兩組數字:
33759323085949548325642458097 * 163 = 5502769663009776377079720669811&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;33759323085949548325642458097 → 0x6D150EBB92427FDC8E1053F1
163 → 0xA3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;將 6D150EBB92427FDC8E1053F1 和 A3 分別 sign 之後，將兩組 signature 乘起來丟進去 verify，拿到 Flag。&lt;/p&gt;
&lt;p&gt;Flag: &lt;code&gt;AIS3{R3M383R_70_HAsh_7h3_M3Ssa93_83F0r3_S19N1N9}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Cat Slayer ᶠᵃᵏᵉ | Nekogoroshi&lt;/h2&gt;
&lt;p&gt;數字密碼暴力破解，配暮蟬 BGM 棒 (=ﾟωﾟ)ﾉ&lt;/p&gt;
&lt;p&gt;密碼: 2025830455298&lt;/p&gt;
&lt;p&gt;Flag: &lt;code&gt;AIS3{H1n4m1z4w4_Sh0k0gun}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Microcheese&lt;/h2&gt;
&lt;p&gt;就...程式有 bug，在剩下倒數兩顆的時候，按 0~2 以外的按鍵，就會讓 AI 方強制下棋，然後就贏惹ww&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;microcheese.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Flag: &lt;code&gt;AIS3{5._e3_b5_6._a4_Bb4_7._Bd2_a5_8._axb5_Bxc3}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;ⲩⲉⲧ ⲁⲛⲟⲧⲏⲉꞅ 𝓵ⲟ𝓰ⲓⲛ ⲣⲁ𝓰ⲉ&lt;/h2&gt;
&lt;p&gt;Python Server Side Injection
想辦法把資料塞進去然後覆蓋就對了，我試了好久總算成功 ಥ_ಥ&lt;/p&gt;
&lt;p&gt;越後面的 key 值就會蓋過前面的 key 值，然後 password 如果是 null 就會被 Python 解析成 None。&lt;/p&gt;
&lt;p&gt;username: &lt;code&gt;guest&quot;, &quot;username&quot;: &quot;aaa&quot;, &quot;showflag&quot;: true, &quot;test&quot;: &quot;test&lt;/code&gt;
password: &lt;code&gt;&quot;, &quot;password&quot;: null, &quot;A&quot;: &quot;A!&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;yet-another-login-page.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Flag: &lt;code&gt;AIS3{/r/badUIbattles?!?!}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;HaaS&lt;/h2&gt;
&lt;p&gt;亂玩之後發現存取到 &lt;code&gt;http://localhost&lt;/code&gt; 會說 Don’t Attack Server，看來存取 localhost 就會拿到 flag。&lt;/p&gt;
&lt;p&gt;但因為輸入 &lt;code&gt;localhost&lt;/code&gt;, &lt;code&gt;127.0.0.1&lt;/code&gt; 這類常見的會被系統擋
所以得用這種奇怪的 OwO (同樣也是連到 localhost): &lt;code&gt;http://0x7f000001&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;接著把 status 換成 200 以外的就行惹。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;haas.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Flag: &lt;code&gt;AIS3{V3rY_v3rY_V3ry_345Y_55rF}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;[震撼彈] AIS3 官網疑遭駭！&lt;/h2&gt;
&lt;p&gt;先觀察 pcap 檔案發現有兩組 HTTP 請求都是到 10.153.11.126&lt;/p&gt;
&lt;p&gt;http://magic.ais3.org/index.php?page=bHMgLg%3d
http://magic.ais3.org:8100/Index.php?page=%3DogLgMHb
(第二組只有請求一次，所以藏在一堆請求的中間，好壞 QwQ)&lt;/p&gt;
&lt;p&gt;接著繼續觀察 pcap 發現
請求 quiz.ais3.org 的 DNS A record 是 10.153.11.126&lt;/p&gt;
&lt;p&gt;如果直接通 quiz.ais3.org:8100 是不會通的，但卻有上面兩組 HTTP 請求
所以代表 server 是看 header 的 Host 來決定通不通，把 Host 換成 magic.ais3.org 之後就通了。&lt;/p&gt;
&lt;p&gt;接著觀察 index.php (小寫的) 的 query string &quot;page&quot;，會發現那東西一副就是要拿去解碼 Base64 (草)
所以把 &lt;code&gt;bHMgLg%3d&lt;/code&gt; 解碼後得到 &lt;code&gt;ls .&lt;/code&gt;，這東西看起來則是一副系統指令的樣子。&lt;/p&gt;
&lt;p&gt;然後觀察 Index.php (大寫的) 的 query string，發現就是上面小寫版的 reverse &lt;code&gt;%3DogLgMHb&lt;/code&gt;
所以可以猜測如果要跑系統指令得先把指令變成 Base64 之後，再把它 reverse，最後放到 query string 裡面。&lt;/p&gt;
&lt;p&gt;把 page query string 拿掉，會看到 PHP 丟 system 指令錯誤，發現 query string: page 可以被注入 PHP system 指令。&lt;/p&gt;
&lt;p&gt;接著照上面的推論，嘗試執行 &lt;code&gt;ls ..&lt;/code&gt;，編碼後並反轉的字串是 &lt;code&gt;=4iLgMHb&lt;/code&gt;，看到了根目錄:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bin boot dev etc flag_c603222fc7a23ee4ae2d59c8eb2ba84d home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var webroot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;flag_c603222fc7a23ee4ae2d59c8eb2ba84d&lt;/code&gt; 一副 flag 樣
所以我們一樣編碼並反轉 &lt;code&gt;cat ../flag_c603222fc7a23ee4ae2d59c8eb2ba84d&lt;/code&gt; 得到 &lt;code&gt;=QGN4EmYyIWZ4MWO1QmMlFGNlV2MyE2NjZmMyIzMwYzYfdWYsZ2Lu4CI0F2Y&lt;/code&gt; 放入 query string，拿到 flag。&lt;/p&gt;
&lt;p&gt;Flag: &lt;code&gt;AIS3{0h!Why_do_U_kn0w_this_sh3ll1!1l!}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Microchip&lt;/h2&gt;
&lt;p&gt;觀察 code 然後反做一遍，把字串中每四個字元分成一組後每組都 reverse，接著再把四組 key 找出來，寫個小程式反解回去就行惹。&lt;/p&gt;
&lt;p&gt;Flag: &lt;code&gt;AIS3{w31c0me_t0_AIS3_cryptoO0O0o0Ooo0}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Piano&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;解出來但是 Flag 沒上傳到啊啊啊，因為彈窗的字沒辦法複製，比賽剩下 30 秒，然後就差一題進前 75 名，殘念 QwQ&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;先觀察一下程式檔案，發現是用 .NET 開發的！廢話不多說，直接把 dll 丟進 Rider 反編譯，程式碼輕鬆出來 OuO&lt;/p&gt;
&lt;p&gt;Piano.cs 是程式的主要蘿莉...(等等我怎打蘿莉) 邏輯部分，先觀察一下 Piano constructor，知道了按鍵有 14 個，然後照音名順序排列，接著繼續觀察程式碼，看到有一組 nya function，反正跟貓貓有關的絕對是答案！&lt;/p&gt;
&lt;p&gt;所以查了 usage 在 79 行，77 行有個判斷式 &lt;code&gt;isValid&lt;/code&gt;，所以得想把法讓 &lt;code&gt;isValid == true&lt;/code&gt;，我們才能呼叫貓貓 function。&lt;/p&gt;
&lt;p&gt;接著開始觀察 isValid function，發現有四組 list，同樣的 list 各有兩組，但實際上看 &lt;code&gt;intList2&lt;/code&gt; / &lt;code&gt;intList4&lt;/code&gt; 這兩組就行了，因為最下面的判斷式只看這兩組，觀察一下判斷式，想把法把數字湊出來滿足條件即可:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;7, 7, 10, 10, 11, 11, 10, 9, 9, 3, 3, 8, 8, 7, 7
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我們知道按鍵是照音名順序排列的，所以就在鋼琴按鍵上面依照對應的按鍵彈即可拿到 Flag。&lt;/p&gt;
&lt;p&gt;Flag: &lt;code&gt;AIS3{7wink1e_tw1nkl3_l1ttl3_574r_1n_C_5h4rp}&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;喔不，窩是個 DD，因為阿夸也好可愛 (●°u°●)​ 」&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;cute-aqua.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Login to MikroTik device via Synology RADIUS (with LDAP and group mapping)</title><link>https://yuna0x0.com/posts/2024-mikrotik-synoradius-ldap/</link><guid isPermaLink="true">https://yuna0x0.com/posts/2024-mikrotik-synoradius-ldap/</guid><pubDate>Sat, 07 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I have been working on setting up our university lab’s new network architecture and MikroTik network equipment.&lt;/p&gt;
&lt;p&gt;One of them is we want our network admins to be able to login to MikroTik management interfaces (Eg, WinBox) using their LDAP credentials.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Our lab currently uses Synology&apos;s LDAP and RADIUS servers. (However, I am also experimenting with FreeIPA, FreeRADIUS, and Kanidm, as we might need to migrate to a more scalable and robust solution.)&lt;/p&gt;
&lt;p&gt;Therefore, for this article, I&apos;ll be focusing on Synology RADIUS. Still, some of the configurations here might also be applicable with FreeRADIUS, as Synology RADIUS is a FreeRADIUS server with custom configurations.&lt;/p&gt;
&lt;p&gt;:::note&lt;/p&gt;
&lt;p&gt;MikroTik WinBox only supports CHAP when authenticating using RADIUS.&lt;/p&gt;
&lt;p&gt;If you want to log in to the MikroTik device using WinBox, you must set up both your LDAP and RADIUS servers to work with MSCHAPv2 first. Although MSCHAPv2 (NT hash) is obsolete and insecure, many vendors still only support it :skull:&lt;/p&gt;
&lt;p&gt;For Synology&apos;s LDAP and RADIUS server, MSCHAPv2 support is already set up by having &lt;code&gt;sambaNtPassword&lt;/code&gt; field in LDAP user attributes, and &lt;code&gt;control:NT-Password := &apos;sambaNtPassword&apos;&lt;/code&gt; in FreeRADIUS LDAP configuration.&lt;/p&gt;
&lt;p&gt;For FreeIPA and FreeRADIUS, see &lt;a href=&quot;#further-reading&quot;&gt;Further Reading&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h2&gt;1. Modify Synology RADIUS server configuration files&lt;/h2&gt;
&lt;p&gt;:::warning&lt;/p&gt;
&lt;p&gt;Modifying system files in Synology system is not supported.&lt;/p&gt;
&lt;p&gt;Modified system files might be overwritten when upgrading packages or the system, which will break your setup.&lt;/p&gt;
&lt;p&gt;Remember to backup your configuration files, so you can restore them in case they are overwritten.&lt;/p&gt;
&lt;p&gt;Disabling the automatic update of the Synology RADIUS package is recommended. Manually update it assuming it will break your setup, and be ready to fix it.&lt;/p&gt;
&lt;p&gt;Also, consider setting up a MikroTik local admin account, or setup another RADIUS server to authenticate as a backup. So, if the RADIUS server is down, you won&apos;t be locked out of your MikroTik device.&lt;/p&gt;
&lt;p&gt;We are going to modify these files because no interface allows us to configure Synology RADIUS&apos; underlayer FreeRADIUS manually.&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;:::note&lt;/p&gt;
&lt;p&gt;There are &lt;code&gt;vi&lt;/code&gt; and &lt;code&gt;vim&lt;/code&gt; installed in the Synology system by default.&lt;/p&gt;
&lt;p&gt;You can also install &lt;a href=&quot;https://synocommunity.com/package/synocli-file&quot;&gt;SynoCli File Tools&lt;/a&gt; from SynoCommunity, which also provides &lt;code&gt;nano&lt;/code&gt; and several other tools.&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://kb.synology.com/en-global/DSM/tutorial/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet&quot;&gt;Enable and login to SSH&lt;/a&gt; on your Synology system using an admin account.&lt;/p&gt;
&lt;p&gt;Make sure to disable the SSH after finishing the configuration, as the Synology system allows SSH password login by default, which adds additional security risk if you leave it on.&lt;/p&gt;
&lt;p&gt;Switch to root user with &lt;code&gt;sudo&lt;/code&gt; and authenticate using the password of your admin account:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo -i
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;The original FreeRADIUS LDAP configuration provided by Synology is missing &lt;code&gt;membership_attribute&lt;/code&gt;, which prevents the server from filtering the LDAP group properly.&lt;/p&gt;
&lt;p&gt;Fix by adding this new line to Synology RADIUS&apos; FreeRADIUS LDAP configuration file, located at &lt;code&gt;/var/packages/RadiusServer/target/etc/raddb/mods-enabled/ldap&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ldap {
				...
        group {
                base_dn = &quot;${..base_dn}&quot;
                filter = &apos;(objectClass=posixGroup)&apos;
+                membership_attribute = &apos;memberOf&apos;
        }
				...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Then, create a file in &lt;code&gt;/usr/local/synoradius/mikrotik_admin&lt;/code&gt;, with the configuration to map the LDAP group to the MikroTik group:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if (Ldap-Group == &quot;YOUR_LDAP_GROUP_NAME&quot;) {
        update reply {
                Mikrotik-Group := &quot;YOUR_MIKROTIK_GROUP_NAME&quot;
        }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The definition of these RADIUS attributes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ldap-Group&lt;/code&gt;: &lt;a href=&quot;https://networkradius.com/doc/current/raddb/mods-available/ldap.html&quot;&gt;FreeRADIUS documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Mikrotik-Group&lt;/code&gt;: &lt;a href=&quot;https://help.mikrotik.com/docs/spaces/ROS/pages/2555940/User+Manager#UserManager-Attributes&quot;&gt;MikroTik documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;Finally, depending on your settings of &quot;Source for user authentication&quot; in Synology RADIUS, modify the corresponding file located in &lt;code&gt;/usr/local/synoradius/&lt;/code&gt; :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Configuration file&lt;/th&gt;
&lt;th&gt;Source for user authentication&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;rad_site_def_ldap&lt;/td&gt;
&lt;td&gt;Only LDAP users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rad_site_def_local_ldap&lt;/td&gt;
&lt;td&gt;Both Local users and LDAP users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rad_site_def_local&lt;/td&gt;
&lt;td&gt;Only Local users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rad_site_def_ad&lt;/td&gt;
&lt;td&gt;Only Domain users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rad_site_def_local_ad&lt;/td&gt;
&lt;td&gt;Both Local users and Domain users&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This article focuses on authentication with only LDAP users, though you can still try tinkering with configurations that fit your requirements.&lt;/p&gt;
&lt;p&gt;Modify file &lt;code&gt;/usr/local/synoradius/rad_site_def_ldap&lt;/code&gt; to include the previously created &lt;code&gt;mikrotik_admin&lt;/code&gt; file in the &lt;code&gt;post-auth&lt;/code&gt; section:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;...
post-auth {
#       ldap
        exec
+        $INCLUDE /usr/local/synoradius/mikrotik_admin
        Post-Auth-Type REJECT {
                attr_filter.access_reject
        }
}
...
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Stop and start the Synology RADIUS server in the package center, and you have finished the part of setting up the Synology RADIUS server.&lt;/p&gt;
&lt;p&gt;:::note&lt;/p&gt;
&lt;p&gt;If the RADIUS server can&apos;t start or authenticate properly:&lt;/p&gt;
&lt;p&gt;First, stop the Synology RADIUS server in the package center, and run the following command to start FreeRADIUS in debug mode manually:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/var/packages/RadiusServer/target/sbin/radiusd -X
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, fix any configuration issues by observing the debug log.&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h2&gt;2. Setup MikroTik device for RADIUS Login&lt;/h2&gt;
&lt;p&gt;Connect to your MikroTik device&apos;s console.&lt;/p&gt;
&lt;p&gt;Add the RADIUS server and allow it to login to your MikroTik device:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/radius add service=login address=YOUR_RADIUS_SERVER_IP secret=YOUR_SHARED_SECRET
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Enable RADIUS login to your MikroTik device:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/user aaa set default-group=DEFAULT_GROUP_FOR_RADIUS_USER use-radius=yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also strongly recommend setting the &lt;code&gt;default-group&lt;/code&gt; option to your desired MikroTik user group, it&apos;s for every user that is not mapped by your RADIUS configuration above.&lt;/p&gt;
&lt;p&gt;As &lt;code&gt;default-group&lt;/code&gt; has a default value &lt;code&gt;read&lt;/code&gt;, which, by default, allows every unmapped user to login to your MikroTik device with &lt;code&gt;read&lt;/code&gt; group permission. Which might not be the setup you wanted.&lt;/p&gt;
&lt;p&gt;And that&apos;s it, you have finished the setup. Try login to your MikroTik device using the LDAP credential ＼(＾▽＾)／&lt;/p&gt;
&lt;h2&gt;Further Reading&lt;/h2&gt;
&lt;p&gt;Setting up FreeRADIUS to work with MSCHAPv2 with FreeIPA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;https://fy.blackhats.net.au/blog/2015-07-06-freeipa-giving-permissions-to-service-accounts/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;https://fy.blackhats.net.au/blog/2016-01-13-freeradius-using-mschapv2-with-freeipa/&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;See also&lt;/h2&gt;
&lt;p&gt;FreeIPA and Red Hat IdM Password Auditing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://www.codasecurity.co.uk/articles/freeipa-password-auditing/&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Blast-RADIUS (CVE-2024-3596):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://www.blastradius.fail/&lt;/li&gt;
&lt;li&gt;https://www.freeradius.org/security/&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;p&gt;FreeRADIUS Docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://networkradius.com/doc/current/&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MikroTik RADIUS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;https://help.mikrotik.com/docs/spaces/ROS/pages/2555940/User+Manager#UserManager-Attributes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;https://help.mikrotik.com/docs/spaces/ROS/pages/8978504/User#User-RemoteAAA&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;https://help.mikrotik.com/docs/spaces/ROS/pages/328097/RADIUS#RADIUS-RADIUSClient&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Synology RADIUS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;https://blog.it-playground.eu/response-attributes-using-synology-radius/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;https://community.synology.com/enu/forum/1/post/122496&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item></channel></rss>