亚洲午夜福利国产门事件_久久国产综合精品五月天_日本高清不卡免v_青青香蕉国产在线观看

返回首頁(yè) 富水河論壇 分類信息 應(yīng)城黃頁(yè) 應(yīng)城人聯(lián)盟 應(yīng)城新聞 應(yīng)城同學(xué)錄 走進(jìn)應(yīng)城 網(wǎng)吧聯(lián)盟 留言本
  |論壇首頁(yè)| |用戶注冊(cè)| |修改資料| |搜索功能| |短信功能| |論壇幫助| |退出系統(tǒng)|
【關(guān)閉本窗口】
發(fā)言人
Deboray
發(fā)信

發(fā)帖:48 回復(fù):488
注冊(cè)時(shí)間:2004-03-20 20:24:30


發(fā)表于2004-10-01 07:23:12 [舉報(bào)本帖] 編輯 樓主
SQL注入天書-ASP注入漏洞全接觸 (進(jìn)階篇)
在入門篇,我們學(xué)會(huì)了SQL注入的判斷方法,但真正要拿到網(wǎng)站的保密內(nèi)容,是遠(yuǎn)遠(yuǎn)不夠的。接下來(lái),我們就繼續(xù)學(xué)習(xí)如何從數(shù)據(jù)庫(kù)中獲取想要獲得的內(nèi)容,首先,我們先看看SQL注入的一般步驟:


第一節(jié)、SQL注入的一般步驟

首先,判斷環(huán)境,尋找注入點(diǎn),判斷數(shù)據(jù)庫(kù)類型,這在入門篇已經(jīng)講過了。

其次,根據(jù)注入?yún)?shù)類型,在腦海中重構(gòu)SQL語(yǔ)句的原貌,按參數(shù)類型主要分為下面三種:

(A)  ID=49 這類注入的參數(shù)是數(shù)字型,SQL語(yǔ)句原貌大致如下:
Select * from 表名 where 字段=49
注入的參數(shù)為ID=49 And [查詢條件],即是生成語(yǔ)句:
Select * from 表名 where 字段=49 And [查詢條件]


(B) Class=連續(xù)劇 這類注入的參數(shù)是字符型,SQL語(yǔ)句原貌大致概如下:
Select * from 表名 where 字段=’連續(xù)劇’ 
注入的參數(shù)為Class=連續(xù)劇’ and [查詢條件] and ‘’=’ ,即是生成語(yǔ)句:
Select * from 表名 where 字段=’連續(xù)劇’ and [查詢條件] and ‘’=’’

(C) 搜索時(shí)沒過濾參數(shù)的,如keyword=關(guān)鍵字,SQL語(yǔ)句原貌大致如下:
Select * from 表名 where 字段like ’%關(guān)鍵字%’ 
注入的參數(shù)為keyword=’ and [查詢條件] and ‘%25’=’, 即是生成語(yǔ)句:
Select * from 表名 where字段like ’%’ and [查詢條件] and ‘%’=’%’



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

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

如果頁(yè)面就與ID=49的相同,說明附加條件成立,即表Admin存在,反之,即不存在(請(qǐng)牢記這種方法)。如此循環(huán),直至猜到表名為止。

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

有人會(huì)說:這里有一些偶然的成分,如果表名起得很復(fù)雜沒規(guī)律的,那根本就沒得玩下去了。說得很對(duì),這世界根本就不存在100%成功的黑客技術(shù),蒼蠅不叮無(wú)縫的蛋,無(wú)論多技術(shù)多高深的黑客,都是因?yàn)閯e人的程序?qū)懙貌粐?yán)密或使用者保密意識(shí)不夠,才有得下手。

有點(diǎn)跑題了,話說回來(lái),對(duì)于SQLServer的庫(kù),還是有辦法讓程序告訴我們表名及字段名的,我們?cè)诟呒?jí)篇中會(huì)做介紹。



       最后,在表名和列名猜解成功后,再使用SQL語(yǔ)句,得出字段的值,下面介紹一種最常用的方法-Ascii逐字解碼法,雖然這種方法速度很慢,但肯定是可行的方法。

我們舉個(gè)例子,已知表Admin中存在username字段,首先,我們?nèi)〉谝粭l記錄,測(cè)試長(zhǎng)度:

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

先說明原理:如果top 1的username長(zhǎng)度大于0,則條件成立;接著就是>1、>2、>3這樣測(cè)試下去,一直到條件不成立為止,比如>7成立,>8不成立,就是len(username)=8

  當(dāng)然沒人會(huì)笨得從0,1,2,3一個(gè)個(gè)測(cè)試,怎么樣才比較快就看各自發(fā)揮了。在得到username的長(zhǎng)度后,用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碼,注意的是英文和數(shù)字的ASCII碼在1-128之間,可以用折半法加速猜解,如果寫成程序測(cè)試,效率會(huì)有極大的提高。



第二節(jié)、SQL注入常用函數(shù)

有SQL語(yǔ)言基礎(chǔ)的人,在SQL注入的時(shí)候成功率比不熟悉的人高很多。我們有必要提高一下自己的SQL水平,特別是一些常用的函數(shù)及命令。

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

作用:返回某字符的ASCII碼



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

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



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

作用:返回字符串從N個(gè)字符起長(zhǎng)度為L(zhǎng)的子字符串,即N到N+L之間的字符串



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

作用:返回?cái)?shù)字的絕對(duì)值(在猜解漢字的時(shí)候會(huì)用到)



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

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



第三節(jié)、中文處理方法

       在注入中碰到中文字符是常有的事,有些人一碰到中文字符就想打退堂鼓了。其實(shí)只要對(duì)中文的編碼有所了解,“中文恐懼癥”很快可以克服。

先說一點(diǎn)常識(shí):

    Access中,中文的ASCII碼可能會(huì)出現(xiàn)負(fù)數(shù),取出該負(fù)數(shù)后用abs()取絕對(duì)值,漢字字符不變。

SQLServer中,中文的ASCII為正數(shù),但由于是UNICODE的雙位編碼,不能用函數(shù)ascii()取得ASCII碼,必須用函數(shù)unicode ()返回unicode值,再用nchar函數(shù)取得對(duì)應(yīng)的中文字符。

    了解了上面的兩點(diǎn)后,是不是覺得中文猜解其實(shí)也跟英文差不多呢?除了使用的函數(shù)要注意、猜解范圍大一點(diǎn)外,方法是沒什么兩樣的。

(進(jìn)階篇完)
入門篇:http://expert.csdn.net/Expert/topic/2971/2971242.xml?temp=.2632868
------------------------------------------------------------------------
說明:使用NBSI-NB聯(lián)盟SQL注入分析器可以檢測(cè)出各種SQL注入漏洞并進(jìn)行解碼,提高猜解效率.
版權(quán):本文是我的原創(chuàng)連載文章,首發(fā)于www.54NB.com,歡迎各網(wǎng)站轉(zhuǎn)載,請(qǐng)務(wù)必保留版權(quán)信息,媒體雜志轉(zhuǎn)載前請(qǐng)先與本人聯(lián)系.


分頁(yè)
 轉(zhuǎn)到:頁(yè)
【關(guān)閉本窗口】
YingCheng.Net 應(yīng)城在線 和你在一起
應(yīng)城在線群號(hào):28770248 QQ:434706902