MySQL攻擊次數

2021-10-14 01:12:30 字數 1412 閱讀 2141

簡介

在第一次進行資料庫插入資料的時候,過濾不嚴格,在寫入資料庫的時候還是保留了原來的資料,但是資料本身還是惡意資料。在將資料存入到了資料庫中之後,開發者就認為資料是可信的。在下一次進行需要進行查詢的時候,直接從資料庫中取出了髒資料,沒有進行進一步的檢驗和處理,這樣就會造成sql的二次注入。比如在第一次插入資料的時候,資料中帶有單引號,直接插入到了資料庫中;然後在下一次使用中在拼湊的過程中,就形成了二次注入。

例子

select * from users where username =』$_session[『username』]』

登入/註冊處的sql語句都經過了addslashes函式、單引號閉合的處理,且無編碼產生的問題。

對於上述舉的語句我們可以先註冊乙個名為admin』 # 的使用者名稱,因為在註冊進行了單引號的轉義,故我們並不能直接進行insert注入,最終將我們的使用者名稱儲存在了伺服器中

注意:反斜槓轉義掉了單引號,在mysql中得到的資料並沒有反斜槓的存在

在我們進行登入操作的時候,我們用註冊的admin』 # 登入系統,並將使用者部分資料儲存在對於的session中,

如$_session[『username』]。

上述的$_session[『username』]並沒有經過處理,直接拼接到了sql語句之中,就會造成sql注入,最終的語句為:

select

*from users where username =

'admin'

#'

簡單的說此種注入一般會在有魔術引號的地方比較的多,常用的利用方式是先建立乙個新的使用者,然後更改使用者密碼把管理員的密碼更改掉。

產生原因:

1.建立**的語句限制了長度

2.超過了限制長度,mysql會擷取限制長度的內容進行插入

3.而對於select查詢請求,若查詢的資料超過限制長度,也不會進行擷取操作,這就產生了乙個問題

4.通常對於註冊處的**來說,需要先判斷註冊的使用者名稱是否存在,再進行插入資料操作。

5.如我們註冊乙個username=admin[25個空格]x&password=123456的賬號,伺服器會先查詢admin[25個空格]x的使用者是否存在,若存在,則不能註冊。若不存在,則進行插入資料的操作。

6.而此處我們限制了username與password字段長度最大為25,所以我們實際插入的資料為username=admin[20個空格]&password=123456。

7.接著進行登入的時,我們使用:username=admin&password=123456進行登入,即可成功登入admin的賬號。

python注入攻擊 mySql 注入攻擊

注入攻擊 1.原理 a.只要是帶有引數的動態網頁且此網頁訪問了資料庫,那麼就有可能存在sql注入 b.字串拼接和沒有判斷使用者輸入是否合法 導致使用者可以玩填字遊戲 sql注入攻擊會導致的資料庫安全風險包括 刷庫 拖庫 撞庫。2.簡單解決方法 預防字串拼接 可以使用變數繫結避免注入攻擊.以查詢語句為...

mysql 層次資料 mysql中的層次資料

您希望獲得父id 所以假設你得到了 set parentid 1 toys select from items i inner join categories c on c.id i.categoryid where c.parentid parentid 這將給你想要的專案 乙個主要的設計缺陷 它...

mysql連續打卡次數 mysql 統計連續天數

以下為例子資料 圖1 圖1首先根據要求取出beforemeal要在7.0以下 並且 bingaftermeal要在11.1以下 select accountid,createtime from diabetesrecord where beforemeal 7.0 and aftermeal 11....