淺入淺出SQL注入

2021-07-03 13:49:33 字數 1218 閱讀 1137

在搜尋框中輸入娛樂新聞')deletecategory where id=3--出現了如下所示狀況。

可以看到,資料庫中增加了乙個娛樂新聞,但是同時id=3的那條記錄從資料庫中消失了,這是為什麼呢?

看一下插入語句是怎麼寫的,

insertinto category(name) values('nfdsa'),剛才在搜尋框中輸入的那些相當於兩個單引號中的內容,把輸入的內容放入這條插入語句中,結果變成了

insert into category(name) values('

娛樂新聞

')delete category where id=3--'),因為使用的是拼接字串,相當於寫了兩天完整的sql語句,分別是insert into category(name) values('

娛樂新聞

')和delete category where id=3,兩個--相當於注釋,注釋後面的內容是忽略的。

因為sql語句是通過拼接字串實現的,那麼就可以在拼接字串裡面做手腳。上面的那個例子就是人為的把拼接字串補全,然後再刪除一條記錄。

那如何知道表的名字是category呢?方法很多。比如:

先猜表名

and (select count(*) from 表名)<>0

猜列名and (select count(列名) from 表名)<>0

或者也可以這樣

and exists (select * from 表名)

and exists (select 列名 from 表名)

返回正確的,那麼寫的表名或列名就是正確

當然,還有很多的方法。

那麼如何避免sql注入呢,插入的時候不要直接使用構造的sql語句了。通過sql引數的方法可以在一定程度上避免這一問題。

淺入淺出SQL注入

已經開始了學習牛腩新聞發布系統,在講後台 的時候講了一些重構sqlhelper 的知識,儲存過程和觸發器等,這些以前都是接觸過的。而 sql 注入是以前沒有注意過的,所以停下來總結學習一下 sql 注入。首先什麼是 sql 注入呢?實戰篇 sql 注入概念 所謂sql注入,就是通過把sql命令插入到...

XGBoost淺入淺出

xgboost風靡kaggle 天池 datacastle kesci等國內外資料競賽平台,是比賽奪冠的必備大殺器。我在之前參加過的一些比賽中,著實領略了其威力,也取得不少好成績。如果把資料競賽比作金庸筆下的武林,那麼xgboost可謂屠龍刀,號令天下,莫敢不從!倚天不出,誰與爭鋒?xgboost工...

XGBoost淺入淺出

xgboost風靡kaggle 天池 datacastle kesci等國內外資料競賽平台,是比賽奪冠的必備大殺器。我在之前參加過的一些比賽中,著實領略了其威力,也取得不少好成績。如果把資料競賽比作金庸筆下的武林,那麼xgboost可謂屠龍刀,號令天下,莫敢不從!倚天不出,誰與爭鋒?xgboost工...