#35364: 看很多人AC了還是不知道為甚麼 解釋一下好了


jeremydingeric@gmail.com (164253)

學校 : 臺北市立成功高級中學
編號 : 158900
來源 : [42.77.129.143]
最後登入時間 :
2024-11-15 12:14:59
g313. flag_shop -- picoCTF | From: [36.230.211.52] | 發表日期 : 2023-05-29 16:55

題目要我們輸入一個number_flags 必須是正整數 而且範圍是int

要讓account_balance>=100000

照程式碼計算是1100(account_balance初值)-900*number_flags(就是total_cost)要>=100000

所以要number_flags*900+98900<=0

乍看之下不可能 但這畢竟是CTF題 所以猜一下就會發現要靠溢位達到 只要左半溢位就能<=0了

變成number_flags*900+98900>=2147483647

得到number_flags>=(2147483647-98900)/900≈2385983.05 取2385984就行了

不過要注意不要取太大 讓他又回到正的 像是4772076

 
ZeroJudge Forum