zoukankan      html  css  js  c++  java
  • 一个sql盲注小工具 (Golang版)

    并发,二分法判断。

    源码写的有点垃圾,有点乱,结果也存在一些缺失。

    记录:

    sql:select distinct 中的distinct选项,这是只会获取你表中不重复数据,是表中,而不是你一次sql执行的结果显示中,原来一直记成一次执行结果中。

    golang:

    因为是并发,所以哪一位的字符先跑完是不能确定的,所以使用结构体,然后在对结构体排序,需要自定义排序规则。https://blog.csdn.net/qq_17308321/article/details/94998236

    思路大概就是先判断长度,根据长度来开启多少个协程。对于表,就是先判断表的数目,开启多少个协程,在协程里面开启子协程,子协程也是先判断长度,在每一个字符开启一个协程。

    对于循环导包的问题,直接copy了一份,重命名了一个包。

    注入测试代码:

    <?php
    $dbms='mysql';
    $host='localhost';
    $dbName='mysql';
    $user='root';
    $pass='root';
    $dsn="$dbms:host=$host;dbname=$dbName";
    try {
         $pdo = new PDO($dsn, $user, $pass);
    } catch (PDOException $e) {
         echo $e;
    }
    $id = $_GET['id']?:0;
    $sql = "select * from user where max_questions={$id}";
    $stmt = $pdo->query($sql);
    if($row=$stmt->fetch(PDO::FETCH_ASSOC)) {
        sleep(sleeptime());
        echo '1正确';
    } else {
        sleep(sleeptime());
        echo '0';
    }
    
    function sleeptime(){
        $time = ['0.5'=>'','1'=>'','1.5'=>'','2'=>'','2.5'=>''];
        return array_rand($time,1);    
    }
    View Code

    使用的mysql数据库,随机延误0.5-2.5秒。(如果不延迟的话差不多7秒跑完)

    测试效果如图:

    数据存在丢失,而且有些会超时,主要为了练手。

    源码及exe:

    链接: https://pan.baidu.com/s/13uYzA9CX8p_bx32pp_vZTw 提取码: a57a

  • 相关阅读:
    js函数与DOM
    js流程控制语句与数组
    js基础语法与表达式
    CSS
    注解使用IDEA的Filter注解模板
    JSP小结
    JSP的九大内置对象
    Mac上Sublime常用快捷键
    git cherry-pick: failed to refresh the index
    c++11之后类中定义常量的最好方法
  • 原文地址:https://www.cnblogs.com/xiaozhiru/p/13071591.html
Copyright © 2011-2022 走看看