草庐IT

Access注入详细笔记

venun7 2023-04-04 原文

ACCESS 注入

01 漏洞产生原理

注入 是针对数据库语句注入(所以识别数据库类型很重要),注入漏洞产生于脚本

注入产生于数据交互的地方

1.网站分类

  • 静态网页

    html或者htm,是一种静态的页面格式,不需要服务器解析其中的脚本。由浏览器如(IE、Chrome等)解析。

    • 不依赖数据库
    • 灵活性差,制作、更新、维护麻烦
    • 交互性较差,在功能方面有较大的限制
    • 安全,不存在SQL注入漏洞
  • 动态网页

    asp、aspx、php、jsp等,由相应的脚本引擎来解释执行,根据指令生成静态网页。

    • 依赖数据库
    • 灵活性好,维护简便
    • 交互性好,功能强大
    • 存在安全风险,可能存在SQL注入漏洞
  • 伪静态

    • 比如index.jsp 地址栏加载成index.html
    • 可以尝试更换后缀为脚本类型后缀,看解析是否正常;观察是否有传参点
    • 如果各种脚本后缀都能正常解析,是做了容错处理,再根据中间件判断;apache/nginx默认搭php,iis的话八成的asp/aspx;系统为linux的九成会搭php/jsp;多方面综合分析
    • 伪静态伪的比较全面的话,是扫不出来什么漏洞的;可以通过爬行链接,如果存在搜索、注册、登录等页面这种存在数据交互的,那肯定就是非静态

2.数据库与脚本类型常见搭配

  • 根据脚本对数据库做基本判断

    • asp + accesss 一般小型的企业网站,规模小,没有太多数据交互;有些会用sqlserver比如学校网站需要大量存储数据
    • aspx + sqlserver
    • php + mysql
    • jsp + mysql /sqlserver /oracle oracle数据库大
  • 常测脚本:jsp > php > aspx >asp

    一般大型的会用到jsp比较多,而且jsp语言相对安全漏洞少,用asp的话漏洞多

3.Access数据库

单库,规模小,不需要搭载服务(其他的需要账号密码登录才能访问数据)

作为独立的文件,可以直接放在源码下

  • 如果要进行拖库

    • 下载网站目录下.mdb文件,然后本地用工具打开就可以(比如数据管理–DatabaseBrowser)
    • 源文件一般存放在data/data.mdb,但是管理员可能对名称进行修改,下载后自己改后缀为mdb
  • 下载的数据库文件被加密

    • 如果能下载网站的源码,源码中会记录调用数据库使用的明文密码
    • 用破解工具(数据管理–Access密码读取)尝试破解出密码

4.漏洞成因

02 ACCESS 手工注入

1.漏洞挖掘

  • access数据库判断

    • exists(select*from msysobjects) #如果这条语句正确,说明是Access数据库
  • 漏洞出现的位置

    • 手工挖掘:有参数传递、与数据库交互、我们可以控制
    • 工具扫描:Awvs、burp、appscan
  • 判断是否有注入点

    • 如果合法语句和非法语句返回页面一样,说明做过防御;如果直接跳转主页或者404则是存在检测,无法注入;否则可能存在
    • 数值型:/ 和 -0
    • 字符型:单引号 ’

2.注入准备语句

  • sqlmap定义的几种注入类型

    • union联合查询、布尔盲注、时间盲注、报错注入、多语句查询、内联注入
    • access只存在前两种,其他的高阶数据库才有
  • 猜解字段长度

    • order by 9 页面返回正常,说明当前注入点字段总数为9
    • union select 1,2,3,4 form [表名](安装hackbar插件,用工具指定字段数就行)
  • 猜解表名\列名

    • and exists(select * from [表名]) and exists (select [列名] from admin)
    • 表名:admin \manager \admin_name \admin_user \user ;admin拼接域名;扫出来的后台目录等等
    • 列名:后台页面查一下网页源码,看源码中表单所用参数
  • 根据猜解的表明和列名,在回显点爆出用户名和密码

  • 布尔盲注逐字猜解

    • 通过判断ascii码来判断(这里用到二分法提高效率)
      and (select top 1 asc(mid(admin,1,1)) from admin)>100 返回正常说明大于,不正常说明不大于
      and (select top 1 asc(mid(admin,1,1)) from admin)>50 返回正常说明大于
      and (select top 1 asc(mid(admin,1,1)) from admin)=97 返回正常说明等于97 97对应的字母为a
    • 以此类推

联合查询和布尔盲注是独立的两种方式,能用联合就用联合效率更快,union被过滤、没有回显点等情况才考虑用布尔盲注

  • 假如爆出的用户密码登录不进后台

    • 查询的表名不对,比如查到admin表,其实后台登录验证的是admin_manager表
    • 后台地址不对,可能存在多个后台
    • 用户名密码错位:如果用户名和密码不是同时爆出来的,比如只有一个回显点,就很可能出现这样的情况,这时候用where语句绑定

03 工具使用

1.burpsuite爆破

  • intruder加载字典跑(不用字典也可以布尔逐字猜),速度默认5个阿里云不会拦截

2.sqlmap

  • –tables 列出表名,假如扫出来了100张表 --columns 爆列名
  • 判断哪个表是管理员表
    • –count 统计每个表的列数,列数较少的可能是管理员表
    • –search -C pass 查询表内是否存在pass列名,同时存在用户和密码列的比较可能是

3.穿山甲

​ 如果没有waf扫access的话,穿山甲好用(漏洞利用–pangolin)

  • 漏洞利用–panggolin,直接把url放进去跑

  • win10用不了,可以放到虚拟机;字典小,可以把sqlmap的字典拿过来用

04 ACCESS偏移注入

用在猜出来表名,但没有猜出列名的时候

  • 这里讲的不是非常清楚,access偏移注入原理

  • 跨库查询

    • 步骤是一样的,只是在表名前面加上另一个站的绝对路径
    • 必须有查询其他站的权限
    • from [D:\wwwroot\1\Databases\xycms.mdb].admin
    • 情景:a网站存在注入,但拿不到数据,同时通过目录遍历查到了其他网站的路径下的mdb

05 拦截绕过

看图识WAF-搜集常见WAF拦截页面

1.通用弹框拦截

方法:变换提交方式,get改为post提交;抓包在cookie处注入也可以

2.安全狗

方法:加入无关参数进行干扰

3.360拦截

方法:%0a代替空格就可以

4.WTS西部数码

方法:+号代替空格,多个%%%%截断关键字

5.其他

%26%26代替and,%截断关键字、大小写、url编码、复写等等组合使用

方法:%0a代替空格就可以

4.WTS西部数码

[外链图片转存中…(img-CNyqItPd-1665394023312)]

方法:+号代替空格,多个%%%%截断关键字

[外链图片转存中…(img-rjxX8Dvh-1665394023313)]

5.其他

%26%26代替and,%截断关键字、大小写、url编码、复写等等组合使用

有关Access注入详细笔记的更多相关文章

  1. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  4. ruby - 这个 ruby​​ 注入(inject)魔术是如何工作的? - 2

    我今天看到了一个ruby​​代码片段。[1,2,3,4,5,6,7].inject(:+)=>28[1,2,3,4,5,6,7].inject(:*)=>5040这里的注入(inject)和之前看到的完全不一样,比如[1,2,3,4,5,6,7].inject{|sum,x|sum+x}请解释一下它是如何工作的? 最佳答案 没有魔法,符号(方法)只是可能的参数之一。这是来自文档:#enum.inject(initial,sym)=>obj#enum.inject(sym)=>obj#enum.inject(initial){|mem

  5. ruby-on-rails - Rails 2.3.5 : How does one access code inside of lib/directory/file. rb? - 2

    我创建了一个文件,这样我就可以在lib/foo/bar_woo.rb中的许多模型之间共享一个方法。在bar_woo.rb中,我定义了以下内容:moduleBarWoodefhelloputs"hello"endend然后在我的模型中我正在做类似的事情:defMyModel解释器提示它期望bar_woo.rb定义Foo::BarWoo。《使用Rails进行敏捷Web开发》一书指出,如果文件包含类或模块,并且文件使用类或模块名称的小写形式命名,那么Rails将自动加载文件。因此我不需要它。定义代码的正确方法是什么,在我的模型中调用代码的正确方法是什么? 最佳答案

  6. ruby - 防止SQL注入(inject)/好的Ruby方法 - 2

    Ruby中防止SQL注入(inject)的好方法是什么? 最佳答案 直接使用ruby?使用准备好的语句:require'mysql'db=Mysql.new('localhost','user','password','database')statement=db.prepare"SELECT*FROMtableWHEREfield=?"statement.execute'value'statement.fetchstatement.close 关于ruby-防止SQL注入(inject

  7. 100个python算法超详细讲解:画直线 - 2

    1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva

  8. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板 - 2

    写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c

  9. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  10. H2数据库配置及相关使用方式一站式介绍(极为详细并整理官方文档) - 2

    目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式

随机推荐