我發現自己在我工作的公司爲安全審計員寫了一個測試;通過這樣做,我發現了一個我仍然無法解決的CTF挑戰。PHP/MySQL/hash:與安全相關的類型比較CTF challenge
如果想出來,最好讓你們看看你的想法。
的聯繫是https://2013.picoctf.com/problems/php3/
測試的描述說,要注意怎樣的MD5函數時,專門設置爲true的最後一個參數。
的片段上寫着:
$pass = md5($_POST[pass], True);
$query = @mysql_fetch_array(mysql_query("select user from php3 where (user='$user') and (pw='$pass')"));
而且md5()
與真正在最後表示MD5將返回原表示,而不是字符串表示:
如果可選raw_output設置爲TRUE ,則md5摘要是 ,而不是以原始二進制格式返回,長度爲16.
考慮到這一點,你有什麼想法通過這個測試的過程是什麼?
我想這事做與做MySQL將一個字符串比較的二進制表示,即類似於Why md5('240610708') is equal to md5('QNKCDZO')?和相關的http://dev.mysql.com/doc/refman/5.7/en/type-conversion.html
mysql> SELECT '18015376320243458' = 18015376320243458;
-> 1
mysql> SELECT '18015376320243459' = 18015376320243459;
-> 0
描述的浮動比較的東西你能幫助我理解這個挑戰?
不使用'mysql_'函數他們已被棄用 – Blueblazer172
[Little Bobby](http://bobby-tables.com/)說*** [您的腳本存在SQL注入攻擊風險。](http: //stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)***。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! *** SQL注入!*** *這不僅僅是用於早餐!* –
***您不應該使用[SHA1密碼哈希](https://konklone.com/post/why-google-is-匆匆的網絡殺人沙1)***或*** [MD5密碼哈希](http://security.stackexchange.com/questions/19906/is-md5-considered-insecure)* **,你真的應該使用PHP的[內置函數](http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。在散列之前,請確保你[不要越過密碼](http://stackoverflow.com/q/36628418/1011527)或使用其他任何清理機制。這樣做*更改密碼並導致不必要的附加編碼。 –