[Write-Up] – PicoCTF 2022

link: https://play.picoctf.org/events/70/challenges?category=1&page=1

1. Includes
  • Như tên chall thì bào này mình nghĩ ngay rằng flag sẽ nằm ở 1 file include của trang web
  • Sau đó mình xem nguồn trang thì thấy 2 file khả nghi là style.css và script.js
  • Kiểm tra cả 2 file thì mình được
  • flag: picoCTF{1nclu51v17y_1of2_f7w_2of2_5a94a145}
2. Inspect HTML
  • Bài này thì không có gì chỉ cần mở source code lên là thấy flag
  • flag: picoCTF{1n5p3t0r_0f_h7ml_b101a689}
3. Local Authority
  • Chall này yêu cầu phải đăng nhập, trước tiên thì mình check source code của nó theo thói quen nhưng không thu lại điều gì, sau đó mình thử nhập một vài payload sqli đơn giản
  • Tuy rằng không được nhưng mình lại thấy yêu cầu được gửi đến login.php, nên mình tiếp tục kiểm tra source code trang này
  • Và mình thấy nó có bao gồm 1 file js nữa là secure.js khá đáng nghi nên mình keierm tra và được kết quả
  • Sau đó mình đăng nhập vào và nhận được cờ
  • flag: picoCTF{j5_15_7r4n5p4r3n7_b964a657}
4. Search source
  • Như tên gọi chall thì flag chắc chắn nằm trong source code rồi, giờ
  • Nhìn vào source code thì thấy có vẻ như là flag không nằm trong file gốc, nhìn qua thì thấy file css đầu không có khả năng chứa flag nên mình check từ file css thứ 2, và đến file css thứ 3 thì được flag
  • flag: picoCTF{1nsp3ti0n_0f_w3bpag3s_74784981}
5. Forbidden Paths
  • Đề bài có gợi ý cho ta thư mục chứa flag và thư mục hiện tại
  • Sau khi vào chll thì xác định được đây là lỗi LFI
  • Theo như đề bài gợi ý thì đây là payload: ../../../../flag.txt
  • flag: picoCTF{7h3_p47h_70_5ucc355_32e3a320}
6. Power Cookie
  • Đề bài của chall này có gợi ý liên quan đến cookie, ban đầu mình kiểm tra thì chưa có gì, sau khi click vào button trên thì có 1 cookie được khởi tạo
  • Hiện tại isAdmin đang có giá trị là 0 (False), sau khi sửa lại là 1 (True) thì mình nhận được flag: picoCTF{gr4d3_A_c00k13_87608ba8}
7. Roboto Sans
  • Đề bài của chall này làm mình nghĩ ngay đến robots.txt
  • có 1 đoạn bị mã hóa bằng base64 nhìn khác đáng ngờ, sau khi decode ra thì mình được
    flag1.txt;js/myfi
    js/myfile.txt
  • Thử với từng thư mục, đến js/myfile.txt thì mình nhận được flag
  • flag: picoCTF{Who_D03sN7_L1k5_90B0T5_87ccf72a}
8. Secrets
  • Kiểm tra source code thì mình thấy đường link của image khá khả nghi
  • Sau khi thử với dir là secret thì mình nhận được
  • Sau đó mình lại kiểm tra source code
  • Tiếp tục mình thấy dir hidden chứa file.css cũng khác đáng nghi
  • Tiếp tục không thử đăng nhập mà mình kiểm tra source code tiếp và lại thấy một dir khả nghi :))
  • Mở source code lên thì lần này ta đã có flag
  • flag: picoCTF{succ3ss_@h3n1c@10n_08de81e4}
9. SQL Direct
  • Chall này phải kết nối đến PostgreSQL, ở đây mình sử dụng kali
  • Nhìn vào thì thấy chúng ta có thể thực thi được câu lệnh sql với dấu ; ở cuối câu lệnh nên mình thử : select * from information_schema.tables;
  • Có thể thấy có 1 table tên là flags nên mình thử: select * from flags
  • flag: picoCTF{L3arN_S0m3_5qL_t0d4Y_472538a0}
10. SQLiLite
  • Nhìn tên chall thì cũng đoán được là lỗi SQLi nên mình thử: admin'--
  • Bài này khá dễ nên mở source code lên là thấy flag
  • flag: picoCTF{L00k5_l1k3_y0u_solv3d_it_147ec287}
11. noted
  • Mới đầu thì chall bắt đăng nhập và người dùng có thể đăng kí với một tài khoản bất kì
  • Sau khi đăng kí vào đăng nhập vào thì có 2 chức năng là tạo note và report
  • Sau khi kiểm tra thì thấy chứa năng new note bị XSS
  • về chứ năng report thì có thể report 1 url nhưng theo như lưu ý đề bài thì chức năng này không có khả năng truy cập internet
  • Sau khi đọc source code thì thấy mỗi lần gửi report thì server sẽ chuyển đến địa chỉ local là http://0.0.0.0:8080 rồi sau đó đăng kí một tài khoản được random ngẫu nhiên và tạo một note mới chính là flag cần tìm, sau đó thì mới chuyển đến url mà người dùng truyền vào
  • Ý tưởng là sẽ truyền vào đường dẫn đến note của mình bị XSS và sau đó sẽ lấy toàn bộ nội dung của trang note trên local của admin, rồi gửi về host của mình. Để làm được điều đó mình sẽ lưu toàn bộ nội dung note chứa flag vào một biến rồi sau đó gửi dữ liệu biến đó về host là được.
  • Đầu tiên, mình sẽ tạo note XSS để khi bot admin truy cập vào sẽ gửi nội dung note chứa flag về cho mình thông qua biến pwn
  • Còn đây là dữ liệu mình sẽ gửi vào report nhằm 2 mục đích:
    • 1 là làm cho con bot lưu dữ liệu note chứa falg vào biến pwd
    • 2 là đăng nhập vào note bằng tải khoản của mình để thực thi đoạn mã XSS trên
123456789data:text/html,<form action="http://localhost:8080/login"method=POST id=pwn target=_blank>  <input type="text"name="username"value="a"><input type="text"name="password"value="a"></form><script>  window.open('http://localhost:8080/notes', 'pwn');  setTimeout(`pwn.submit()`, 1000);  setTimeout(`window.location='http://localhost:8080/notes?pwn'`, 1500);</script>
  • data:text/html có tác dụng cho chrome biết rằng nội dung là html.
  • Đoạn mã dòng số 6 là để lưu dữ liệu note chứa flag vafp biến pwn
  • Dòng số 7 là gửi dữ liệu đăng nhập và dòng thứ 8 là để kích hoạt đoạn mã XSS
  • Và đây là kết quả
  • flag: picoCTF {p00rth0s_parl1ment_0f_p3p3gas_386f0184}

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: