PHP中md5()函數繞過


PHP md5()函數的簡單繞過方法,該篇作為學習筆記簡單記錄一下。
 
例題
 
 
主要代碼段:
1     $password=$_POST['password'];
2     $sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";
3     $result=mysqli_query($link,$sql);
4         if(mysqli_num_rows($result)>0){
5             echo 'flag is :'.$flag;
6         }
7         else{
8             echo '密碼錯誤!';
9         }

 


 
PHP md5()函數
 
 
md5() 函數計算字符串的 MD5 散列。
md5() 函數使用 RSA 數據安全,包括 MD5 報文摘要算法。
來自 RFC 1321 的解釋 - MD5 報文摘要算法:MD5 報文摘要算法將任意長度的信息作為輸入值,並將其換算成一個 128 位長度的"指紋信息"或"報文摘要"值來代表這個輸入值,並以換算后的值作為結果。MD5 算法主要是為數字簽名應用程序而設計的;在這個數字簽名應用程序中,較大的文件將在加密(這里的加密過程是通過在一個密碼系統下[如:RSA]的公開密鑰下設置私有密鑰而完成的)之前以一種安全的方式進行壓縮。
如需計算文件的 MD5 散列,請使用 md5_file() 函數。
 
語法:md5(string,raw)
string:所需加密的字符串
raw:可選參數TRUE或FALSE。FALSE(默認,32字符十六進制數);TRUE(原始16字符二進制格式
 

 
繞過方法
 
利用md5()函數加密后的字符串達到sql注入效果,破壞sql語句結構。
 
常用字符串:ffifdyop
 
在上述例題中,輸入ffifdyop后,sql語句結構變為:
 
SELECT * FROM admin WHERE pass = ''or'6<trash>'
 
從而達到繞過md5()函數的效果
 
至此該簡單的學習筆記結束。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM