sql注入基礎-易錯問題彙總
1.sql注入本質是什麼
把使用者輸入當做**執行
2.sql注入的條件
使用者可控輸入和原本程式要執行**,拼接使用者輸入且當作sql語句去執行
3.order by的作用及含義
order by 用於判斷顯示位,order by 原有的作用是對字段進行乙個排序,在sql注入中用order by 來判斷排序,order by 1就是對乙個字段進行排序,如果一共四個字段,你order by 5 資料庫不知道怎麼排序,於是乎就錯誤了無返回值
4.union select如何發揮作用
union為聯合查詢,a聯合b進行了查詢,為查詢了前面的sql語句(原有的)後再進行後面的sq查詢(我們新增的),但兩張表聯合查詢的字段數必須相同。
5.輸出位是什麼
sql查詢出來的資料不一定全部會輸出,頁面上只會輸出幾個欄位的資訊,那幾個會輸出的字段就是輸出位
6.information_schema是什麼
information_schema是mysql的系統自帶表,用於查詢資料,在mysql5.0以上版本中存在
7.加單引號和加 and 1=2有什麼區別
有區別,單引號是為了閉合語句,而and 1=2是為了讓union前面的語句無查詢結果無輸出,然後直接輸出拼接進去union後面的那個語句的查詢結果
8.and 是什麼意思
and 為和的意思,乙個語句中,當前乙個正確,後乙個錯誤時,如果是and連線整個語句返回是false
9.or是什麼意思
or 為和的意思,乙個語句中,當前乙個正確,後乙個錯誤時,如果是or連線整個語句返回是true
10.and 和 or 選擇使用有什麼講究?
and 語句執行時,如果and 前的語句返回false,那麼and後面的語句根本不執行
11.除了單引號外還有其他的符號可以閉合嗎?
實際上還是要看原始碼,常見的是單引號和雙引號還有括號
12.limit的作用
limit 在注入中用於排序然後輸出,limit a,b a代表了從哪個位置(從0開始) b代表從那位開始顯示幾條資料
13.可以查訊多個字段內容嗎
可以,可以使用語句group_concat()函式進行輸出
14.%23有什麼作用
%23編碼為#,用於注釋後面的語句,防止sql注入點後原本的sql語句對sql注入進行干擾
15.報錯注入的原理
利用sql注入拼接sql語句,將報錯資訊輸出時同時將我們想要的資訊輸出
16.閉合是什麼
在sql查詢中,**比較嚴謹,括號和引號都得成雙成對,引號內的預設是字串不會當作sql語句執行,所以必須閉合然後才能注入,當然有些sql語句直接拼接,也就不用什麼閉合了
17.sql注入有資料庫限制嗎?
沒有,常見的資料庫都可以
18.sql注入有動態指令碼語言限制嗎?
沒有限制
19.sql注入如果沒系統自帶表怎麼辦
那就慘了,只能通過猜,不斷的嘗試,一般而言資料庫的表也不會亂起名字,畢竟是團隊協作的東西
20.系統自帶庫管理員不會修改嗎?
一般而言並不會
21.union all 和 union 區別
如果輸出的資料有相同的,union只會輸出一次,而union all都會輸出
22.為什麼用and 1=1正常 and 1=2報錯來判斷是否存在sql注入
因為如果存在sql注入,那麼and就是和的意思,1=1是乙個恒等式,然後因為原本能夠查出資料,那麼兩個真就是true,但是1=2肯定是不可能的,這裡就會返回乙個false,然後因為和必須兩個真才返回true,所以這裡拼接就不成立返回false.
SQL注入 顯錯注入
顯錯注入 步驟1 判斷是否存在注入點 步驟2 猜解字段數 步驟3 聯合查詢找出輸出點 步驟4 去系統自帶庫查詢表名和欄位名 步驟5 查詢我們需要的欄位名 步驟1 判斷是否存在注入點 192.168.1.10 1 id 1 這裡可以用id 1 來確定是否存在注入點,192.168.1.10 1 id ...
sql注入之顯錯注入
1.判斷是否存在注入點 在正常輸入後面新增and 1 1 檢視是否正常回顯。如果一切正常說明該處存在注入點。是資料庫查詢的結束標誌。id 1 and 1 1 這裡的?id 1 使用單引號閉合查詢語句。不同的查詢寫法使用響應的閉合方式 2.猜解字段數。每乙個資料庫查詢語句的結果都是乙個 使用order...
SQL 小白易錯點
alter場景 1 建好表後增加外來鍵約束 alter table 表名 addforeign key 欄位名 references 表名 欄位名 2 新增字段 alter table 表名 add 列名 資料格式update場景 update 表名 set 欄位名 更新後的值,可以公式表達 whe...