0x00 題目概述
比賽地址:www.happyctf.org
使用thinkphp框架寫的登錄注冊頁面。
嘗試注入——無效
掃描看目錄泄露——存在include亲茅,但沒有得到有用的信息
注冊登錄成功后會提示不是管理員,存在admin用戶。
注冊一段時間后會刪除賬號。
cookie信息有兩個冠桃,base64,解碼出來是亂碼恐疲。
flag在哪腊满?
很顯然,flag應(yīng)該是以管理員身份登錄成功后才會回顯的培己。
0x01 個人思路流程
要是管理員身份才能拿到flag的ctf題并不少見
這里要感謝p牛的一篇文章,傳送門:https://www.leavesongs.com/PENETRATION/mysql-charset-trick.html
所以胚泌,這里省咨,我們抓包。注冊: admin%c2
是注冊成功的玷室,然后登陸:
使用用戶名為admin,密碼為我們剛剛注冊的零蓉,并不能成功笤受。
也就是說,并沒有重置admin的密碼敌蜂。
這里有一個問題我也還沒搞懂箩兽,為什么加了%c2之后 可以 一直注冊成功 ,而不會提示用戶名重復(fù)章喉。
卡住了汗贫,尋找還有什么有用的信息。
這題的一個關(guān)鍵就是秸脱,驗(yàn)證身份是通過cookie里面的uid來驗(yàn)證的落包,是比較常見的base64,所以很自然的想到摊唇,是不是我把管理員的uid搞到手咐蝇,就行了。
要獲取管理員uid巷查,然后替換cookie有序,第一想到的是把這加密算法搞懂,這里還有一個username呢岛请,也是base64笔呀。
于是接下來我不停地注冊,觀察用戶名和cookie里面username之間的關(guān)聯(lián)髓需。想要搞懂是則么實(shí)現(xiàn)這加密的许师,默認(rèn)cookie里面兩個值加密的方法是一樣的。
沒有收獲僚匆,搞不出他的加密算法微渠。
算是又卡住了。
頁面停留在抓包頁面咧擂,突然想到逞盆,如果我把uid的值替換到username去呢,會怎樣松申?如圖
5121
恍然大悟云芦,這就是uid啊,這不就是一個加密一個解密函數(shù)么贸桶?
我拿管理員的uid去注冊不久行了么舅逸?
什么?管理員的uid只有一位數(shù)皇筛?注冊長度不夠琉历?
1%c2%c2?
0x02 最后題解
是用形如 1%c2%c2的用戶名去注冊
注冊成功后登陸
將登陸成功的得到cookie的username 去替換uid
判斷是不是管理員只是根據(jù)uid來判斷的,和username無關(guān)。
這里需要一個腳本
但我想的是先試了1-10不行再寫腳本
試了試 ?到6就出來了
0x03 總結(jié)
p牛還是6啊
題目挺好的旗笔,給出題人一個贊
怎么說彪置,沒有思路是絕對錯的這一說,只有相對題目而言的對錯
想了挺長時間的蝇恶,自己太菜了拳魁,學(xué)吧!Go ahead!