[Write-Up] – KCSC CTF (WEB)

1. ROBOT

  • Đầu tiên mình kiểm tra source code thì thấy part1 ở phần cmt
  • Part 1 : KCSC{C0r0n4_
  • Tiếp theo như tựa đề bài là ROBOT mình nghĩ ngay đến tệp trùng tên là robots.txt và được part2
  • Part 2: v1ru22_1s_
  • đi theo đường dẫn vaccine
  • kiểm tra cookie xem có gì nào
  • Chưa tiêm vaccin thật :)), số 0 thường là để biểu diễn giá trị False, thử sửa lại thành 1 xem sao
  • Part 3 : g0n3_n0w!!}
  • Flag: KCSC{C0r0n4_v1ru22_1s_g0n3_n0w!!}

2. Warm Up

  • Kiểm tra source code xem có gì không
  • Đây chính là cách mã tìm password, với 0xCafe khi nhét vào console trên trình duyệt thì được giá trị 51966
  • Thì ra là mỗi kí tự của password sẽ được chuyển sang giá trị theo bảng mã ascii sau đó cộng với 51966, việc cần làm là trừ từng phần tử của mảng p đi 51966 rồi chuyển lại về dạng kí tự là ta được password
  • password: MakeKmaGreatAgain
  • Bùm: KCSC{j4v-a-SRript-i555-FUn}

3. D I O R

  • Cũng như tên chall, bài này dính lỗ hổng DIOR, là một dạng broken access control
  • Việc cần làm là tìm đúng id chứa flag, mình đã dùng burp suite để brute force và ra được id là 1357
  • Flag: KCSC{Gud_luckkkkk__brooo}

4. Magic PHP

  • Bài này sau khi kết thúc giải mình mới làm được
  • Vô phần secret thì thấy anh Huấn đang ăn hoa quả
  • Để ý thấy page=secret mình thử test xem có bị bug không
  • Được rồi thử php://filter lấy code nào
  • Ôi không bị chặn lại rồi, thử thay đổi 1 chút xem sao
  • Oh right, được rồi decode thôi
  • Cũng nghiệt ngã phết, sau một thời gian dài loay hoay thì mình tìm biết được rằng dạng 0e trong php có nghĩa là 0 mũ vậy nên kết quả sẽ là so sánh user hash bằng thuật toán md5 với 0, vậy cần tìm một chuỗi hash ra kí tự bắt đầu bằng 0e là được
  • Mình tìm thấy trên trang này : 240610708
  • Giờ còn xử lí pass nữa là xong, thì mình thấy extract được gọi sau khi gán giá trị cho $password vậy nên ban đầu mình nghĩ là truyền $password vào mật khẩu là được nhưng không mình đã lầm. Một thời gian sau mình đã nảy ra ý tưởng thêm key password vào hàm $_GET để tự set giá trị cho nó
  • Flag: KCSC{LFI_to_loose_comparison@@}

5. Baby SQL

  • Mới đầu vào mình để ý thanh search và search thử chữ a
  • Vô tình thôi nhưng mà nó ra một phần blacklist và còn cho biết sẽ được replace thành null, nó làm mình nghĩ ngay đến cách bypass bằng cách double lên như là adadminmin chẳng hạn.
  • Ban đầu thì mình thử với payload: a' oorr 1=1-- -
  • Và mình đã nghĩ rằng nó bị bug ở form login, chính vì ý nghĩ đó mà mình đã không giải được bài này trong lúc cuộc thi diễn ra, payload đúng phải là: a" oorr 1=1-- -
  • Bước đầu tiên coi như đã xong, mình thử với cách bypass khác xem có rút gọn được không
  • Ngon rồi, giờ thì tìm số cột và khai thác nó thôi
  • Mọi thứ vẫn đúng như tính toán, tìm tên bảng thôi
  • Đến khúc này mình mấy một khoảng thời gian loay hoay không biết sao payload lại không chạy, sau đó mình nghĩ là chắc gì phần trên đã là toàn bộ blacklist nên mình đã thử bypass cả information_schema
  • Được rồi, sau đó mình tìm được một bảng có tên là users, tiếp tục tìm tên cột trong bảng này
  • Mọi thứ vẫn rất nét cho đến lúc này, tiếp tục select username và password thôi
  • Bị khựng lại một nhịp, mình tiếp tục thử với cách bypass trên
  • Giờ thì login thôi xem có được không hay lại bị filter :))
  • May quá được rồi, flag: KCSC{you_know_Sql_injection_?}
  • Nghỉ tết được rồi cảm ơn mọi người, cảm ơn KCSC đã tạo ra sân chơi vô cùng bổ ích

Tham khảo:

  • Em Quốc Anh

Published by Nhat Truong

Hi

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: