sql注入之堆疊注入及waf繞過注入

朝朝_暮暮發表於2021-08-03

#堆疊查詢注入

1.堆疊查詢概念

stacked injections(堆疊查詢注入)從名詞的含義就可以看出一應該是一堆(多條)sql語句一起執行。而在真實運用中也是如此,我們知道在mysql中,主要是命令列中,每一條語句後面加“;”表示為語句的結束。這樣我們就能想到是不是可以多句一起執行。而在不同額資料庫中,堆疊的知識體系不同。堆疊注入只產生在一小部分資料庫中。

在遇到我們知道管理員的賬號和密碼,密碼是加密的,且無法解密;此時我們就可以使用堆疊注入進行插入資料,使用者密碼自定義的,可以插入一個使用者,再用插入的使用者進行登入操作。

2.堆疊注入靶場演示

sqlilabs第38關

檢視原始碼:

發現有函式:mysqli_multi_query()

此函式的作用是:執行一個或多個針對資料庫的查詢,查詢語句使用分號隔開。

由此我們可以考慮使用堆疊注入。

構造payload:

http://xx.xx.xx.xx/sql-labs/Less-38/?id=1';insert into users(id,username,password)values(21,'Bob','2021')--+

再查詢id=21,發現已經注入成功

 #sql注入之waf繞過

1.基本方法

 基本方法如下思維導圖

 

 2.靶機演示

伺服器上開啟安全狗,sqlilabs第2關進行演示

and 1=1 ,被攔截

 以post形式進行提交,不被攔截,但接收不到值。

 檢視原始碼,是GET請,使用post傳入資料無法執行。

 將其修改為REQUEST方式

構造payload:

http://xx.xx.xx.xx/sqli-labs/Less-2/?id=-1 union select 1,2,database() --+

被攔截:

原因是安全狗有攔截sql的union注入,或查詢資料庫相關資訊等。

 我們進行引數汙染:

payload:

http://xx.xx.xx.xx/sqli-labs/Less-2/?id=1 /**&id=-1%20union%20select%201,2,3%23*/
?id=1 /**&id=-1%20union%20select%201,2,3%23*/等價於id=-1 union select 1,2,3#
成功繞過:

 

 

 

相關文章