护网杯web
首先進(jìn)入網(wǎng)頁(yè)后,觀察到有sign up
點(diǎn)擊sign up 進(jìn)行注冊(cè)
再點(diǎn)擊sign in 進(jìn)行登錄
進(jìn)入一個(gè)買(mǎi)辣條的界面,可以知道,5元可以買(mǎi)一包大辣條,多包大辣條可以換一包辣條之王,多包辣條之王可以換Flag
進(jìn)入info查看余額,發(fā)現(xiàn),至多可以買(mǎi)4包大辣條,不滿(mǎn)足辣條之王的兌換
嘗試條件競(jìng)爭(zhēng)
打開(kāi)burpsuit
點(diǎn)擊大辣條的購(gòu)買(mǎi)窗口,抓取數(shù)據(jù)
發(fā)送到Intruder,點(diǎn)擊Positions,點(diǎn)擊clear
點(diǎn)擊Payloads
這里算是糾結(jié)了一下,最后想到利用條件競(jìng)爭(zhēng),試驗(yàn)發(fā)現(xiàn)一個(gè)賬戶(hù)的兩個(gè)登陸同時(shí)買(mǎi)辣條,只會(huì)扣一次錢(qián),卻會(huì)得到兩個(gè)辣條。利用burpsuite進(jìn)行條件競(jìng)爭(zhēng):
這里多設(shè)置幾個(gè)線(xiàn)程:
點(diǎn)擊Option
點(diǎn)擊Start Attack
?
等待一段時(shí)間后,Forward
再次查看Info,發(fā)現(xiàn)買(mǎi)的數(shù)量明顯超過(guò)預(yù)期
但是這樣還不夠,發(fā)現(xiàn)辣條之王有填寫(xiě)兌換數(shù),嘗試整數(shù)溢出
下面考慮溢出:
int: 2**32-1 = 4294967295
long: 2**63 -1 = 9223372036854775807
longlong: 2**64-1 = 18446744073709551615
但是要注意一點(diǎn),這個(gè)題的邏輯是,numer*5<最大值
所以,其臨界值應(yīng)該為18446744073709551615 / 5 == 3689348814741910323
于是嘗試3689348814741910323+1 == 3689348814741910324
溢出后的值比較小,在辣條的數(shù)量之內(nèi),從而兌換成功。
因?yàn)樽铋L(zhǎng)為longlong,即存在2^64,又因?yàn)?包大辣條換一包辣條之王,故最多可換3689348814741910323包辣條之王,溢出再加一包,即為3689348814741910324包,輸入后溢出,成功獲得足夠數(shù)量的Flag
點(diǎn)擊兌換,得到flag
轉(zhuǎn)載于:https://www.cnblogs.com/qq3285862072/p/9785643.html
總結(jié)
- 上一篇: 软件研发成本估算过程之估算软件规模概述
- 下一篇: 想跑次高频策略?快来看看Numpy处理真