[{"data":1,"prerenderedAt":422},["ShallowReactive",2],{"post-the-queens-secret":3},{"id":4,"title":5,"body":6,"description":406,"extension":407,"meta":408,"navigation":416,"path":417,"seo":418,"stem":419,"__hash__":420,"dateDisplay":414,"image":415,"tags":410,"badge":409,"readingTime":421},"posts\u002Fposts\u002FThe-Queens-Secret.md","The Queen's Secret — Write-up (ISP MiniCTF 2025)",{"type":7,"value":8,"toc":396},"minimark",[9,20,25,33,38,41,48,52,55,77,83,86,91,95,106,109,125,128,134,143,147,157,160,189,194,215,220,238,244,248,255,263,266,272,275,279,282,331,335,361,365,386,392],[10,11,12],"blockquote",{},[13,14,15,16,19],"p",{},"Một write-up cho challenge Web tại miniCTF, kể lại hành trình tìm “bánh quy” bị thất lạc.",[17,18],"br",{},"\nChủ đề: Cookie tampering, privilege escalation.",[21,22,24],"h2",{"id":23},"_1-màn-mở-đầu-một-lời-mời-của-mad-hatter","1. Màn mở đầu — một lời mời của Mad Hatter",[13,26,27,28,32],{},"Vào một buổi chiều, tôi mở challenge ",[29,30,31],"strong",{},"The Queen's Secret"," (500 pts). Giao diện chào đón rất chỉn chu: tiêu đề to, gradient nền bắt mắt, một đoạn dẫn truyện và một ô nhập tên. Mad Hatter đứng giữa, nháy mắt và nói:",[10,34,35],{},[13,36,37],{},"“Nhập tên ngươi vào, ta sẽ cho ngươi thấy điều kỳ diệu.”",[13,39,40],{},"Cảm giác ban đầu: giao diện đẹp nhưng “im lặng” — và trong CTF, im lặng nhiều khi là dấu hiệu của điều ẩn giấu.",[13,42,43],{},[44,45],"img",{"alt":46,"src":47},"cover placeholder","\u002Fimages\u002FminiCTF\u002FTheQueenSecret\u002Fdashboard.png",[21,49,51],{"id":50},"_2-thăm-dò-thử-nhập-recon-first-touch","2. Thăm dò & thử nhập (Recon \u002F First touch)",[13,53,54],{},"Tôi không lao ngay vào payload mạnh. Trước hết:",[56,57,58,62,65],"ul",{},[59,60,61],"li",{},"Mở DevTools để xem DOM \u002F JS.",[59,63,64],{},"Bật Burp Suite Proxy để bắt traffic.",[59,66,67,68,72,73,76],{},"Nhập thử ",[69,70,71],"code",{},"test"," và bấm ",[29,74,75],{},"Gửi cho Mad Hatter",".",[13,78,79],{},[44,80],{"alt":81,"src":82},"test placeholder","\u002Fimages\u002FminiCTF\u002FTheQueenSecret\u002Fsendtest.png",[13,84,85],{},"Kết quả: trang hiển thị một lời chào đơn giản trong phần “Lời chào từ Mad Hatter”, không có flag hay thay đổi rõ rệt.",[10,87,88],{},[13,89,90],{},"Ghi chú: lúc này ta chưa thấy token, id, hay endpoint đặc biệt — chỉ có request đơn giản khi tải trang \u002F submit.",[21,92,94],{"id":93},"_3-quan-sát-http-burp-http-history","3. Quan sát HTTP (Burp → HTTP history)",[13,96,97,98,101,102,105],{},"Mục tiêu tiếp theo là quan sát request\u002Fresponse khi load trang. Mở ",[29,99,100],{},"Burp → Proxy → HTTP history"," và xem request GET ",[69,103,104],{},"\u002F"," (hoặc request submit).",[13,107,108],{},"Ở đây có 1 chi tiết rất đáng chú ý trong header:",[110,111,116],"pre",{"className":112,"code":113,"language":114,"meta":115,"style":115},"language-http shiki shiki-themes github-light github-dark","Cookie: queen=false\n","http","",[69,117,118],{"__ignoreMap":115},[119,120,123],"span",{"class":121,"line":122},"line",1,[119,124,113],{},[13,126,127],{},"Tôi chụp ảnh màn hình HTTP history để lưu evidence.",[13,129,130],{},[44,131],{"alt":132,"src":133},"burp-http-history-placeholder","\u002Fimages\u002FminiCTF\u002FTheQueenSecret\u002Frequestindex.png",[10,135,136],{},[13,137,138,139,142],{},"Nhận xét: Một cookie boolean ",[69,140,141],{},"queen=false"," xuất hiện. Rõ ràng đây là giá trị client-side. Nếu server dùng cookie này để quyết định hiển thị khu vực \"bí mật\", thì việc chỉnh cookie có khả năng thay đổi UI\u002Fbehavior.",[21,144,146],{"id":145},"_4-đánh-giá-giả-thuyết-nghịch-cookie-tampering","4. Đánh giá giả thuyết & nghịch cookie (Tampering)",[13,148,149,150,152,153,156],{},"Giả thuyết: ",[69,151,141],{}," → không được xem khu vực bí mật; ",[69,154,155],{},"queen=true"," → được xem.",[13,158,159],{},"Chiến lược an toàn để kiểm tra:",[161,162,163,172,180,183],"ol",{},[59,164,165,166,168,169,76],{},"Copy request GET ",[69,167,104],{}," (hoặc request submit nếu submit thay đổi session) vào ",[29,170,171],{},"Burp Repeater",[59,173,174,175,177,178,76],{},"Sửa header Cookie từ ",[69,176,141],{}," → ",[69,179,155],{},[59,181,182],{},"Gửi request đã chỉnh (Send) trong Repeater.",[59,184,185,186,188],{},"Quay về trình duyệt (vẫn đi qua Burp) → bấm ",[29,187,75],{}," một lần nữa.",[13,190,191],{},[29,192,193],{},"Request before (burp history):",[110,195,197],{"className":112,"code":196,"language":114,"meta":115,"style":115},"GET \u002F HTTP\u002F1.1\nHost: 103.249.117.57:6636\nCookie: queen=false\n",[69,198,199,204,210],{"__ignoreMap":115},[119,200,201],{"class":121,"line":122},[119,202,203],{},"GET \u002F HTTP\u002F1.1\n",[119,205,207],{"class":121,"line":206},2,[119,208,209],{},"Host: 103.249.117.57:6636\n",[119,211,213],{"class":121,"line":212},3,[119,214,113],{},[13,216,217],{},[29,218,219],{},"Request after (repeater):",[110,221,223],{"className":112,"code":222,"language":114,"meta":115,"style":115},"GET \u002F HTTP\u002F1.1\nHost: 103.249.117.57:6636\nCookie: queen=true\n",[69,224,225,229,233],{"__ignoreMap":115},[119,226,227],{"class":121,"line":122},[119,228,203],{},[119,230,231],{"class":121,"line":206},[119,232,209],{},[119,234,235],{"class":121,"line":212},[119,236,237],{},"Cookie: queen=true\n",[13,239,240],{},[44,241],{"alt":242,"src":243},"burp-repeater-placeholder","\u002Fimages\u002FminiCTF\u002FTheQueenSecret\u002Frepeatcher.png",[21,245,247],{"id":246},"_5-kết-quả-khu-vực-bí-mật-hé-lộ-flag","5. Kết quả — Khu vực bí mật hé lộ (Flag)",[13,249,250,251,254],{},"Sau khi chỉnh cookie và bấm submit lại, phần nội dung trên trang thay đổi tức thì: một khung “Khu vực bí mật của Heart Queen” xuất hiện, và giữa đó — ",[29,252,253],{},"flag",":",[110,256,261],{"className":257,"code":259,"language":260},[258],"language-text","miniCTF{411c3_1n_W0nd3rl4nd}\n","text",[69,262,259],{"__ignoreMap":115},[13,264,265],{},"Tôi chụp ảnh trang hiển thị flag làm chứng.",[13,267,268],{},[44,269],{"alt":270,"src":271},"flag-placeholder","\u002Fimages\u002FminiCTF\u002FTheQueenSecret\u002Fflag.png",[13,273,274],{},"Cảm giác lúc đó — giống như vừa mở kho báu: đơn giản, ngọt ngào, và rất thuyết phục.",[21,276,278],{"id":277},"_6-tái-hiện-repro-từng-bước-cho-bạn-làm-lại","6. Tái hiện (Repro) — từng bước cho bạn làm lại",[13,280,281],{},"Dưới đây là các bước cụ thể để ai cũng có thể tái hiện:",[161,283,284,290,293,301,310,313,319,322,328],{},[59,285,286,287,76],{},"Mở trình duyệt tới: ",[69,288,289],{},"http:\u002F\u002F103.249.117.57:6636\u002F",[59,291,292],{},"Mở Burp Suite → Proxy → Intercept (hoặc HTTP history).",[59,294,295,296,72,298,300],{},"Nhập một tên ví dụ ",[69,297,71],{},[29,299,75],{}," (lưu ý bắt request khi load trang\u002Fsubmit).",[59,302,303,304,306,307,76],{},"Trong Burp → HTTP history, tìm request GET ",[69,305,104],{}," (hoặc request submit). Quan sát header ",[69,308,309],{},"Cookie: queen=false",[59,311,312],{},"Click phải → Send to Repeater.",[59,314,315,316,76],{},"Trong Repeater, sửa header cookie thành ",[69,317,318],{},"Cookie: queen=true",[59,320,321],{},"Send request đã sửa. (Bạn có thể copy-response nếu cần.)",[59,323,324,325,327],{},"Quay về tab trình duyệt (đi qua Burp) và bấm ",[29,326,75],{}," lần nữa.",[59,329,330],{},"Quan sát phần “Khu vực bí mật” hiển thị flag. Lưu screenshot trang + request\u002Fresponse trong Burp.",[21,332,334],{"id":333},"_7-bài-học-rút-ra-lessons","7. Bài học rút ra (Lessons)",[56,336,337,343,349,355],{},[59,338,339,342],{},[29,340,341],{},"Không bao giờ tin dữ liệu client-side."," Cookie, localStorage, URL params, form fields — tất cả đều có thể bị chỉnh sửa bởi attacker.",[59,344,345,348],{},[29,346,347],{},"Không dùng client-side flag\u002Fboolean để kiểm soát quyền truy cập",". Mọi quyết định phân quyền phải có xác thực server-side.",[59,350,351,354],{},[29,352,353],{},"Kiểm tra kỹ mọi chỗ hiển thị logic “đặc quyền”"," — đôi khi dev chỉ muốn ẩn UI cho UX và quên enforce server check.",[59,356,357,360],{},[29,358,359],{},"Trong CTF, đừng bỏ qua những thứ nhỏ"," — đôi khi flag nằm ở chỗ rất nhỏ như một cookie boolean.",[21,362,364],{"id":363},"appendix-evidence-notes","Appendix — Evidence & Notes",[56,366,367,372,377,380],{},[59,368,369,370,76],{},"Burp HTTP history (screenshot) — ghi chú: ",[69,371,309],{},[59,373,374,375,76],{},"Burp Repeater request (screenshot) — ",[69,376,318],{},[59,378,379],{},"Trang hiển thị flag (screenshot).",[59,381,382,383,76],{},"Flag: ",[69,384,385],{},"miniCTF{411c3_1n_W0nd3rl4nd}",[13,387,388,391],{},[29,389,390],{},"Kết"," — Một câu chuyện ngắn: từ giao diện tĩnh đến kho báu — chỉ bằng một lần nghịch cookie, Alice bước vào vương quốc Heart Queen.",[393,394,395],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":115,"searchDepth":206,"depth":206,"links":397},[398,399,400,401,402,403,404,405],{"id":23,"depth":206,"text":24},{"id":50,"depth":206,"text":51},{"id":93,"depth":206,"text":94},{"id":145,"depth":206,"text":146},{"id":246,"depth":206,"text":247},{"id":277,"depth":206,"text":278},{"id":333,"depth":206,"text":334},{"id":363,"depth":206,"text":364},"Bài write-up theo phong cách kể chuyện cho thử thách web \"The Queen's Secret\" (tham nhũng cookie → leo quyền). Bao gồm bằng chứng Burp, các bước tái hiện và bài học rút ra. ISP MiniCTF 2025. (500 điểm)","md",{"badge":409,"tags":410,"date":413,"dateDisplay":414,"image":415},"CTF Write-up",[411,412],"CTF","Web","2025-08-08","August 8, 2025","\u002Fthumbnails\u002Fispminictf2.png",true,"\u002Fposts\u002Fthe-queens-secret",{"title":5,"description":406},"posts\u002FThe-Queens-Secret","lOqHMiTOEGGhp9iEWy8MabiTN_XSxV2DkBz-JUoJwzY",4,1787385493755]