Skip to content
This repository has been archived by the owner on Aug 15, 2023. It is now read-only.

Latest commit

 

History

History
75 lines (58 loc) · 1.97 KB

digits.md

File metadata and controls

75 lines (58 loc) · 1.97 KB

digits

コンピュータは高速に正しく計算してくれますが、昔のコンピュータは今ほど正確に計算できないことがありました。現在もハードウェアの故障などが原因でとても低い確率でコンピュータは計算をミスするでしょう。 運が良いあなたならこの問題が解けるはずです。10 桁の好きな数字をクエリパラメータ q に入れて、神に祈りましょう。 https://tsukuctf.sechack365.com/problems/digits


访问problems/digits:

{
	"msg": "please input param 'q' (0000000000~9999999999).  example: /?q=1234567890"
}

题目给了源码:

from typing import Optional
from fastapi import FastAPI
import random

app = FastAPI()
FLAG = "TsukuCTF{}"

@app.get("/")
def main(q: Optional[str] = None):
    print(q)
    if q == None:
        return {
            "msg": "please input param 'q' (0000000000~9999999999).  example: /?q=1234567890"
        }
    if len(q) != 10:
        return {"msg": "invalid query"}
    if "-" in q or "+" in q:
        return {"msg": "invalid query"}
    try:
        if not type(int(q)) is int:
            return {"msg": "invalid query"}
    except:
        return {"msg": "invalid query"}

    you_are_lucky = 0

    for _ in range(100):
        idx = random.randrange(4)
        if q[idx] < "0":
            you_are_lucky += 1
        if q[idx] > "9":
            you_are_lucky += 1

    if you_are_lucky > 0:
        return {"flag": FLAG}
    else:
        return {"msg": "Sorry... You're unlucky."}

要求找到查询参数q的值,满足:

  • q != None
  • len(q) == 10
  • 不包含-+
  • 可以使用int(q)进行转换
  • 至少包含一个0-9之外的字符

python中使用int进行强制类型转换时会忽略两侧的空格,提交q= 4567890即可

{
	"flag": "TsukuCTF{you_are_lucky_Tsukushi}"
}

flag:TsukuCTF{you_are_lucky_Tsukushi}