標籤:多次 http 注入 group 部分 mysq ase ror bsp
首先看下常見的攻擊載荷,如下:
select count(*),(floor(rand(0)*2))x from table by x;
然後對於攻擊載荷進行解釋,
floor(rand(0)*2) 查詢表中內容大於等於3條會報錯。一部分原因,因為floor(rand(0)*2)是有規律和固定的。
如果不理解,可以用資料庫做下實驗。select floor(rand(0)*2) from table ,資料量最好10條左右。你會發現一串0110110011……有規律的數字。
再然後select count(*) from table group by x,這句話再MYSQL中執行,會建立虛擬表,虛擬表用來統計。
例如:表中有a欄位12條,語句會逐一在虛擬表中累加計數,統計結束後返回。
最後看下select count(*) from table group by floor(rand(0)*2),查詢過程。
由於floor(rand(0)*2)是有規律的(011011001110....),語句會多次執行,虛擬碼如下:
1、select count(*) from table group by 0
2、select count(*) from table group by 1
3、select count(*) from table group by 1
4、select count(*) from table group by 0
5、select count(*) from table group by 1
......
第一次為0跳過,第二次為值為1計數1,第三次值為1計數2,第四為0跳過,第五次值為1,新插入資料(因為第四次是0),由於新插入資料主鍵索引值與之前的主鍵索引值相同所以報錯。
具體攻擊載荷,請見https://www.waitalone.cn/mysql-error-based-injection.html
學習筆記 MYSQL報錯注入(count()、rand()、group by)