模擬登陸就是搞明白瀏覽器登陸的工作方式,使用喜歡的語言來編制自己的軟件來模擬瀏覽器的過程。在分析CMCC-EDU登陸過程中,我使用的工具是 IE9和 HTTP Analyzer V7.
IE9自帶的開發人員工具(按F12)可以實現網絡抓包,使用過程也比較簡單,而且可以過濾一些瀏覽器插件的網絡數據包,但是在使用過程中我發現有個bug,最好能結合HTTP Analyzer來對照,避免出錯。但是來分析大概的流程還是很方便的。
HTTP Analyzer V7 能夠對包括IE在內的任何軟件進行抓包,可以很方便的檢測自己軟件發送的數據包是否正確。
1.獲取登陸數據包的步驟
1、打開IE9,打開空白網頁
2、按F12,F12開發人員工具,再切換到網絡界面,選擇清除 cookie 和 緩存
3、點擊 “開始捕獲按鈕”,開始網絡抓包
4、在地址欄輸入測試網址 http://www.baidu.com,登陸CMCC-EDU校園網
可以看到下方已經抓到很多數據包:
5、登陸成功後按下停止捕獲按鈕,開始分析。
2.網絡登陸過程分析
面對這麼多的數據包,其實有很多是沒有用的,例如一些圖片的下載,這樣可以簡化分析流程,主要分析的內容也是POSE請求和帶參數的GET。
2.1先找出核心登陸的網絡地址,一般是POST 提交保密的的消息到服務器。
可以看到有一條數據是在單擊時(也就是點擊登陸按鈕時)提交的。
查看其post數據的請求正文:
果然是剛輸入的手機號碼和密碼及驗證碼,這樣關鍵數據就得到了。
再看請求的網址:
多次登陸之後其他的部分都沒變化,唯一變化的就值紅色的IP 地址。通過wlanuserip和查看自己的IP確認這個就是本機的IP地址。這樣這個POST數據的網絡地址也可以構造了。
2.2在下登陸按鈕之前,還有一個序號爲22 POST請求, 查看請求正文
中間的數據比較多,但比較明顯可能有變化的就是 劃線的兩個參數,因爲服務器也不是檢測上傳的每個數據。通過在全文中索,發現其中的httpSessionId=D13B289473F303961EDB55E226481FB7就是服務器設置的 cookie,這個是在剛訪問登陸界面(第2條請求時)服務器就在本機設置的。
而scriptSessionId=F51325060A121C027454092A7BD8B4E4583 在第6 GET次的engine.js文件中出現。
但是發送給服務器的的內容在末尾卻多了3位字符。
2.3查看該腳本的內容:
通過搜索發現,是在原_origScriptSessionId的基礎上加了一個範圍1000的隨機數。雖然現在我們不懂它是什麼意思,但是也還是可以使用語言去模擬。這樣又解決一個參數問題。同時也要多一個請求 即:GET enjin.js 文件,提取中間的_origScriptSessionId。
關於其他的參數,經過多次的登陸抓包比較,發現每次都一樣,並且在前文中也沒有發現相關的信息,所以暫時認爲是常量字段。直接按照結構構造就行,有問題再回來看。
2.4在第7 次請求中,響應正文是一張驗證碼
關於本驗證碼的識別在 這裏.
而且每次的GET請求地址都相同,那服務器靠什麼區分呢。經過分析,那就是每次請求的不同之處 cookie ,那麼在GET時就要帶上cookie.
2.5在第4次請求中,GET網址帶了參數 (以&= ***的形式)
發現和2.1POST的網址相同,下面是他的參數(使用HTTP Analyzer V7查看)。
唯一的變化也是紅色的IP地址,所以下面要去看這個IP地址從哪來的。
2.6通過全文搜索IP wlanuserip=10.100.67.23,在請求1的響應數據中發現這個地址
這是Location 地址,也就是下一步跳轉的地址。查看請求2,果然訪問的是這個地址。
這樣IP地址也獲取到了。
2.7 cookie
Cookie 在本次登陸中多次使用到,下面就查看cookie的來源,經過看看只有在請求1和請求2中的響應頭中有Set-COOKIE 字段,而請求1是訪問的www.baidu.com,其設置的cookie對我登陸沒用,只有請求2中的cookie纔是正確的。