#堆疊查詢注入
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#
成功繞過: