Skip to content

Latest commit

 

History

History
36 lines (24 loc) · 2.22 KB

File metadata and controls

36 lines (24 loc) · 2.22 KB

首先我想先對不懂什麼是油猴的人說明一下功能。

網頁是由js html css 所操控的,而後兩者都是作為裝飾性的元素存在的(這邊暫且這樣解釋),因此您所做的操作都是由js的程式碼所控制的。因此從簡而言我們只要覆蓋掉原本的js 程式碼,在貼上我們想要他實現的功能就能夠完成目的

程式碼你看不懂沒關係,因為他們都是根據網頁的內碼改過來的。

爲什麼會出現登入驗證碼的錯誤

這邊你可能會有兩個問題

  • 為什麼會出現登入驗證碼錯誤的問題
  • 請問可以不要出現這個錯誤

首先北科登入的流程是這樣(其實兩個月前寫的code 有些已經記不請楚了)

  1. 送給你一個需要返回驗證碼的session(你可以把它理解是token,如下表的對應關係。屬性是httpOnly),目的是上資料庫知道你現在所使用的驗證碼是哪一組的
session 驗證碼 圖片
dhjajbjsaehrj(類似亂碼) ggit (這邊就不放圖片了)
反正就是這樣的對應關係
  1. 你輸入的驗證碼,並且把session也一併回傳回去

  2. 如果你的驗證碼與session所對應的驗證碼一模一樣,那麼就是通過測試

  3. 如果你不通過的話還會再登入一次,此時神奇的就來了,這時再一次用封包的方式就可以成功登入(因為原本的session已經失效了),可能因為後端程式的寫法導致有此漏洞

以上就是整個登入的原理,若你看不懂的話。 我建議你把上面的專有名詞都查一遍,並且用burpsuite或wireshark抓一遍封包流看看。

你可能會好奇說,我能一開始就不要回傳session嗎?這樣就可以不會出現『驗證碼錯誤』的問題了

很可惜這個在瀏覽器上面做不到(至少以我目前的功力來說),由於他是httpOnly的屬性,代表瀏覽器已經將它鎖死了,所以我們並不能去更改他。

不過你會問說,那麼我不用瀏覽器的方式登入,而使用純封包的方式溝通行嗎?當然可以,但這樣的方式有點麻煩,我懶

最後給大家看一張sesion cookie的照片 圖:4個cookie (username是我自己加入的, 在此並沒有任何作用)