手工注入——access手工注入实战和分析

前言

今天进行了access手工注入,下面是我的实战过程和总结。

实战环境使用的是墨者学院的在线靶场。下面咱们直接进入主题。

判断注入点

通过‘ 或者 and 1=1 和 and 1=2 是否报错,如下图。

接下来咱们输入 and 1=2 发现报错了,说明存在注入点。如下图。

猜数据库表名

在access数据库中,打开里面直接就是表,所以我们只能猜表名,通过这条语句 and exists (select * from 表名)常见的一些表名为 admins users administrator,adminadminsadmin_useradmin_usradmin_msgadmin_loginuserusernamemanagermsg_usermsg_loginuseradmin等。通过猜测,我们查到 存在admin这个表,这里用到的原理是,如果存在正常显示,不存在就报错,如下图。

猜测表里有几个字段

通过order by 语句,小于输出的数字正常显示,大于输出的数字报错。我们猜出为四个字段。如下图。

 

猜测字段

通过这条语句 and exists (select 字段 from admin)常见的字段有 username password pass passwd user_name 等

如果对方的数据库字段较多,咱们又猜不出来,并且有回显位置,可以尝试偏移注入。这里通过直接猜测就猜出来了,如下图。

 

 

根据图片的内容我们,我们猜测出的两个字段为,username ,passwd ,根据字段名字我们就知道里面存放的为账号和密码。

联合查询爆出账号和密码

通过这条语句 union select 1,2,3,4 from admin 我们知道了,2,3,这两个位置回显到页面上,这就是我们需要的。如下图。

 

接下来,我们把之前查找出来的 字段 替换到2,3 两个位置,语句为 union select 1,username,passwd,4 from admin 结果为下图,爆出了账号密码。

 

手工注入总结

1、 先判断有没有注入点

2、 参数后面加 and exists(select*from admin) 猜表名  返回正常页面表示存在(admin)

3、 参数后面加 and exists(select username from admin)猜(admin)表中是否存在列名(username) 返回正常页面表示存在

4、 参数后面加 and exists(select passwd from admin)猜(admin)表中是否存在列名(passwd) 返回正常页面表示存在

5、 判断字段数 参数后面加 order by 4 (判断字段数为4)

6、 判断回显  参数后面加 union select 1,2,3,4 from admin

7、 爆出列名的信息 参数后面加 union select 1,username,passwd,4 from admin

8、获取到账号密码,手工注入结束。

posted @ 2020-04-06 17:26  小艾搞安全  阅读(1306)  评论(0编辑  收藏  举报