SQL注入便是指web應用程序對用戶輸入數據的合法性沒有判斷或過濾不嚴,攻擊者能夠在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,在管理員不知情的狀況下實現非法操做,以此來實現欺騙數據庫服務器執行非受權的任意查詢,從而進一步獲得相應的數據信息。講人話就是你在前端的操做影響到後端的數據了。前端
sql注入條件
必需要有參數web
sql注入類型
整體來是分爲數字型以及字符型
字符型裏又有報錯 布爾 搜索型等等
字符型是須要閉合才能執行咱們想要執行的語句
字符型爲何須要閉合呢?
咱們來看看數字型以及字符型的源碼sql
$query="select username,email from member where id=$id"; $query="select id,email from member where username='$name'";
能夠發現字符型參數裏面多了一對單引號,若是不進行閉合是執行不了咱們想要執行的語句因此咱們須要加個單引號或者其餘符號進行閉合,在執行咱們想要的語句而且經過註釋符完成。數據庫
sql注入之聯合注入
使用到Union這個函數,但有條件字段數須要和數據庫裏面的字段數同樣,不然會出錯。這也是爲何進行爆庫等操做前須要用到order by猜字段數的原理。
下面看看實例
輸入單引號報錯後端
'and '1'='1(正常)
'and '1'='2(報錯)
確認爲字符型
order by猜字段
當order by =3時出現錯誤說明只有2個字段
看一下回顯位!
1,2都有服務器
' union select 1,group_concat(table_name) from information_schema.tables where table_schema='pikachu'#
獲得表名以後爆列名(這裏省略)函數
最後爆出帳號密碼學習
密碼md5解一下就行spa
明天覆習一下常見的報錯函數!繼續加油!3d