該系列文章僅限于某驗(yàn)滑塊研究瀑构,不會(huì)公開具體算法源碼,歡迎討論
本文關(guān)聯(lián)文章:
縱觀
入微
芥子
浩瀚
一. 某驗(yàn)滑塊網(wǎng)站入口
二. 請(qǐng)求抓包流程
-
打開F12刨摩,清空所有請(qǐng)求
這一步?jīng)]啥好說的寺晌,直接跳過。
-
點(diǎn)擊“滑動(dòng)拼圖驗(yàn)證”
當(dāng)我們點(diǎn)擊完澡刹,跳出來一個(gè)load請(qǐng)求呻征,無論是從請(qǐng)求名稱還是技術(shù)敏感性,都可以猜出來這是一個(gè)加載滑塊的請(qǐng)求罢浇。
-
點(diǎn)擊“點(diǎn)擊按鈕開始驗(yàn)證”
這一步也沒啥好說的陆赋,直接跳過边篮。
-
拖動(dòng)滑塊
當(dāng)我們拖動(dòng)完之后,跳出來一個(gè)verify請(qǐng)求奏甫,還是那句話戈轿,無論是從請(qǐng)求名稱還是技術(shù)敏感性,都可以猜出來這是一個(gè)驗(yàn)證滑塊的請(qǐng)求阵子。
- 多次重復(fù)上述步驟
注意記錄每次load思杯、verify請(qǐng)求的參數(shù)以及響應(yīng)
可以得到下面結(jié)論
- load請(qǐng)求參數(shù)中的captcha_id、client_type挠进、risk_type色乾、lang不變
- verify請(qǐng)求參數(shù)中的captcha_id、client_type领突、risk_type暖璧、pt不變
- verify請(qǐng)求參數(shù)中的lot_number來自load請(qǐng)求的響應(yīng)中的lot_number
- load、verify請(qǐng)求中的callback為“geetest_”加上13位的時(shí)間戳君旦,也就是毫秒級(jí)
- load澎办、verify請(qǐng)求參數(shù)中的challenge應(yīng)該是算法生成的
- verify請(qǐng)求參數(shù)中的w應(yīng)該是算法生成的
三. 破解load、verify請(qǐng)求的challenge參數(shù)
- 直接search中搜索challenge金砍,命中7條局蚀,我們來看下
第1、2條太長直接略過
第3條有個(gè)冒號(hào)恕稠,應(yīng)該是給字典中的challenge賦值
第4琅绅、5條是個(gè)判斷,也略過
第6鹅巍、7條有個(gè)冒號(hào)千扶,也是給字典中的challenge賦值
但考慮到第六條有個(gè)uuid()操作,我們直接看第六條 -
直接打斷點(diǎn)骆捧,成功斷上
可以看到旁邊的堆棧中config中并沒有challenge澎羞,所以challenge的值一定是由函數(shù)uuid()生成的,我們來看下uuid()函數(shù)的定義
var uuid = function () {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0;
var v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
};
-
接下來就是構(gòu)造load請(qǐng)求了凑懂,各位看官煤痕,動(dòng)手實(shí)踐下吧
四. 結(jié)語
看到這里,會(huì)發(fā)現(xiàn)我們verify的w參數(shù)還沒有破解接谨,所以我們下一篇文章會(huì)去對(duì)w的明文以及密文做一些研究
入微