聲明
本文章中所有內(nèi)容僅供學(xué)習(xí)交流吁峻,抓包內(nèi)容润讥、敏感網(wǎng)址、數(shù)據(jù)接口均已做脫敏處理犬辰,嚴(yán)禁用于商業(yè)用途和非法用途磕诊,否則由此產(chǎn)生的一切后果均與作者無(wú)關(guān)填物,若有侵權(quán),請(qǐng)聯(lián)系我立即刪除霎终!
本文章未經(jīng)許可禁止轉(zhuǎn)載滞磺,禁止任何修改后二次傳播,擅自使用本文講解的技術(shù)而導(dǎo)致的任何意外莱褒,作者均不負(fù)責(zé)击困,若有侵權(quán),請(qǐng)?jiān)诠娞?hào)【K哥爬蟲】聯(lián)系作者立即刪除广凸!
逆向目標(biāo)
- 目標(biāo):某驗(yàn)”初代“滑塊驗(yàn)證碼阅茶,實(shí)為二代離線模式,validate 參數(shù)逆向谅海,底圖獲取及還原
- 主頁(yè):
aHR0cHM6Ly9mdy5zY2pnai5zaC5nb3YuY24vbm90aWNlc2gvaG9tZQ==
- 加密算法:MD5
前世溯源
眾所周知某驗(yàn)是首家 ”行為式驗(yàn)證“ 安全技術(shù)服務(wù)提供商脸哀,其摒棄了扭曲復(fù)雜的字符圖片驗(yàn)證碼,大大增強(qiáng)了用戶的體驗(yàn)感扭吁。某驗(yàn)最初代的驗(yàn)證碼撞蜂,是在2012年年底完成的,產(chǎn)品還在內(nèi)測(cè)時(shí)侥袜,最早的種子用戶蝌诡,大都來(lái)自于創(chuàng)始人吳淵母校武漢大學(xué)的珞珈山水BBS站:
2014年年中,極驗(yàn)正式開放服務(wù)枫吧,武漢本土互聯(lián)網(wǎng)企業(yè)尤其是游戲類企業(yè)給予了“力挺”浦旱。武漢265G是全國(guó)最大的網(wǎng)頁(yè)游戲資訊網(wǎng)站,率先使用了極驗(yàn)“點(diǎn)一下拖一下就能完成驗(yàn)證”的全新驗(yàn)證方式九杂。后來(lái)闽寡,通過(guò)口口相傳,武漢17173尼酿、電玩巴士等游戲門戶網(wǎng)站爷狈,也陸續(xù)使用其產(chǎn)品∩亚妫“行為式驗(yàn)證”上線后從游戲行業(yè)開始涎永,逐步取代互聯(lián)網(wǎng)上各種形式的傳統(tǒng)驗(yàn)證碼,推廣到全國(guó)各地。
下圖為早年市面上的初代產(chǎn)品羡微,時(shí)過(guò)境遷谷饿,是否還存在網(wǎng)站使用無(wú)從得知,如果有了解的歡迎私聊 K 哥:
抓包情況
真正的初代產(chǎn)品無(wú)從分析妈倔,上一篇 K 哥寫的為二代滑塊在線模式博投,可以閱讀:【驗(yàn)證碼逆向?qū)凇磕瞅?yàn)二代滑塊驗(yàn)證碼逆向分析,本案例為二代滑塊離線模式分析盯蝴,與常規(guī)的某驗(yàn)產(chǎn)品還是有較大區(qū)別的毅哗,主頁(yè)輸入企業(yè)名稱點(diǎn)擊搜索會(huì)彈出滑塊驗(yàn)證碼,register
接口返回熟悉的 challenge
和 gt
參數(shù):
如果對(duì)某驗(yàn)其他產(chǎn)品了解的話捧挺,圖片下載路徑及加密參數(shù)是通過(guò)類似 get.php
接口返回的虑绵,并且 validate
參數(shù)是校驗(yàn) w
參數(shù)后得到的,而當(dāng)前過(guò)掉滑塊后闽烙,validate
參數(shù)直接生成并完成校驗(yàn)了翅睛,所有流程都是在本地直接執(zhí)行的:
- validate 接口:校驗(yàn)滑塊是否通過(guò);
- ent_info_list 接口:校驗(yàn)
session.token
及validate
黑竞,未通過(guò)則和一開始的 home 接口返回內(nèi)容一致捕发,通過(guò)則會(huì)多出相關(guān)企業(yè)信息。
逆向分析
主頁(yè)搜索生成驗(yàn)證碼后很魂,從驗(yàn)證接口 validate
處跟棧扎酷,跟進(jìn)到 u1G.<computed>
中:
格式化,進(jìn)入到 geetest.0.0.0.js
文件的第 5689 行莫换,該行打下斷點(diǎn)滑動(dòng)滑塊即會(huì)斷住,可以看到 H2Y 為 fail骤铃,此時(shí)已經(jīng)校驗(yàn)完成拉岁,并顯示失敗了:
繼續(xù)向上跟棧,在第 3273 行打下斷點(diǎn)惰爬,這里即為校驗(yàn)的位置:
關(guān)鍵部分如下:
W1Y[f2Z.S3C(60)](m1Y, f1G[f2Z.t3C(537)](f2Z.t3C(551), R1Y[f2Z.S3C(278)])[f2Z.t3C(155)]() - f1G[f2Z.S3C(537)](f2Z.S3C(633), R1Y[f2Z.S3C(278)]), R1Y)
于控制臺(tái)打印一下喊暖,初步推測(cè) W1Y[f2Z.S3C(60)]
方法校驗(yàn)了滑動(dòng)距離、滑動(dòng)時(shí)間及其他的一些參數(shù):
跟進(jìn) W1Y[f2Z.S3C(60)]
撕瞧,跳轉(zhuǎn)到 offline.6.0.0.js
文件中陵叽,格式化后,打斷點(diǎn)會(huì)發(fā)現(xiàn)這里就是 validate
參數(shù)的加密位置:
validate: b.A(c, e.d.challenge) + "_" + b.A(a.b("rand0", e.c), e.d.challenge) + "_" + b.A(a.b("rand1", e.c), e.d.challenge)
c
為滑動(dòng)距離丛版,e.d.challenge
為 challenge
參數(shù)的值巩掺,e.c
為13位時(shí)間戳,加密方式為 b.A
及 a.b
页畦,扣下來(lái)即可胖替,不過(guò)經(jīng)測(cè)試 a.b("rand0", e.c)
即 d,a.b("rand1", e.c)
為 e 的值,分別定義在下圖第 173独令、174 行端朵,分析過(guò)程中發(fā)現(xiàn)采集了滑塊軌跡,不過(guò)并沒有校驗(yàn)燃箭,validate
參數(shù)分析完了冲呢,那圖片路徑在哪呢,就在這部分的上面招狸,f敬拓、g 經(jīng)過(guò)了 MD5 加密,同樣直接扣下來(lái):
不過(guò)直接這樣下載的圖片是亂序的瓢颅,還原代碼同三代滑塊及二代滑塊在線模式基本一致恩尾,寬度需要改動(dòng),可參考 【驗(yàn)證碼逆向?qū)凇磕瞅?yàn)三代滑塊驗(yàn)證碼逆向分析:
還原后如下:
結(jié)果驗(yàn)證
滑塊驗(yàn)證:
搜索結(jié)果驗(yàn)證挽懦,需要先從 home
接口中獲取到 session.token
翰意,再加上 validate
等參數(shù)即可: