MySQL 注射攻擊與防範詳解

PHP+MySQL JSP+MySQL 


一.基礎知識 
1.MYSQL的版本 
4.0如下,4.0以上,5.0以上。 
4.0如下不支持union查詢 
4.0以上magic_quotes_gpc默認爲on 
5.0以上能夠暴表暴列,支持跨庫 
2.magic_quotes_gpc=on 
當php.ini裏的 magic_quotes_gpc 爲On 時。提交的變量中全部的 ' (單引號), " (雙引號), \(反斜線) and 空字符會自動轉爲含有反斜線的轉義字符。例如'會變成\'。給注入帶來很多的阻礙。 
3.註釋符 
Mysql有3種註釋句法 
# 注射掉註釋符後面的本行內容 
-- 注射效果同# 
/* ... */  註釋掉符號中間的部分 
對於#號將是咱們最經常使用的註釋方法。 
-- 號記得後面還得有一個空格才能起註釋做用。 

/*...*/  咱們通常只用前面的/*就夠了。 
注意:在瀏覽器地址欄輸入#時應把它寫成%23,這樣經urlencode轉換後才能成爲#,從而起到註釋的做用。 
注射中經常使用/**/代替空格。 

4.一些函數與MSSQL中的不一樣 
ascii () 
length() 
5.導出文件(into outfile) 
使用  into outfile 把代碼寫到web目錄取得WEBSHELL   
首先須要 3大先天條件 
①知道物理路徑(into outfile '物理路徑') 這樣才能寫對目錄 
②可以使用union (也就是說須要MYSQL4以上的版本) 
③對方沒有對'進行過濾(由於outfile 後面的 '' 不能夠用其餘函數代替轉換) 
後天條件就要2個 
①就是MYSQL 用戶擁有file_priv權限(否則就不能寫文件 或者把文件內容讀出) 
②對web目錄有寫權限MS 的系統就不說了通常都會有權限的~可是*nix 的系統嘛!一般都是rwxr-xr-x 也就是說組跟其餘用戶都沒有權限寫操做 
6.讀取文件(load_file()) 
serv-U默認安裝路徑的servudaemon.ini。注意能夠變化D盤,E盤…… 
讀取數據庫配置文件 
IIS站點配置信息,c:\windows\system32\inetsrv\metabase.xml 
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件 
/usr/local/apache2/conf/httpd.conf 
/usr/local/app/php5/lib/php.ini //PHP相關設置 
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虛擬網站設置 
/etc/my.cnf //mysql的配置文件 
/etc/redhat-release //系統版本 
C:\mysql\data\mysql\user.MYD //us存儲了mysql.er表中的數據庫鏈接密碼 
/etc/sysconfig/iptables //從中獲得防火牆規則策略 

7.絕對路徑 
1.加特殊符號,訪問不存在的連接 
2.讀取服務器配置文件 
3.直接訪問 
phpmyadmin/libraries/select_lang.lib.php 
phpmyadmin/darkblue_orange/layout.inc.php 
phpmyadmin/index.php?lang[]=1 
8.網站OS版本 
變換大小寫。 
9.PHPMyadmin路徑 
在測試uninx系統中phpmyadmin路徑時候能夠在http://127.0.0.1/後面嘗試phpmyadmin的各類大小寫組合。 

10.MySQL,外部鏈接,內部鏈接 
通常是3306.telnet 3306 。低版本外部容許鏈接。鏈接上以後即便magic_quotes_gpc=on也能夠直接into outfile
相關文章
相關標籤/搜索