0X01
?id=1' and 1=1%23 正確
?id=1' and 1=2%23 錯誤
存在注入
0x1 堆疊注入講解
(1)前言
國內有的稱為堆查詢注入,也有稱之為堆疊注入。個人認為稱之為堆疊注入更為准確。堆疊注入為攻擊者提供了很多的攻擊手段,通過添加一個新 的查詢或者終止查詢,可以達到修改數據和調用存儲過程的目的。這種技術在SQL注入中還是比較頻繁的。
(2)原理介紹
在SQL中,分號(;)是用來表示一條sql語句的結束。試想一下我們在 ; 結束一個sql語句后繼續構造下一條語句,會不會一起執行?因此這個想法也就造就了堆疊注入。而union injection(聯合注入)也是將兩條語句合並在一起,兩者之間有什么區別么?區別就在於union 或者union all執行的語句類型是有限的,可以用來執行查詢語句,而堆疊注入可以執行的是任意的語句
例子:
select * from student whereid=1;create table test; 當執行查詢后,第一條顯示查詢信息,第二條則創建一個test表。
0x2 msyql數據庫實例介紹
(1)查詢數據的同時再新建一個表
select * from users where id =2;create table zhong like student; 這里加入like是復制student的表結構
(2)查詢數據的同時再刪除zhong表
0x3簡單小結
這樣一來我們可以利用堆疊注入進行增刪改查等操作,但對於各個數據庫(mysql,sqlserver,oracle)等,除oracle不允許外,其他操作可行性同樣,(具體其他實例可以參考:https://www.cnblogs.com/0nth3way/articles/7128189.html)
0x4開始注入
id=-1' union select 1,database(),3;insert into users values(18,'zhong','zhong')%23