• Access手工注入


    access手工注入

    哈哈哈哈,,,我顾北清又回来啦,接着更新。
    实验环境:win2008R2虚拟机,物理机(也就是我的win10)。
    搭建环境用的是access+asp源码。

    环境搭建可以参照这里,不同的是在第六步勾选应用程序开发选项。
    环境搞完之后大概是这个样子的:

    接着来手工注入一下。
    首先判断有没有注入点,随便点进一个页面:


    %20是空格的转码。
    and 1=1没有出错,再来试试and 1=2

    出错了,说明它将这条语句带入查询了,说明存在注入点。

    1.联合查询法
    先判断字段长度,使用order by 猜测的长度
    我这里猜测长度是22(因为我事先知道/滑稽脸,所以命令是order by 22


    判断到22的时候是正常的,到23的时候报错了,说明,字段长度是22。
    然后来猜解表名,使用的命令是:union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin.
    admin是我猜解的表名。

    发现这里爆出一个315,说明315这两个位置存在数据,接着来用猜解的数据替换这两个位置。

    图中的adminpassword是猜解的字段,如果此阿姐正确就会爆出这两个位置的数据,这样就拿到了账号密码。

    2.逐字猜解法
    首先判断是否存在某个表:
    这里使用的命令是and exists ( select * from admin),判断是否存在admin表。

    没有报错,说明存在admin表,接着来判断admin表中的字段,这里使用and exists ( select admin from admin)命令判断在admin表中是否存在admin字段。

    没有报错说明存在,接着看看有没有password字段。

    发现也没有报错,说明存在。
    然后判断这两个字段对应数据的长度。
    因为我事先知道对应关系,所里我就直接判断admin的长度是5,password的长度是16。
    使用语句是and (select top 1 len(列名) from admin)=长度值
    可以使用and (select top 1 len(列名) from admin)>长度值来缩小范围。


    这样我就判断出了数据的长度,然后根据数据长度反推数据。
    使用的命令是and (select top 1 asc(mid(列名,第几位,1)) from admin)=长度值,这里的长度值是ASCII码。

    我使用的命令是and (select top 1 asc(mid(admin,1,1)) from admin)=97
    可以看到没有报错,这里97对应的是a,而我的admin列里的数据是admin,刚好对应,如果换成98,那么就会报错。
    以此类推,猜解出数据。

  • 相关阅读:
    第十三周课程总结
    第十二周课程总结
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告(六)
    第七周课程总结&实验报告(五)
    第六周课程总结&实验报告(四)
    第五周课程总结&试验报告(三)
    课程总结
  • 原文地址:https://www.cnblogs.com/Timesi/p/9435693.html
Copyright © 2020-2023  润新知