欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

sql注入之新手入門示例詳解

 更新時間:2016年09月25日 09:38:18   投稿:daisy  
這篇文章僅僅是對SQL注入進(jìn)行了一個簡單的入門知識的講解,是sql注入的基礎(chǔ)篇,有個好的開頭能夠幫助大家對SQL注入有一個具體清晰的了解和認(rèn)識。下面來一起看看吧,有需要的可以參考借鑒。

前言

在學(xué)習(xí)這篇文章之前,至于要學(xué)習(xí)了SQL注入的前提知識,可以參考之前寫的一篇sql注入之必備的基礎(chǔ)知識

認(rèn)識SQL注入

最開始就從最簡單的開始,進(jìn)入到less-1開始我們的SQL注入學(xué)習(xí)之旅。

通過改變http://localhost/sqlilabs/Less-1/?id=3的id值,頁面上呈現(xiàn)不同的內(nèi)容(username,password)。

那么我們就可以猜測在后臺中的SQL語句就是根據(jù)前臺傳入的id值來去對應(yīng)的數(shù)據(jù)。

那么SQL語句的寫法為:

select username,password from table where id=input

判斷存在SQL語句

接下來進(jìn)行做測試,使用以下的語句進(jìn)行測試:

http://localhost/sqlilabs/Less-1/?id=3 and 1=1
http://localhost/sqlilabs/Less-1/?id=3 and 1=2

這個時候頁面沒有任何的變化,這是不和符合我們預(yù)期的結(jié)果,因?yàn)楫?dāng)id=3 and 1=2時,SQL語句變?yōu)?code>select username,password from table where id=3 and 1=2頁面應(yīng)該不會有內(nèi)容。

確定存在SQL語句

使用了之前的語句不行之后,我們使用如下的語句:

http://localhost/sqlilabs/Less-1/?id=3'

當(dāng)URl是以上的SQL語句時,頁面上顯示SQL執(zhí)行錯誤信息You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''3'' LIMIT 0,1' at line 1

其中最關(guān)鍵的錯誤信息是:

''3'' LIMIT 0,1'

最外層的引號是mysql出錯時自動加上的。那么實(shí)際的SQL語句是 '3'' LIMIT 0,1。我們發(fā)現(xiàn)在我們輸入的3'被引號包圍了,那么我們之前猜測的select username,password from table where id=input有誤,實(shí)際的后臺的SQL語句應(yīng)該為:

select username,password from table where id='input'

SQL注入驗(yàn)證

在確定存在了SQL注入之后,同時知道了后臺SQL寫法,那么此時我們就可以注入自己的SQL注入的代碼。

由于我們可以控制id的值,那么最終輸入的SQL語句會變?yōu)椋?/p>

select username,password from table where id='input 攻擊代碼'

此時我們就可以構(gòu)造如下的payload來驗(yàn)證我們的想法。由于我們的輸入是被一對單引號包裹的,所以我們輸入的語句必須要能夠不被單引號影響。要么閉合單引號,要么注釋掉單引號。(可以參考前面的文章)

#閉合單引號
id=1 and '1' = '1 # 
#注釋單引號
id=1 and 1=1 # 或者 id=1 and 1=1--+

當(dāng)我們使用上面的這3個payload之后,頁面顯示的結(jié)果是符合預(yù)期的。那么我們也可以確定id參數(shù)確實(shí)是存在SQL注入的。后臺的SQL語句的寫法也的確是select username,password from table where id='input'。

在確定了SQL語句之后,接下里就是注入SQL注入代碼了。

執(zhí)行SQL注入

使用SQL語句來進(jìn)行脫褲,這一點(diǎn)是十分關(guān)鍵的。如果僅僅是知道存在SQL注入但是無法脫褲,那么實(shí)際上這個漏洞對于該網(wǎng)站的危害性還是很小的。如何構(gòu)造正確的SQL語句進(jìn)行脫褲,這一點(diǎn)也是十分重要的,在下一篇文章中將會詳細(xì)地講解SQL注入的詳細(xì)的步驟。

注入類型判斷

在本題中的SQL語句就稱之為字符型的SQL注入,因?yàn)槲覀兊妮斎朐赟QL語句執(zhí)行的過程中被單引號所包括,其實(shí)在SQL語句執(zhí)行中,這個id參數(shù)被當(dāng)做是一個字符類型的數(shù)據(jù)。除了有字符型的SQL注入,當(dāng)然還有數(shù)字型的SQL語句。那么如何區(qū)分這兩者呢?

字符型SQL注入

在確定存在SQL語句這節(jié)中,當(dāng)我們輸入id=3'是頁面的出錯信息是 '3'' LIMIT 0,1。我們發(fā)現(xiàn)3'被引號所包圍,那么說明這個就是一個字符型的SQL注入了。

數(shù)字型SQl注入

在less-2中,當(dāng)我們同樣輸入id=3'時,頁面的出錯信息是 ' LIMIT 0,1,那么就說明是一個數(shù)字型的注入了同時還存在limit關(guān)鍵字,那么我們猜測less-2中的SQL注入為:

select username,password from table where id=input limit 0,1

以上都可以通過查看源代碼的方式來進(jìn)行驗(yàn)證。

SQL語句判斷

但是很多時候我們通過單引號的方式并不能返回sql執(zhí)行語句的錯誤信息,就無法通過錯誤信息得到注入類型。因?yàn)楹芏鄷r候在后臺的SQL語句會有各種千奇百怪的寫法。

在less-3和less-4中的寫法就是如下:

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1"

在less-3中使用了括號來包裹用戶的輸入

$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";

在less-4中使用了雙引號來包裹用戶的輸入,那么當(dāng)你即使加上了單引號進(jìn)行測試的時候還是無法出發(fā)SQL語句執(zhí)行錯誤。

所以說很多時候僅僅使用單一的符號進(jìn)行判斷是完全不夠的,要多使用不同類型的符號來進(jìn)行測試的判斷,使用包括',",\,(,=,&等等字符,甚至有時候還要使用其他的探查方法,因?yàn)槟銦o法判斷后臺的SQL語句的寫法,而且目前很多的網(wǎng)站開發(fā)人員已經(jīng)有了一定的安全意識,可能常規(guī)的SQL探查語句也無法使用。關(guān)于其他跟多SQL注入的探查語句,網(wǎng)上有很多的資料。

總結(jié)

SQL注入的判斷沒有萬能方法,只有不斷的進(jìn)行嘗試,當(dāng)你有了一定的經(jīng)驗(yàn)之后,就會對注入類型有了自覺,同時對于SQL注入的判斷也會更快。以上就是這篇文章的全部內(nèi)容了,如果要對實(shí)際的網(wǎng)絡(luò)中的網(wǎng)站進(jìn)行安全測試,以上的知識是遠(yuǎn)遠(yuǎn)不夠的。小編會繼續(xù)更新更多sql注入的文章,請繼續(xù)關(guān)注腳本之家。

相關(guān)文章

  • SQL中where和having的區(qū)別詳解

    SQL中where和having的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于SQL中where和having區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 介紹PostgreSQL中的jsonb數(shù)據(jù)類型

    介紹PostgreSQL中的jsonb數(shù)據(jù)類型

    這篇文章主要介紹了介紹PostgreSQL中的jsonb數(shù)據(jù)類型,jsonb是PostgreSQL9.4中開始內(nèi)置的類型,能夠支持GIN索引,需要的朋友可以參考下
    2015-04-04
  • 深入解析NoSQL數(shù)據(jù)庫的分布式算法(圖文詳解)

    深入解析NoSQL數(shù)據(jù)庫的分布式算法(圖文詳解)

    這篇文章主要介紹了深入解析NoSQL數(shù)據(jù)庫的分布式算法,需要的朋友可以參考下
    2015-12-12
  • ACCESS轉(zhuǎn)SQLSERVER數(shù)據(jù)庫的注意事項

    ACCESS轉(zhuǎn)SQLSERVER數(shù)據(jù)庫的注意事項

    Access承重量太低,當(dāng)你考慮升級到SQL Server時,并不只是個連接字符串需要改變,需要改變的還有很多
    2007-01-01
  • JDBC 數(shù)據(jù)庫常用連接 鏈接字符串

    JDBC 數(shù)據(jù)庫常用連接 鏈接字符串

    JDBC 數(shù)據(jù)庫常用連接 鏈接字符串,經(jīng)常用各種數(shù)據(jù)庫的朋友可以參考下。
    2009-07-07
  • 使用alwayson后如何收縮數(shù)據(jù)庫日志的方法詳解

    使用alwayson后如何收縮數(shù)據(jù)庫日志的方法詳解

    這篇文章主要介紹了使用alwayson后如何收縮數(shù)據(jù)庫日志,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 一文弄懂?dāng)?shù)據(jù)庫設(shè)計的三范式

    一文弄懂?dāng)?shù)據(jù)庫設(shè)計的三范式

    面試中經(jīng)常會問到的數(shù)據(jù)庫三范式指的是什么,本文主要介紹了數(shù)據(jù)庫設(shè)計的三范式,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • SQL Prompt--絕好的SQL語法提示工具

    SQL Prompt--絕好的SQL語法提示工具

    SQL Prompt--絕好的SQL語法提示工具...
    2007-03-03
  • 一文告訴你Sql的執(zhí)行順序是怎樣的

    一文告訴你Sql的執(zhí)行順序是怎樣的

    這篇文章主要給大家介紹了關(guān)于Sql的執(zhí)行順序是怎樣的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 深入講解SQL中的字符串拼接

    深入講解SQL中的字符串拼接

    這篇文章主要介紹了關(guān)于SQL中字符串拼接的相關(guān)資料,其中包括了數(shù)字 + 字符串、數(shù)字 + 數(shù)字、字符串 + 字符串以及使用CAST和CONVERT函數(shù)進(jìn)行類型轉(zhuǎn)換等,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03

最新評論