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

詳細(xì)聊聊關(guān)于sql注入的一些零散知識(shí)點(diǎn)

 更新時(shí)間:2021年10月17日 11:15:30   作者:劃水的小白白  
SQL注入攻擊是通過(guò)將惡意的SQL查詢(xún)或添加語(yǔ)句插入到應(yīng)用的輸入?yún)?shù)中,再在后臺(tái)SQL服務(wù)器上解析執(zhí)行進(jìn)行的攻擊,它目前是黑客對(duì)數(shù)據(jù)庫(kù)進(jìn)行攻擊的最常用的手段之一,這篇文章主要給大家介紹了關(guān)于sql注入的一些零散知識(shí)點(diǎn),需要的朋友可以參考下

零、本文涉及知識(shí)點(diǎn)

sqlmap寫(xiě)一句馬的具體過(guò)程

堆疊注入

union injection(聯(lián)合注入)

常見(jiàn)的注入繞過(guò)姿勢(shì)

sql注入預(yù)編譯與常見(jiàn)繞過(guò)姿勢(shì)

一、sqlmap寫(xiě)一句馬的過(guò)程(-- os-shell)

1.1 簡(jiǎn)述過(guò)程

先寫(xiě)一個(gè)文件上傳的文件,名字為“ tmpujhum.php ”。

然后通過(guò)這個(gè)文件上傳的木馬,將shell(tmpbcluy.php)上傳,

執(zhí)行命令的木馬名字為“ tmpbcluy.php ”

具體過(guò)程可以參考: https://xz.aliyun.com/t/7942

1.2 一個(gè)小問(wèn)題

都可以直接通過(guò)命令寫(xiě)文件了,為什么還要先寫(xiě)一個(gè)上傳文件的木馬,在通過(guò)這個(gè)木馬上傳一句馬?

*答:**

sqlmap官方這么寫(xiě)得代碼,所在按照這個(gè)流程,開(kāi)玩笑~~

主要原因是大多數(shù)waf的對(duì)命令直接寫(xiě)文件的監(jiān)控比上傳木馬的監(jiān)控嚴(yán)格。

即通過(guò)這種“多此一舉”的思路,可以提高上傳成功一句馬的概率

二、堆疊注入:

2.1 什么是堆疊注入

在SQL中,分號(hào)(;)是用來(lái)表示一條sql語(yǔ)句的結(jié)束。

試想一下我們?cè)?; 結(jié)束一個(gè)sql語(yǔ)句后繼續(xù)構(gòu)造下一條語(yǔ)句,會(huì)不會(huì)一起執(zhí)行?

因此這個(gè)想法也就造就了堆疊注入。

2.2 如何判斷存在堆疊注入?

~“ id=1 ”正常

~試試“ id=1a ”,假設(shè)報(bào)錯(cuò),說(shuō)明數(shù)據(jù)沒(méi)有被強(qiáng)轉(zhuǎn)

~在試試“ id=1; ”假設(shè)沒(méi)有報(bào)錯(cuò),說(shuō)明“;”沒(méi)有被代入查詢(xún),而是當(dāng)做了sql語(yǔ)句的結(jié)束符

~此時(shí),此位置大概率存在堆疊注入

2.3 局限性

  堆疊注入的局限性在于并不是每一個(gè)環(huán)境下都可以執(zhí)行, 

  可能受到API或者數(shù)據(jù)庫(kù)引擎不支持的限制, 

  當(dāng)然了權(quán)限不足也可以解釋為什么攻擊者無(wú)法修改數(shù)據(jù)或者調(diào)用一些程序。

三、union injection(聯(lián)合注入)

3.1 原理

絕大多數(shù)的sql注入都是利用的此姿勢(shì),

詳細(xì)不在贅述,可以直接參考之前的文章。

3.2 與堆疊注入的區(qū)別

區(qū)別就在于union 或者union all執(zhí)行的語(yǔ)句類(lèi)型是有限的,僅僅可以用來(lái)執(zhí)行查詢(xún)語(yǔ)句,

而堆疊注入可以執(zhí)行的是任意的語(yǔ)句。

**例如以下這個(gè)例子,即堆疊可以執(zhí)行成功,聯(lián)合注入不能成功**

用戶(hù)輸入:1; DELETE FROM products服務(wù)器端生成的sql語(yǔ)句為:

  Select * from products where productid=1;DELETE FROM products

當(dāng)執(zhí)行查詢(xún)后,第一條顯示查詢(xún)信息,第二條則將整個(gè)表進(jìn)行刪除。

四、常見(jiàn)的sql注入繞過(guò)姿勢(shì)

4.1 Waf特性:

 絕大多數(shù)的waf都是通過(guò)正則匹配過(guò)濾/攔截請(qǐng)求

 一般一個(gè)waf會(huì)同時(shí)上線N個(gè)規(guī)則,這些規(guī)則同時(shí)生效的情況下,僅僅饒過(guò)一個(gè)依舊會(huì)被攔截

4.2 繞waf的核心思路:

 繞過(guò)waf正則匹配規(guī)則的同時(shí),注入的sql語(yǔ)句可以被正常解析執(zhí)行。

4.3 常見(jiàn)的思路

數(shù)據(jù)上:

  大小寫(xiě)           、、很老的waf可以繞過(guò)

  加解密、編碼解碼

  等價(jià)函數(shù)         union select == union all select

  特殊符號(hào)

  反序列化

  注釋符混用       、、mysql特性:   

                   database/**/() == database()  

                   內(nèi)聯(lián)注釋?zhuān)?*一個(gè)sql版本號(hào)sql執(zhí)行內(nèi)容*/,具體不在展開(kāi)      

方式:

 更改提交方式      、、部分waf默認(rèn)僅僅檢測(cè)get(但是假設(shè)后端不接收post也沒(méi)什么卵用);

 變異

其他:

  FUZZ        

    、、模糊測(cè)試,使用腳本/工具生成大量payload,直接爆破waf,看看哪些語(yǔ)句可以過(guò)waf  

  數(shù)據(jù)庫(kù)特性

    、、mysql特性:

      union%23a%0Aselect 1,2,3#

    == union#a(換號(hào))select 1,2,3#  

    == union select 1,2,3#

        、、mysql特性:

       /*!select * from users*/ 會(huì)正常執(zhí)行

  垃圾數(shù)據(jù)溢出

  HTTP參數(shù)污染   

      、、多個(gè)參數(shù)的情況下,一般默認(rèn)取最后一個(gè)  

                、、?id=1/**&id=-1%20union%20select%201,2,3%23*/  

                   即“ 1/**-1 union select 1,2,3#*/ ”

                在mysql之中“ /** 內(nèi)容不會(huì)執(zhí)行  */ ”所以WAF認(rèn)為是安全的,

    但是因?yàn)锳pache的特性,

                      其最終接收的參數(shù)為:“ -1 union select 1,2,3#*/ ”

  靜態(tài)資源        

      、、即本來(lái)為php?id=1   改為  php/a.txt(b.js等)?id=1  

       結(jié)果不受影響,但是可以過(guò)一些老waf

用注釋配合參數(shù)污染繞waf的成功率是比較高的     

使用sqlmap注意,

~UA自帶的要改一下,參數(shù)就可以改,可以改為百度等搜索引擎的UA

~可以設(shè)置繞waf腳本來(lái)提高成功率,而且腳本寫(xiě)也挺簡(jiǎn)單

~自己測(cè)試的時(shí)候,可以用參數(shù)將sqlmap的流量代理到burp,然后對(duì)比自己正常瀏覽器的流量,看看區(qū)別

~必要的時(shí)刻,連接代理池直接暴力配合開(kāi)干

五、Sql注入預(yù)編譯與常見(jiàn)繞過(guò)姿勢(shì)

5.1 概述

預(yù)編譯一般在Java的框架中使用,在提高sql語(yǔ)句效率的同時(shí)也可以攔截掉很多注入的情況,

但是仍可以被繞過(guò)的,

5.2 具體方式

5.2.1 ASC/DESC

應(yīng)用場(chǎng)景:

當(dāng)應(yīng)用顯示多條數(shù)據(jù)時(shí),通??梢赃x擇正向排序或者逆向排序,此時(shí)就會(huì)用到 ASC/DESC

ASC/DESC 是SQL語(yǔ)句中影響語(yǔ)義的關(guān)鍵字,是不能用單引號(hào)引起來(lái)的

假設(shè)ASC/DESC是接收的前端傳入,即存在被注入的風(fēng)險(xiǎn)。

如何處理:

比較安全的方式是使用白名單,排序方式也只有兩種,可使用簡(jiǎn)單的條件判斷語(yǔ)句

<?php
 if($_POST['order'] === 'DESC'){
        $order = 'DESC';
    }else{
        $order = 'ASC'
    }

5.2.2 表名/字段名

應(yīng)用場(chǎng)景:

表名與列名是不能被預(yù)編譯的,這是由于在預(yù)編譯生成語(yǔ)法樹(shù)的過(guò)程中,

預(yù)處理器在檢查解析后的語(yǔ)法樹(shù)時(shí),會(huì)確定數(shù)據(jù)表和數(shù)據(jù)列是否存在,

此兩者必須為具體值,不能被占位符 ? 所替代

假設(shè)表名/字段名是接收的前端傳參,即存在被注入的風(fēng)險(xiǎn)

如何處理:

參考下邊order by的情況

5.2.3 order by

order by 用來(lái)指定某個(gè)字段作為排序依據(jù),前面也解釋了字段名不能使用預(yù)編譯

假設(shè)order by后邊的字段是接收的前端傳參,即存在被注入的風(fēng)險(xiǎn)

具體的一些繞過(guò)方法可以搜索“ case when ”

如何處理:

為了避免直接拼接SQL語(yǔ)句,可以將列名定義為常量,

再通過(guò)白名單的方式進(jìn)行拼接,能夠有效防止SQL注入

當(dāng)然,這里也可以單獨(dú)對(duì)傳入的語(yǔ)句配合正則匹配過(guò)濾,但是效果不如這種方式簡(jiǎn)潔有效。

前端表單:

  <form action="" method="post">
      <select name="order">
          <option value="0">id</option>
          <option value="1">name</option>
          <option value="2">age</option>
      </select>
      <input type="submit" name="submit">
  </form>

白名單函數(shù):

  <?php
      $i = $_POST['order'];
   switch($i){
          case 0:
              $order = "id";
              break;
          case 1:
              $order = "name";
              break;
          default:
              $order = "age";
              break;
      }

5.2.4小結(jié):

假設(shè)ASC/DESC是接收的前端傳入,即存在被注入的風(fēng)險(xiǎn)。

假設(shè)表名/字段名是接收的前端傳參,即存在被注入的風(fēng)險(xiǎn)

假設(shè)order by后邊的字段是接收的前端傳參,即存在被注入的風(fēng)險(xiǎn)

總結(jié)

到此這篇關(guān)于sql注入的一些零散知識(shí)點(diǎn)的文章就介紹到這了,更多相關(guān)sql注入零散知識(shí)點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SQL查詢(xún)連續(xù)號(hào)碼段的巧妙解法

    SQL查詢(xún)連續(xù)號(hào)碼段的巧妙解法

    在ITPUB上有一則非常巧妙的SQL技巧,學(xué)習(xí)一下,記錄在這里
    2013-09-09
  • SQL關(guān)系模型的知識(shí)梳理總結(jié)

    SQL關(guān)系模型的知識(shí)梳理總結(jié)

    這篇文章主要為大家介紹了SQL關(guān)系模型,文中對(duì)SQL關(guān)系模型的知識(shí)作了詳細(xì)的梳理總結(jié),有需要的朋友可以借鑒參考下希望能夠有所幫助
    2021-10-10
  • 常用SQL語(yǔ)句優(yōu)化技巧總結(jié)【經(jīng)典】

    常用SQL語(yǔ)句優(yōu)化技巧總結(jié)【經(jīng)典】

    這篇文章主要介紹了常用SQL語(yǔ)句優(yōu)化技巧,結(jié)合實(shí)例形式對(duì)比分析,總結(jié)了各種常用的SQL優(yōu)化技巧及相關(guān)原理,需要的朋友可以參考下
    2017-04-04
  • 如何在mac中修改環(huán)境變量path

    如何在mac中修改環(huán)境變量path

    這篇文章主要介紹了如何在mac中修改環(huán)境變量path,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 將sqlite3中數(shù)據(jù)導(dǎo)入到mysql中的實(shí)戰(zhàn)教程

    將sqlite3中數(shù)據(jù)導(dǎo)入到mysql中的實(shí)戰(zhàn)教程

    最近因?yàn)楣ぷ鞯男枨?,需要將sqlite3中的數(shù)據(jù)導(dǎo)入到mysql中去,發(fā)現(xiàn)網(wǎng)上的一些教程都不夠詳細(xì),索性自己寫(xiě)一篇,下面這篇文章主要給大家介紹了關(guān)于將sqlite3數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入到mysql數(shù)據(jù)庫(kù)中的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • 常見(jiàn)的SQL優(yōu)化面試專(zhuān)題大全

    常見(jiàn)的SQL優(yōu)化面試專(zhuān)題大全

    面試中如何被問(wèn)到SQL優(yōu)化,看這篇就對(duì)了,下面這篇文章主要給大家介紹了關(guān)于SQL優(yōu)化面試的相關(guān)資料,文中將答案介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • 關(guān)于navicat事務(wù)自動(dòng)提交問(wèn)題

    關(guān)于navicat事務(wù)自動(dòng)提交問(wèn)題

    這篇文章主要介紹了關(guān)于navicat事務(wù)自動(dòng)提交問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 本機(jī)上實(shí)現(xiàn)neo4j遠(yuǎn)程連接方式

    本機(jī)上實(shí)現(xiàn)neo4j遠(yuǎn)程連接方式

    這篇文章主要介紹了本機(jī)上實(shí)現(xiàn)neo4j遠(yuǎn)程連接方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 通過(guò)navicat導(dǎo)入sql文件的操作方法

    通過(guò)navicat導(dǎo)入sql文件的操作方法

    在很多項(xiàng)目當(dāng)中都有sql文件導(dǎo)入到MySQL數(shù)據(jù)庫(kù)的需要,因?yàn)橛衧ql數(shù)據(jù)庫(kù)文件,這個(gè)項(xiàng)目才能正常運(yùn)行起來(lái),那么現(xiàn)在就來(lái)學(xué)習(xí)一下怎么導(dǎo)入sql文件到navicat里面吧,需要的朋友可以參考下
    2024-03-03
  • 使用DataGrip的詳細(xì)教程

    使用DataGrip的詳細(xì)教程

    這篇文章主要介紹了使用DataGrip的步驟詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09

最新評(píng)論