#27200: 想法


fire5386 (becaidorz)

學校 : 國立清華大學
編號 : 115822
來源 : [140.114.217.8]
最後登入時間 :
2024-04-13 22:06:23
g313. flag_shop -- picoCTF | From: [111.243.23.148] | 發表日期 : 2021-09-17 21:00

其實觀察程式碼就可以發現number_flags一定要>0,然後*900又要<=1100

如果令number_flags=1也會有1100 - 900 = 200,乍看之下不可能

但是這題的所有變數都用int,這也讓我們有機會可以利用overflow

如果number_flags很大,total_cost = number_flags * 900就會overflow,變成<0的數

這時候符合total_cost <= 1100所以就會account_balance = 1100 - total_cost 就有機會>= 100000

有了這個想法後我試的第一個數字就中了

 
ZeroJudge Forum