SQL注入基礎-易錯問題彙總

SQL注入基礎-易錯問題彙總mysql

 

1.sql注入本質是什麼sql

把用戶輸入當作代碼執行數據庫

 

2.sql注入的條件函數

用戶可控輸入和本來程序要執行代碼,拼接用戶輸入且看成SQL語句去執行編碼

 

3.order by的做用及含義spa

order by 用於判斷顯示位,order by 原有的做用是對字段進行一個排序,在sql注入中用order by 來判斷排序,order by 1就是對一個字段進行排序,若是一共四個字段,你order by 5 數據庫不知道怎麼排序,因而乎就錯誤了無返回值orm

 

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.

相關文章
相關標籤/搜索