爲何你什麼都沒幹,但QQ空間中卻發了不少小廣告?也許你的QQ帳號已經被盜。本文將講解一個QQ的快速登陸的原理。html
而利用這個原理最終能夠實現,只要你點擊一個頁面或運行過一個程序,那麼我就能夠擁有你的登陸權限。能夠直接進你郵箱,進你微雲,進你QQ空間等....web
看懂本篇須要一點點web安全的基礎,請移步個人上篇編程
http://www.cnblogs.com/1996V/p/7458377.html瀏覽器
騰訊QQ有一個快速登陸的功能,意思就是當你點開網頁的時候,他能自動效驗你是否登陸了QQ。安全
那麼騰訊是怎樣實現的呢?服務器
騰訊是經過NPAPI和 ActiveX 來實現的。cookie
(網景插件應用程序編程接口(NPAPI, Netscape Plugin Application Programming Interface)是Netscape Navigator、Mozilla Suite、Mozilla SeaMonkey和Mozilla Firefox等Gecko引擎瀏覽器與Apple Safari和Google Chrome等webkit引擎瀏覽器所使用的相似ActiveX的插件接口。app
ActiveX 是一個開放的集成平臺,爲開發人員、 用戶和 Web生產商提供了一個快速而簡便的在 Internet 和 Intranet 建立程序集成和內容的方法。 使用 ActiveX, 可輕鬆方便的在 Web頁中插入 多媒體效果、 交互式對象、以及複雜程序,建立用戶體驗至關的高質量多媒體CD-ROM 。)工具
由於IE從5.5版本後中止支持 NPAPI,因此, 騰訊對 IE瀏覽器 採用 ActiveX 插件,對除IE瀏覽器等其它主流瀏覽器採用NPAPI的形式來實現快速登陸。web安全
每當你運行該頁面的時候,他會判斷你瀏覽器支持不支持ActiveX,而後再進行相關操做,代碼我就不放出來了,有興趣的你們可自行百度瞭解。
固然,若是用ActiveX呢,你的瀏覽器又得下載插件,若是用NPAPI呢部分瀏覽器還要審覈插件,而且伴隨着時代的發展,NPAPI和ActiveX 已經顯得老態龍鍾,因此,騰訊想了個新花招來實現快速登陸。
原來,QQ在本地開了一些端口(4300),作了個httpd,能夠把這個東西理解成web服務器,相似於IIS Express
httpd是是Apache超文本傳輸協議(HTTP)服務器的主程序。被設計爲一個獨立運行的後臺進程,它會創建一個處理請求的子進程或線程的池。
下面,咱們開始着眼於實現。
將使用到一款工具:Fiddler。
咱們隨便打開一個QQ域下的網站,好比www.qq.com,咱們打開Fiddler進行監測。
發現:
在ui.ptlogin2.qq.com的Host下,會產生一個key爲 pt_local_token的 cookie, 如圖所示,尾號爲562。
而後咱們點擊右上角登陸,
繼而會彈出一個快速登陸的框
他是怎麼監測到我登陸的有QQ號呢?
好,咱們接着用Fiddler來監測,咱們發現,當點擊右上角登陸的時候,會觸發一個接口。
這個接口的地址是:https://localhost.ptlogin2.qq.com:4300/pt_get_uins?callback=ptui_getuins_CB&r=0.9417236381383591&pt_local_tk=0.1111111111111562
咱們能夠發現 ,這個接口的 pt_local_tk參數就是 以前的pt_local_token,尾號562,恰好吻合。
這個接口返回了一串 關於當前QQ的信息:
var var_sso_uin_list=[{"account":"137780739","client_type":65793,"face_index":486,"gender":1,"nickname":"看客 er","uin":"137780739","uin_flag":323486274}];ptui_getuins_CB(var_sso_uin_list);
還發現,還會請求一個接口,ptlogin2.qq.com/getface?appid=636014201&imgtype=3&encrytype=0&devtype=0&keytpye=0&uin=137780739&r=0.9433088515882535
這個接口會返回當前QQ的頭像地址:
這樣一來,頁面上就顯示了咱們的頭像 網名等信息了。
再而後咱們在快速登陸框中點擊, 登陸按鈕。
會調用:localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=137780739&callback=ptui_getst_CB&r=0.2443934530496683&pt_local_tk=0.11111111111111562
這個接口的做用是,服務器設置給瀏覽器Cookie,
再而後,又會調用接口:/jump?clientuin=137780739&keyindex=9&pt_aid=636014201&u1=http://www.qq.com/qq2012/loginSuccess.htm&pt_local_tk=0.11111111111111562&pt_3rd_aid=0&ptopt=1&style=40
將帶入以前的Cookie而後進入這個接口,最終返回的仍然是註冊Cookie,
而此次的Cookie,就是你登陸所須要的Cookie。
這些Cookie就至關於令牌,有了這個令牌就能夠擁有快速登陸的權限,就至關於你登陸通常的網站,帳號密碼進去,後臺會給瀏覽器註冊一條Token來作狀態驗證同樣。
也就是說,拿到了Cookie,你就能夠經過CSRF(跨站假裝)的形式,來搞好多事情。
能夠在網站上放一個頁面,裏面跑http請求,或者搞個窗體,裏面也跑http請求。
只要你電腦上登陸了QQ,只要你打開了這個頁面或者打開了這個窗體,那麼你的帳號就已經被入侵!
不須要輸入帳號密碼,能夠直接拿着QQ空間發表留言的接口直接調用,能夠直接爬蟲抓相冊圖片,能夠進微雲等等等等。
最後,再告訴你們一個很是好的接口。
http://localhost.ptlogin2.qq.com:4300/mc_get_uins
Host: localhost.ptlogin2.qq.com:4300
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Get便可
返回:
做者:小曾
出處:http://www.cnblogs.com/1996V/p/7481823.html 歡迎轉載,但任何轉載必須保留完整文章,在顯要地方顯示署名以及原文連接。如您有任何疑問或者受權方面的協商,請給我留言
.Net交流羣, QQ羣:166843154 慾望與掙扎