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
歡迎關注本站公眾號,獲取更多信息