最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

sql注入之新手入門(mén)示例詳解

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

前言

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

認(rèn)識(shí)SQL注入

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

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

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

那么SQL語(yǔ)句的寫(xiě)法為:

select username,password from table where id=input

判斷存在SQL語(yǔ)句

接下來(lái)進(jìn)行做測(cè)試,使用以下的語(yǔ)句進(jìn)行測(cè)試:

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

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

確定存在SQL語(yǔ)句

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

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

當(dāng)URl是以上的SQL語(yǔ)句時(shí),頁(yè)面上顯示SQL執(zhí)行錯(cuò)誤信息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)鍵的錯(cuò)誤信息是:

''3'' LIMIT 0,1'

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

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

SQL注入驗(yàn)證

在確定存在了SQL注入之后,同時(shí)知道了后臺(tái)SQL寫(xiě)法,那么此時(shí)我們就可以注入自己的SQL注入的代碼。

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

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

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

#閉合單引號(hào)
id=1 and '1' = '1 # 
#注釋單引號(hào)
id=1 and 1=1 # 或者 id=1 and 1=1--+

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

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

執(zhí)行SQL注入

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

注入類(lèi)型判斷

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

字符型SQL注入

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

數(shù)字型SQl注入

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

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

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

SQL語(yǔ)句判斷

但是很多時(shí)候我們通過(guò)單引號(hào)的方式并不能返回sql執(zhí)行語(yǔ)句的錯(cuò)誤信息,就無(wú)法通過(guò)錯(cuò)誤信息得到注入類(lèi)型。因?yàn)楹芏鄷r(shí)候在后臺(tái)的SQL語(yǔ)句會(huì)有各種千奇百怪的寫(xiě)法。

在less-3和less-4中的寫(xiě)法就是如下:

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

在less-3中使用了括號(hào)來(lái)包裹用戶(hù)的輸入

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

在less-4中使用了雙引號(hào)來(lái)包裹用戶(hù)的輸入,那么當(dāng)你即使加上了單引號(hào)進(jìn)行測(cè)試的時(shí)候還是無(wú)法出發(fā)SQL語(yǔ)句執(zhí)行錯(cuò)誤。

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

總結(jié)

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

相關(guān)文章

  • 解決navicat遠(yuǎn)程連接mysql報(bào)錯(cuò)10038的問(wèn)題

    解決navicat遠(yuǎn)程連接mysql報(bào)錯(cuò)10038的問(wèn)題

    這篇文章主要介紹了解決navicat遠(yuǎn)程連接mysql報(bào)錯(cuò)10038的問(wèn)題,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 主鍵與聚集索引

    主鍵與聚集索引

    表通常具有包含唯一標(biāo)識(shí)表中每一行的值的一列或一組列。這樣的一列或多列稱(chēng)為表的主鍵 (PK),用于強(qiáng)制表的實(shí)體完整性。在創(chuàng)建或修改表時(shí),您可以通過(guò)定義 PRIMARY KEY 約束來(lái)創(chuàng)建主鍵。
    2009-07-07
  • IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫(kù)并行更新問(wèn)題詳解

    IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫(kù)并行更新問(wèn)題詳解

    這篇文章主要為大家介紹了IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫(kù)并行更新問(wèn)題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Spark SQL操作JSON字段的小技巧

    Spark SQL操作JSON字段的小技巧

    這篇文章主要給大家介紹了關(guān)于Spark SQL操作JSON字段的小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spark sql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • sql語(yǔ)句中where和having的區(qū)別

    sql語(yǔ)句中where和having的區(qū)別

    HAVING是先分組再篩選記錄,WHERE在聚合前先篩選記錄.也就是說(shuō)作用在GROUP BY 子句和HAVING子句前;而 HAVING子句在聚合后對(duì)組記錄進(jìn)行篩選
    2013-06-06
  • 數(shù)據(jù)分析數(shù)據(jù)庫(kù)ClickHouse在大數(shù)據(jù)領(lǐng)域應(yīng)用實(shí)踐

    數(shù)據(jù)分析數(shù)據(jù)庫(kù)ClickHouse在大數(shù)據(jù)領(lǐng)域應(yīng)用實(shí)踐

    這篇文章主要為大家介紹了數(shù)據(jù)分析數(shù)據(jù)庫(kù)ClickHouse在大數(shù)據(jù)領(lǐng)域應(yīng)用實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • 動(dòng)態(tài)SQL在梧桐數(shù)據(jù)庫(kù)的使用方法及適應(yīng)場(chǎng)景

    動(dòng)態(tài)SQL在梧桐數(shù)據(jù)庫(kù)的使用方法及適應(yīng)場(chǎng)景

    這篇文章主要介紹了動(dòng)態(tài)SQL在梧桐數(shù)據(jù)庫(kù)的使用方法及適應(yīng)場(chǎng)景,通過(guò)簡(jiǎn)單的例子展示了如何在梧桐數(shù)據(jù)庫(kù)中使用動(dòng)態(tài)SQL,動(dòng)態(tài)SQL可以靈活處理不同量的輸入?yún)?shù),提升查詢(xún)效率,但也會(huì)增加代碼調(diào)試的難度,適用場(chǎng)景包括處理不確定的參數(shù)、通過(guò)輸入生成其他參數(shù)以及在for循環(huán)中使用
    2024-11-11
  • JetBrains DataGrip安裝和使用的詳細(xì)教程

    JetBrains DataGrip安裝和使用的詳細(xì)教程

    日常開(kāi)發(fā)中少不了各種可視化數(shù)據(jù)庫(kù)管理工具。本文介紹另一個(gè)十分好用且強(qiáng)大的工具:DataGrip。具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-09-09
  • 詳解Navicat Premium 15 無(wú)限試用腳本的方法

    詳解Navicat Premium 15 無(wú)限試用腳本的方法

    這篇文章主要介紹了Navicat Premium 15 無(wú)限試用腳本的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-11-11
  • sql注入之手工注入示例詳解

    sql注入之手工注入示例詳解

    之前和大家分享了基本的SQL注入的知識(shí),這一篇講的就是在得知注入點(diǎn)的之后,如何有效地進(jìn)行脫褲。文章通過(guò)示例介紹的很詳細(xì),對(duì)大家的理解和學(xué)習(xí)很有幫助,下面來(lái)一起看看吧。
    2016-09-09

最新評(píng)論

日土县| 永宁县| 乌恰县| 邯郸市| 图片| 岚皋县| 肥乡县| 白朗县| 天祝| 安宁市| 政和县| 陇西县| 苏尼特左旗| 乌苏市| 蒙阴县| 康定县| 唐海县| 双辽市| 鄂托克前旗| 苗栗市| 双城市| 定陶县| 德格县| 毕节市| 武威市| 绥中县| 阳曲县| 开原市| 乌兰浩特市| 红原县| 华坪县| 泸西县| 商丘市| 石城县| 宁武县| 长乐市| 突泉县| 玛纳斯县| 金秀| 华坪县| 罗源县|