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


#堆疊查詢注入

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#
成功繞過:

 

 

 


免責聲明!

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



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