2020 10 17sql注入學習(1)

2021-10-24 21:40:29 字數 1512 閱讀 1212

今天正式開始好好從頭學習了,思來想去還是從sql注入開始吧。其實,作為一名網路空間安全的學生。以前也學過一些安全漏洞。但是卻一直沒有理解到道理是什麼。就比如說,為什麼我們可以從客戶端輸入一些東西來獲取資料庫中的資料,甚至是對資料庫造成重大影響。接下來,我會按照我學習的方式,講解sql注入。

其實,使用者本身並不和資料庫直接互動,所以看起來似乎使用者對資料庫沒什麼威脅。sql注入攻擊的罪魁禍首就是web伺服器,它為使用者資料傳入資料庫提供了通道。如果這條通道沒有正確搭建,那麼惡意使用者就可以通過這條通道攻擊資料庫。

要想學習sql注入的一些手段,首先要學習一些sql的基礎知識。

在mysql中,一般使用show databases命令可以列出mysql中的所有的資料庫。還可以使用create database命令來建立資料庫。(sql命令不區分大小寫)

乙個關聯式資料庫通過表來組織它的資料,乙個資料庫可以有多個表。並且通過create table命令來建立表create table employee(...)表的列資訊定義在表名稱之後的圓括號內。

select語句用於從資料庫中獲取資訊select *from employee該命令返回employee表中的所有的記錄,包括所有的列資訊(星號表示所有列)也可以這樣select name, eid, salary, from emplpyee表示只返回表中的name,eid,和salary列。

剛剛講了select語句,但是,我們發現select語句是沒有條件限制的,那麼我們要有條件的獲取資訊就要用到where子句。它也可以和select,update,delete等語句搭配使用。例如select * from employee where eid='eid5200'表示的就是返回eid為eid5200的一條資訊。where後面的謂詞可以有多個並且用or和and隔開。如果where後的條件總是ture那麼sql語句會作用於所有記錄。例如,如果用1=1作為where子句中的謂詞,那麼查詢會返回所有的記錄。

update語句用來更改資料庫中已有的記錄。例如update employee set salary=8200 where name='zjg'表示的就是在employee表中將name為zjg對應的那條資訊中的salary改為8200

mysql支援三種注釋方式:

(1)以#字元開始,直到行尾的文字均視為注釋。

(2)以–字元開始,直到行尾均視為注釋(該方式要求第二個短橫線後面跟隨至少乙個空格或控制符)

(3)與c語言類似/* 和 */之間的文字視為注釋。

瀏覽器從使用者獲取輸入,然後通過http請求與web伺服器互動。使用者的輸入附加在http請求中。根據請求型別為get還是post,資料附加在http請求中的方式有所不同。在get請求中,引數被附加在url的問號(?)之後,符號(&)用來分隔多個引數。如果將http協議換成https協議,除了通訊通道被加密以外,引數傳送的方式是一樣的。

SQL注入學習

通常情況下,可能存在 sql 注入漏洞的 url 是類似這種形式 對 sql 注入的判斷,主要有兩個方面 可能存在 sql 注入攻擊的 asp php jsp 動態網頁中,乙個動態網頁中可能只有乙個引數,有時可能有多個引數。有時是整型引數,有時是字串型引數,不能一概而論。總之只要是帶有引數的 動態網...

SQL注入學習

2018 02 03 grant 授權語句 revoke 取消許可權 get 方式url的後面可以跟上?query語句 post方式可以上傳檔案或表單 cookie 需要關注的注入點 構造語句 admin or 1 1 回顯 使用union聯合語句 正常可執行 不正常會報錯 不回顯的叫盲注 whal...

關於SQL注入學習

知道sql injection 但是平時懶的去做這方面的東西,以後一定還得注意 net的專案看來要用儲存過程和分層方式來寫了 sql injection 講解 方法 網上蒐集 1.帶引數的的儲存過程來完成使用者驗證的過程 2.使用者通過 提交過來的變數引數進行檢查的 發現客戶端提交的引數中有 exe...