kev1n

@kev1n

Trung Hậu - Thành viên ăn hại tại KCSC

Joined on Feb 15, 2023

  • Sau một tháng lu bu việc học, việc tết, việc làm... Mình bỏ bê CTF khá lâu mà không thực sự chú tâm vào nó. Nay mình mới lật đật ngồi làm các bài tại giải pwnme phreaks,... Mình động vào 3 bài, tuy nhiên là có 1 bài blackbox mà giải end họ đóng luôn website nên đành chịu ¯\_(ツ)_/¯. Sau đây là write up của mình với 2 chall whitebox mà mình chưa kịp sol trong thời gian giải diễn ra. Một challenge code bằng python với source code ngắn, ý tưởng khá trực quan. Vừa mở code, mình đã thấy bot.py (damn, lại XSS) image XSS with CSRF Khi render template python để dính XSS thì ta cần có option |safe trong expression, mình đi tìm trong code thì chỉ có giá trị name trong templates/yourname.html là dính: image Nó nằm trong một dấu nháy kép của document.location và trong tiếp thuộc tính onfocus của thẻ <a> Đoạn code render template này là route /your-name bằng 1 POST request (thế thì report cho bot kiểu chóa gì)
     Like 3 Bookmark
  • Đây là một challenge whitebox, cung cấp cho mình source code, cung cấp một cách khá hay để khai thác SSTI Challenge sử dụng Springboot để build web, với 1 route duy nhất tại index, tại phương thức POST nhận đầu vào là data và xử lý để in ra chuỗi hello tên người dùng và thời gian: @PostMapping({"/"}) @ResponseBody public String hello(@RequestParam("data") String data) throws IOException { String hexString = new String(Base64.getDecoder().decode(data)); byte[] byteArray = Encode.hexToBytes(hexString); ByteArrayInputStream bis = new ByteArrayInputStream(byteArray); ObjectInputStream ois = new SecureObjectInputStream(bis);
     Like  Bookmark
  • Trong giải CyberSpace này thì team mình đã đạt thứ hạng khá cao là top 2. Nói riêng về mảng web thì team mình còn 1 bài web logic là không kịp làm, cá nhân mình không tự solve được bài nào cả, và bài Twig Playgound là challenge mà mình tốn nhiều thời gian để làm nhất (nhưng vẫn không solve được) Khi merge lại để chơi chung thì điểm lợi sẽ là mình được trao đổi, học hỏi kiến thức của những teammates khác. Từ đó giảm thiểu việc mình lún quá sâu vào các rabbithole hoặc đi sai hướng. Nhưng nó đã hại mình khá nhiều vì tạo cho mình thói quen xem hướng của anh em trước, khiến việc spot vuln và hàm lỗi của mình trở nên rất kém. Điều này mình đã và đang cố gắng khắc phục, kết quả giải này cho thấy quá trình này vẫn còn rất dài khi mình vẫn chưa thể tự mình làm được 1 challenge nào một cách hẳn hoi. Mình viết lại write up này cũng chỉ chia sẻ lại góc nhìn của mình về challenge, cũng như những kiến thức mình học được vì mình ấn tượng nhất và thấy bài này khá hay. Thôi không dài dòng nữa, bắt đầu thôi! image Đề bài rất straightforward, là một website để render Twig template online, thì mình cũng hiểu được là phải khai thác lỗi SSTI tại challenge này. Source Code Analysis Dockerfile COPY ./flag /flag
     Like  Bookmark
  • image URL: 157.15.86.73:8888 Challenge chia flag thành 3 phần và giấu chúng vào trang web, mình dirsearch và tìm kiếm trong request burp 1 lúc thì tìm được: Part 1 nằm ở /robots.txt image Part 2 nằm tại file js image Part 3 ở file css
     Like  Bookmark
  • Challenge này mình ngồi làm từ đầu giải đến cuối giải nhưng đã không kịp solve, vì cay cú nên mình sẽ viết write up để lưu lại kiến thức mình học được thông qua challenge này. Bearburger là challenge mà tác giả custom lại code project Bear Burger Spring Boot tại github. Các chức năng như make admin, remove admin đã bị xóa bỏ, mình có thể nói là 1 phiên bản tối giản và "có thể khai thác hơn" từ version trên github Source code analysis Author tuy đưa cả file war nhưng lại không cho file database, nên mình phải đi tìm file sql của src github để nhét vào, và lưu ý khi lấy từ trên đó về mình sẽ cần phải khai báo username là kiểu varchar(300) cho hợp lý với khai báo thuộc tính đó trong model User: @Column( name = "Username" ) private @NotNull @Size(
     Like  Bookmark
  • Trong giải HTB Business này, mình tham gia vào làm challenge Omniwatch và Magicom cùng với các teammates trong câu lạc bộ. Chúng mình đã solve được challenge Omniwatch, còn Magicom thì gần như đã làm được, chỉ thiếu một bước nữa nhưng chúng mình đã đi sai hướng và không tìm ra cách giải kịp giờ nên không kịp solve. Mình muốn viết là để chia sẻ lại quá trình giải challenge của mình và các teammates, và cũng như là hướng giải đúng đắn để solve challenge. Mình đã tham khảo official solution và nhận ra anh em đã đi đúng gần hết các bước, chỉ có bước đầu là chưa ra, nên bước đầu của mình sẽ đi theo con đường của official write up. Mình sẽ tiến hành vào khai thác tại local vì mình viết write up này hơi muộn nên không deploy trên server kịp=)) Challenge xuất hiện dưới dạng một website có chức năng xem sản phẩm và thêm sản phẩm, người dùng có thể thêm sản phẩm và một số các thông tin của sản phẩm, trong đó là phần ảnh minh họa: image Đã được add product tùy theo ý mình mà còn unauthen, mình ban đầu cũng nghĩ upload php để RCE: image Phân Tích Source Code Config
     Like  Bookmark
  • Cuối tuần này câu lạc bộ của mình có tham gia vào giải AKASEC CTF 2024 và cũng đạt được 1 số thành quả nhất định, trong giải thì mình không tự solve được bài nào, mình vẫn chậm trong việc spot lỗi và bypass exploit mà chủ yếu toàn là học hỏi hướng đi và cách giải của các teammates. Nhưng mình cũng học được những kiến thức mới từ teammates và các anh khóa trước nên không sao, kiến thức +1. Về các web challenge của giải này mình thấy khá hay và đa dạng các loại ngôn ngữ, team mình đã cố gắng hết sức những vẫn không clear được web mà vẫn còn 1 challenge rust, khá tiếc vì đấy là challenge mình dành hầu hết thời gian cho nó mà không tìm được hướng đi đúng đắn. Âu cũng là bài học kinh nghiệm để sau mình không dính quá sâu vào rabbithole mà không lùi ra kịp nữa =)) Chia sẻ dài dòng rồi, mình bắt đầu thôi. Đề bài Đây là một challenge như mình thấy thì không có gì ngoài upload và login ở đây cả. image Nhưng mà mình có cả link bot nữa, nên mình đoán nó sẽ là upload file to XSS Source & Exploit
     Like  Bookmark
  • Cũng đã 1 khoảng thời gian sau lần cuối mình viết write up ctf challenge, phải nói rằng là khả năng chơi ctf của mình đang kém và cần phải rèn dũa thêm, kết quả của cuộc thi lần này đã minh chứng cho điều đó. Mình tham gia KCSC CTF với team 4 người chơi web và sau 8 tiếng bọn mình solve được 1 bài trên tổng số 6 mà bài web đó không phải do cả team cùng làm mà mang tính cá nhân rõ rệt. Bọn mình đã không trao đổi và cùng nhau giải cái challenge mà lại đi chơi kiểu mỗi người một chall, dẫn đến 4 anh em stuck ở 4 nơi mà chả biết phải support nhau như thế nào, đây là bài học quý giá mà mình cần phải rút kinh nghiệm trong khoản giao tiếp với đồng đội ở các cuộc thi tới. Các web challenge năm nay đối với mình đều rất mới, độc và lạ. Nó toàn là những kiến thức mình không biết hoặc là rất yếu nên sau cuộc thi mình đã học được rất nhiều qua những anh em làm được và chỉ cho mình. Thôi không lan man nữa, mình sẽ bắt đầu nói về quá trình tìm tòi và giải quyết các web challenge của giải này. Preface Đây là challenge mình dành nhiều thời gian nhất để tập trung giải quyết, tuy nhiên mình vẫn không thể giải được và nhận ra mình đã hiểu sai bản chất sau khi biết được hướng solve. Challenge bao gồm web server flask và nginx đứng ra làm proxy, challenge cũng có source nên mình sẽ đi vào phân tích luôn Source code Dockerfile COPY flag.txt /flag.txt
     Like  Bookmark
  • Dạo này mình khá là hay viết wu các ctf challenge (chắc chắn không phải là do ngày trước mình lười), nó dường như đã tạo cho mình thói quen hàng tuần mình sẽ wu lại những challenge mình chơi và mình thấy hay và học được nhiều thứ từ nó. Câu lạc bộ mình tuần này có tham gia giải HTB - Cyber Apocalypse 2024, phải công nhận đây là một giải dài hơi và mình đã tốn tương đối thời gian cho các challenge web của giải này (cụ thể là 4 ngày) nhưng vẫn không thể solve được hết web challenge của giải, bản thân mình còn phải học hỏi rất nhiều nữa mới có thể hiểu và solve được dạng bài web cuối cùng nếu lần sau còn gặp lại. Giải đã kết thúc và cũng nhờ sự cố gắng, try hard của các anh em trong câu lạc bộ đến từ mọi mảng mà clb mình cũng đạt được thứ hạng mình nghĩ là khá cao , hehe. Lan man vậy cũng đủ rồi, sau đây sẽ là quá trình mình và các teamates trong KCSC đi giải các challenge web HTB, cũng như cách hiểu của mình về web chall đó. Let's go!! image Preface Đây là một chall white box nên mình download source về rồi dựng local khai thác cho nó tiện theo dõi, hehe :"))) Sau khi dựng xong thì mình cũng phải khá choáng vì dockerfile của bài này những 70 dòng, nên mình tò mò đọc để nắm trước cần phải làm gì ở chall này # Setup flag
     Like  Bookmark
  • Sau một khoảng thời gian không có thêm wu mới, từ tuần trước mình đã chăm wu lại các challenge hơn và tuần trước mình cũng có chơi giải GCC nhưng không giải được nhiều bài lắm, trong wu sẽ có cả những bài mình chưa hoàn thành lúc cuộc thi còn đang diễn ra, mình vẫn như thường lệ là vào đọc write up rồi tìm những thứ mình chưa biết trong quá trình làm rồi làm lại cho nhớ =)). Bắt đầu thui Đa số challenge web của giải này đều có source nên quá trình làm mình hầu như là ngồi đọc code mà không cần phải đi fuzz nhiều (đặc biệt không có nhiều XSS, 100 điểm) Mình dựng docker lên và nhận thấy ngay việc mình cần làm là bypass login. Thật sự là ở bước này mình rất chật vật vì không tìm ra được mật khẩu Phân tích Source Code Sau khi deploy local, ngay lập tức chức năng fill_database() được trigger nên mình xem nó đầu tiên, đồng thời để ý file database.py . Website sử dụng dbms là sqlite, và mỗi lần restart server sẽ xóa hết database và thêm một admin vào, báo ra log mật khẩu của admin: class User(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True)
     Like  Bookmark
  • Cũng lâu rồi mình không viết blog về write up ctf, phần lớn là do mình solve khá muộn màng và hay phải đi học wu của người khác, và đây là cũng không phải là một ngoại lệ. Giải này được người anh refer là có bài java khá là hay nên mình cũng lọ mọ làm và xem sol của người khác trong kênh discord để phân tích. Đây là bài java ctf đầu tiên mà mình làm được ra flag nên mình muốn viết lại quá trình làm và tìm hiểu để sau này đọc lại cho nhớ hehe=)). Bắt đầu thoi image Ukay, nhìn thấy sample request là có thể đoán được bài cho mình POST xml rùi :"> Đi vào từ phần đọc source đã, đề bài cho mình file war mà không cho file pom (set up lại code gen xml khá cay), mình sử dụng Inteliji để đọc file war. Để có thể đọc được thì mình sẽ sử dụng 7-zip để extract file war ra một thư mục, và đọc thư mục đó bằng Inteliji là được: image Bắt đầu tiến hành đọc source thui Phân tích Source Code
     Like  Bookmark
  • Đề bài image Link to challenge: http://103.162.14.116:10007/ Phương hướng & Khai Thác Phương hướng Đầu tiên mình thấy một trang web quá trắng, trắng tinh, và hiện ra chữ KCSC hello fen, name và tên là giá trị mình truyền lên URL thông qua param name Dirsearch thì mình thấy trang web có robots.txt nên vào xem sao: image
     Like  Bookmark
  • image Lab phân loại và tìm kiếm category bằng mongodb, để solve lab thì mình cần khiến cho trang web hiển thị tất cả sản phẩm, kể cả những sản phẩm chưa được ra mắt image Phần lý thuyết đã giải thích khá kĩ cách làm tạo ra điều kiện or 1=1 như của sql. Thì ở NoSQL mình sẽ sử dụng '||1||', câu query sẽ tương đương với '||'1'=='1' image Ngoài cách trên thì mình cũng có thể dùng '%00 (nullbyte) để loại bỏ điều kiện ở đằng sau Solved :heavy_check_mark: image
     Like  Bookmark
  • 1. Lab: Information disclosure in error messages Lab trên yêu cầu em tìm framework của bên thứ 3 mà trang web đang sử dụng, rồi submit số hiệu phiên bản của nó. Phải nói framework của bên thứ 3 là gì đã trước, em hiểu nó là thư viện phần mềm đã được dựng sẵn code có thể tái sử dụng, còn nó của bên thứ 3 là vì thư viện này không phải của người code web làm ra mà của 1 bên thứ 3 phát triển. Đầu tiên em đưa link trang web này vào BurpSuite, và em ấn thử vào 1 sản phẩm, thì em thấy trên URL sản phẩm được đánh dấu khác nhau dựa vào product ID. Ví dụ id = 1 sẽ là cái để treo bia, id = 2 sẽ là cái thuyền, cứ như vậy, em nhận ra tất cả các sản phẩm này được đánh dấu theo id là số bắt đầu từ 1, em đã thử xem nếu em nhập vào id là 1 chuỗi thì nó sẽ xử lý như nào, vì em biết không có sản phẩm nào có id là chuỗi: Server đã báo lỗi ngay lập tức, với status 500 đồng thời lộ ra framework là : Apache Struts 2 2.3.31 Submit: 2 2.3.31 , em đã solve được lab.
     Like  Bookmark
  • 1. Lab: Excessive trust in client-side controls Lab này sẽ không kiểm tra đầu vào của người dùng 1 cách kỹ lưỡng và đầy đủ, tạo điều kiện cho ta có thể khai thác, từ đó mua những vật phẩm với giá thành ko như dự định. Để solve được lab, hãy mua 1 chiếc "Lightweight l33t leather jacket". Ta được cấp tài khoản và mật khẩu của bản thân: wiener:peter Đầu tiên, em chọn mục mua hàng và chọn "Lightweight l33t leather jacket", sau đó thêm vào giỏ hàng rồi ấn Place Order. Dòng lỗi xuất hiện ra là em không thể mua được vì không đủ tiền Em nhận thấy có 1 tab là POST /cart -> đây chính là thao tác thêm vào giỏ hàng, nên em đã thử đổi giá tiền của chiếc áo khoác này, từ 1337,00$ thành 1,00$ Thật bất ngờ là nó đã hoạt động!!!, em ngay lập tức gửi respond vào web browser để thực hiện việc mua hàng:
     Like  Bookmark
  • Giải Wannagame này thực sự có những bài web rất hay và chất lượng, để có thể làm được 1 challenge mình đã mất 2 ngày do thiếu quan sát. Tuy rằng không thể giải kịp trong giờ thi, nhưng không sao, mình đã học thêm được nhiều cái, thì sau đây sẽ là write up cho giải WannaGame, mình có đi hỏi các anh và xem writeup của những người tham gia và đây là ý hiểu của mình về các cách giải đó. Đề bài image Challenge cung cấp cho mình source code, challenge được viết bằng python và sử dụng một thư viện đặc biệt tensorflow để đếm sao cho chuẩn xác Mình sẽ test trên local trước, vì instance chỉ có 2 phút thui :cry: Docker file đã nói rõ mình chỉ có thể đọc được flag bằng cách chạy file readflag ở thư mục gốc -> phải RCE image Phân tích ban đầu về trang web, website cung cấp chức năng đăng kí, đăng nhập, và 3 chức năng chính: đếm sao(/counting_stars), upgrade (/upgrade), và tải model từ url (/propose_model)
     Like  Bookmark
  • Write Up này mình viết sau khi cuộc thi đã kết thúc, với niềm tin là giải sẽ vẫn còn mở instance sau khi end, nhưng không =))). Nó thực sự kết thúc và không được mở instance nữa nên mình sẽ chủ yếu khai thác ở local thôi. Đề bài Challenge cấp cho mình src code và Dockerfile để có thể dựng được local. Mục tiêu chính của bài này sẽ là đăng nhập vào được website thì sẽ có flag. image Phân Tích Sau khi thử đăng nhập và ăn ngay thông báo "Browser not supported". Mình đã đi vào và xem xét src code: image Challenge có 2 api chính, là control_api được xử lý bằng nim (code lạ quá) và user_api xử lý bằng golang
     Like  Bookmark
  • 1. Lab: Username enumeration via different responses Đối với lab đầu tiên này, em nhận thấy trang web này có thể tấn công bằng cách liệt kê tài khoản và mật khẩu. Lab đã chỉ ra rằng trang web có 1 tài khoản với username và password có thể dự doán được, và nó nằm trong wordlist mà lab đã cho:Candidate usernames Candidate passwords Để xử lý lab này em đã sử dụng chức năng Intruder của BurpSuite: Open Browser ở tab Proxy và thẻ HTTP history, copy link URL của lab vào browser của BurpSuite Tại đây, em đã thử đăng nhập root/123456 để lấy được mẫu Intruder
     Like  Bookmark
  • 1. Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data Lab này yêu cầu em thực hiện tấn công kiểu SQL Injection vào trang web khiến trang web hiện tất cả những mặt hàng có trong danh sách, cả những mặt hàng đã được ra mắt và chưa ra mắt Lab đã cho em biết được nơi mà em có thể khai thác SQL Injection, là chỗ phân loại sản phẩm, nên em đã vào BurpSuite để bắt lấy request chọn category: Em đưa tab này Repeater, rồi chỉnh sửa đoạn requestĐầu tiên, câu lệnh kia sẽ phân loại theo tên category và yếu tố released = 1, nên công việc của em là: chèn vào 1 phần tử luôn đúng, khi đó sẽ không còn có chuyện phân loại theo tên category, và làm cho yếu tố released = 1 vô dụng. Em đã thực hiện SQL Injection bằng cách thêm dấu ' để kết thúc chuỗi truyền vào category, và thêm điều kiện or '1' = '1' , vì 1 luôn bằng 1 nên nó sẽ hiện hết các sản phẩm do câu lệnh SQL là SELECT * (chọn hết), sau đó tiếp tục thêm phần -- là ký hiệu của chú thích, nghĩa là sau dấu -- tất cả sẽ vô nghĩa, nên phần lệnh AND released = 1 đã trở nên vô nghĩa. Như vậy, sau khi chỉnh sửa ở repeater thành công, em đã xem được những sản phẩm còn chưa ra mắt bằng cách thay đổi cách hoạt động của câu lệnh SQL:
     Like  Bookmark
  • Chào mọi người, cảm ơn các bạn đã đến tham gia buổi giới thiệu về câu lạc bộ An Toàn Thông Tin Học Viện Kỹ Thuật Mật Mã. Mình là Hậu, khóa AT18, mình tham gia câu lạc bộ từ năm 2022, hiện tại mình đang là thành viên ban chuyên môn. Hôm nay mình sẽ giới thiệu cho các bạn sơ lược về mảng Web Exploitation. Nội dung chính của cuộc thảo luận này sẽ gồm có phần Giới thiệu chung, cơ bản về Web Security, Các kỹ năng để bắt đầu chơi CTF với mảng Web, và cuối cùng là cơ hội nghề nghiệp khi theo mảng Web Security. Khi nhắc đến mảng An Toàn Thông Tin, ai cũng từng muốn sau khi học xong chuyên ngành này có thể trở thành 1 hacker đẳng cấp có thể hack vào hệ thống lớn như trên phim vậy, dùng html đánh cả NASA hoặc như các tin tặc được lên báo như trên hình ảnh sau đây. Vậy có ai đã từng thử lên google và search 'hướng dẫn hack facebook' chưa? Mình đoán rằng chắc cũng phải có rồi chứ nhỉ. Hàng loạt những vụ tấn công vào những trang web thể hiện rằng Web Security là một điều tất yếu khi xây dựng một trang web và bảo đảm rằng trang web đó hoạt động một cách an toàn và ổn định nhất. Nghe thì có vẻ lớn lao, nhưng ta có thể hiểu đơn giản web security là bảo mật tài nguyên dữ liệu của dự án trước, trong và sau quá trình phát triển sản phẩm. Ví dụ như bảo mật dữ liệu người dùng trong database, bảo mật source code. Bảo mật tài nguyên giữa các team với nhau, giữa người trong và ngoài công ty, phân quyền cho người dùng, người phát triển. Ngăn chặn việc "leo thang đặc quyền" (privilege escalation) của người dùng, bảo vệ dự án trước lỗ hổng bảo mật và các cuộc tấn công,... Lí do tại sao có nhiều người theo mảng Web Security này do có 3 nguyên nhân chính:Dễ tiếp cận, vì kiến thức nó không quá sâu. Bạn không cần phải rành mạch về Hệ điều hành, Cấu trúc dữ liệu gì cả, mà vẫn có thể làm nó. Chỉ cần biết lập trình. Vì khi bạn biết lập trình, bạn sẽ chính là người mắc vào những lỗi đó, cách học nhanh nhất và dai nhất là tự vấp và sửa sai lầm của chính mình. Target rất nhiều, nói tới đây không phải cổ súy. Nhưng rõ ràng thế giới www (World-Wide-Web) ngày này cực kì to lớn, ai cũng có thể lập cho mình một website. Chính vì thế mà “bao cát” luyện tập cho mọi người cũng rất nhiều. Nhưng hãy nhớ, xây dựng mới khó, đập phá rất dễ. Hãy là những người trẻ có suy nghĩ và ý thức. Công cụ/tài liệu rất rất nhiều, vì đây là mảng nhiều người tiếp cận nhất, sinh ra công cụ mà họ làm ra cũng tỉ lệ thuận. Hàng ngàn công cụ được tạo ra chỉ cho việc khai thác một lỗi duy nhất (điển hình: SQL Injection). Cho nên, việc có những người không hề biết tí nguyên lý về nó vẫn có thể khai thác thành công là hoàn toàn có. Rồi, giờ mình sẽ vào vấn đề chính, các kỹ năng cần có để bắt đầu chơi CTF với mảng Web:
     Like 1 Bookmark