差點忘了一點,在sql注入的時候,php與asp有所不同,mysql對sql語句的運用沒有mssql靈活,因此,很多在mssql上可以用的查詢語句在mysql數據庫中都不能奏效了. 一般我們常見的注入語句像這樣:aaa.php?id=a' into outfile 'pass.txt或是aaa.php?id=a' into outfile 'pass.txt' /*再進一步可以改成:aaa.php?id=a' or 1=1 union select id,name,password form users into outfile 'c:/a.txt 這樣可以將數據庫數據導出為文件,然后可以查看. 或是這樣:mode=',user_level='4 這個語句一般用在修改資料時,假設頁面存在漏洞的話,就可以達到提升權限的做用. 其它的如' or 1=1 -- 或者:1' or 1='1則跟asp差不多.這里不多講了.在php里面,sql注入看來還是漏洞之首啊,有太多的頁面存在這個問題了.
首先,我個人認為最重要的一點是將magic_quotes_gpc高為on,它的作用是將單引號,雙引號,反斜線,和空字符轉換為含有反斜線的字符,如select * from admin where username='$username' and password='$password'語句,攻擊者想用1' or 1='1跳過驗證,但是,那些字符串將被轉換成這樣:select * from admin where username='a' and password='1/' or 1=/'1'從而達到阻止注入的目的,事實也就是自動進行了addslashes()操作.再不行的話,自己定義函數處理吧.現在看來,那些搞php注入的人也比較郁悶,因為myslq4以下版本不支持子語句,而新版本的mysql又會將magic_quotes_gpc選項默認為開.