之前两篇文章所说的SQL注入手段均是在服务器层面是root权限,而现实的渗透测试过程中,很多都是无权读取information_schema库,并且很多拒绝联合访问Union和order by语句。遇到这些问题时候,就需要我们去爆破猜测一些数据库字开发逻辑,对一些列,表,内容进行猜测



 



  • 猜测某个列



sql server 给字段名加上前缀 sql字段名称_数据库


猜测abc这个列是否存在,网页提示:


sql server 给字段名加上前缀 sql字段名称_字段_02


说明我们所使用的猜测sql语句可以用,剩下的即为猜测过程


很多集成化工具中都有猜测某列的字典文件


在kali中利用find /-name*column*.txt进行查询


sql server 给字段名加上前缀 sql字段名称_数据库_03


但是在字典文件中有#开头的行


sql server 给字段名加上前缀 sql字段名称_服务器_04


我们需要将警号开头的行去除调,并保存到一个新的字典文件


sql server 给字段名加上前缀 sql字段名称_sql server 给字段名加上前缀_05


回到burp里面,将我们要测试的列名称变量进行选取


sql server 给字段名加上前缀 sql字段名称_表名_06


将刚刚生产的文件加载进来


sql server 给字段名加上前缀 sql字段名称_服务器_07


pis:将这里去掉


sql server 给字段名加上前缀 sql字段名称_字段_08


接着点击菜单栏Intruder进行爆破,根据观察列的长度,从而判断4643长度的列是服务器存在


sql server 给字段名加上前缀 sql字段名称_字段_09


 


 


  • 猜测表名

如果我们以及猜出列,基于列名我们可以猜测其表名,'and table.user is null--+ 这里的user列是我们已猜测出来的,table则是我们猜测的表名

sql server 给字段名加上前缀 sql字段名称_sql server 给字段名加上前缀_10


测试完之后显示没有找到table.user这个表名,但是说明table这个字段是可以进行爆破


sql server 给字段名加上前缀 sql字段名称_服务器_11


#号处理:cat /usr/share/golismero/tools/sqlmap/txt/common-tables.txt | grep -v ^# >table.txt


然后对table字段进行爆破


sql server 给字段名加上前缀 sql字段名称_sql server 给字段名加上前缀_12


 


基于这个原则逐级对数据库进行爆破


 


还有一种猜测其他表名称的方法


' and (select count(*) from abc)>0--+


sql server 给字段名加上前缀 sql字段名称_字段_13


同样用Burp爆破方法进行猜测表名


 


 


 


  • 猜测表中的字段:


sql server 给字段名加上前缀 sql字段名称_服务器_14


or表示一真则真,这里注意引号闭合即可


 


还有一种方式,可以进行模糊查询


sql server 给字段名加上前缀 sql字段名称_sql server 给字段名加上前缀_15


%号表示模糊查询,用%将要查询的字段包含起来,like语句进行查询


 


 


  • 猜测密码:

思路:已经猜测出来账号,可以进而猜测密码,猜测密码时候可以通过密码的MD5值进行猜测,擦测语句:


' or user='admin' and password= ' MD5


用or表示一真则真,说明后面的user和password都要为真,所以user和password连接部分必须为and