BugKuCTF中套路滿滿的題--------flag.php
阿新 • • 發佈:2018-12-31
這道題目主要考察程式碼審計能力以及序列化和反序列化的知識
首先,什麼是序列化,什麼是反序列化?簡而言之,序列化,就是把物件轉化為位元組,反序列化就是把位元組轉化為物件的過程
好了,開始實現解題吧。。。。
首先進入的介面是一個登陸框
然而不論輸入什麼,提交上去都是沒有反應,抓包查看了一下,發現數據包是一個’get‘,所提交的資料更本沒有發出去,聯想到提示hint,或許這是一個引數,在URL裡給hint傳參,即可得到一個介面:
http://123.206.87.240:8002/flagphp/?hint=0
仔細閱讀程式碼,發現一共有兩個引數,一個是hint還有一個是Cookie裡的引數ISecer,判斷程式碼即可得知,首先,傳入hint不能為空的時候才能顯示這個介面的程式碼,其次是,如果太著急沒仔細看的話,就會覺得傳入的ISecer的值要與KEY的值相等,並且下面也給出了KEY的值,但是抓包修改引數ISecer的值為KEY的值,發現是沒什麼用的。再好好看ISecer的判斷,就會發現ISecer被反序列化了,並且這裡的KEY的值還沒被定義 即為null, 即ISecer裡的值為空,即使用語句為 s:0:""%3b(在這裡%3b是分號 ; 的意思)
而再提交引數的時候,就不需要在傳入hint的值了,如果傳入進去,就會出現原始碼,那麼flag就出不來了。。。。。